يُمكّن التطبيقات من التوفير النشط لمحتويات الملفات والدلائل عند تلقي طلبات قراءة UDS.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 1ed24b3e3197المصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
يُمكّن التطبيقات من التوفير النشط لمحتويات الملفات والدلائل عند تلقي طلبات قراءة UDS.
تُستخدم الفئة ara::diag::DataTransferReadByPushHandler كواجهة أساسية لعمليات نقل قراءة UDS، حيث يقوم التطبيق بتجميع محتويات الملفات وتوفيرها بنشاط [SWS_DM_01515]. يتم تمرير كتل البيانات بالتتابع عبر Read()، ثم تُختتم جلسة النقل بعد ذلك بصورة منظمة عبر ExitRead()[SWS_DM_01523]. يرتبط كل معالج بجلسة نقل واحدة تحديداً وبشكل صارم، ولهذا السبب تم حظر عمليات النسخ. وبوصفه شرطاً جوهرياً لدورة الحياة، لا يجوز بأي حال من الأحوال تدمير المثيل قبل استدعاء ExitRead()[SWS_DM_01519].
السياق
تعمل الفئة ara::diag::DataTransferReadByPushHandler كفئة أساسية وواجهة لعمليات نقل بيانات التشخيص التي بدأت بطلبات مثل RequestReadFile أو RequestReadDirectory[SWS_DM_01515]. يعتمد نمط النقل الأساسي على مبدأ الدفع (Push): حيث يقوم تنفيذ التطبيق المحدد بتجميع بيانات الملفات أو الدلائل بنشاط وتمريرها إلى Diagnostic Management (DM) AUTOSAR_AP_SWS_Diagnostics §8.10.3 «Class: DataTransferReadByPushHandler». ويتم التفاعل بين عميل UDS الخارجي، ومكون المنصة ara::diag، وتنفيذ المعالج الفعلي للتطبيق.
نظراً لتصميم DataTransferReadByPushHandler كفئة أساسية مجردة، فإن المنشئ الخالي من المعلمات يقع ضمن نطاق رؤية محمي (protected) [SWS_DM_01516]. ويتم إنشاء المثيل في سياق فئة مشتقة داخل التطبيق. ترتبط المثيلات بجلسة نقل ملفات واحدة تحديداً بشكل صارم («one way usage»)؛ ونتيجة لذلك، تم حذف منشئ النسخ [SWS_DM_01518] وكذلك عامل تخصيص النسخ [SWS_DM_01521] صراحةً (=delete). يمكن نقل الملكية عبر عمليات النقل، نظراً لأن منشئ النقل [SWS_DM_01517] وتخصيص النقل [SWS_DM_01520] يتوفران كتنفيذات قياسية وتم التصريح عنهما كآمنين من الاستثناءات (noexcept).
لتدمير المعالج، تحدد المواصفة شرطاً مسبقاً صارماً: لا يجوز بأي حال من الأحوال تدمير مثيل قبل إنهاء الجلسة عبر استدعاء ExitRead()[SWS_DM_01519]، AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.1.2 «Destructor». وفيما يتعلق بالتزامن، تم تحديد الدوال الافتراضية للفئة على أنها غير آمنة خيطياً («not thread-safe») [SWS_DM_01522]، [SWS_DM_01523]، ولهذا السبب يجب مزامنة عمليات الوصول المتزامنة بواسطة المنصة أو تنفيذها بالتتابع.
مسار الاستخدام
ينقسم التسلسل التشغيلي إلى التوفير المتكرر لأجزاء البيانات والإنهاء المنظم للجلسة. بعد بدء عملية القراءة، يستدعي ara::diag الدالة Read() بشكل متكرر [SWS_DM_01522]، AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.2 «Read». وفي هذا السياق، يمرر إطار العمل قيمة إرشادية للحجم الموصى به للإرجاع بالبايت (recommended_number_bytes_to_return) لتحقيق أفضل معدل نقل، بالإضافة إلى سياق الطلب (MetaInfo) وCancellationHandler. يُنشئ التطبيق حزمة البيانات وينقل ملكيتها عبر ara::core::Future<ara::core::Vector<ara::core::Byte>> إلى Diagnostic Management، والتي تدرج البيانات المفيدة بعد عداد تسلسل الكتل في رسالة استجابة UDS [SWS_DM_01522].
بمجرد نقل جميع كتل البيانات أو عند الحاجة إلى إنهاء الجلسة، يستدعي ara::diag الدالة ExitRead()[SWS_DM_01523]، AUTOSAR_AP_SWS_Diagnostics §8.10.3.1.3.1 «ExitRead». بالإضافة إلى سبب الإنهاء (DataTransferExitType exit_type)، يتم تمرير معلمات الطلب الخاصة بالشركة المصنعة عبر transfer_request_parameter_record. يرتبط العمر الافتراضي لهذا الـ Span الخاص بالمعلمات ارتباطاً ملزماً حتى يتم الوفاء بالـ Promise المقابل أو إلغاء المعالجة [SWS_DM_01523]. بعد إرجاع مجموعة معلمات الاستجابة النهائية عبر Future، يُعتبر النقل منتهياً، وبذلك يتحقق شرط التدمير الآمن لكائن المعالج [SWS_DM_01519].
في حال حدوث خطأ أثناء تجميع كتل البيانات أو عند إنهاء الجلسة، يُبلغ عنه بشكل غير متزامن عبر ara::core::Future المعني. وبدلاً من بنية الاستجابة الإيجابية، يتم توفير الـ Future مصحوباً برمز خطأ (ara::core::ErrorCode) من النطاق DiagUdsNrcErrc، والذي يتوافق مع رمز استجابة سلبية مناسب (Negative Response Code, NRC) وفقاً للمعيار ISO 14229-1 [SWS_DM_01522]، [SWS_DM_01523].
إذا انقطع حوار التشخيص أو أرسل العميل طلب إلغاء، يدخل CancellationHandler الممرر حيز التنفيذ. يمكن للتنفيذ الاستعلام عن حالة الإلغاء الحالية عبر cancellation_handler.IsCanceled() أو تسجيل دالة رد نداء عبر cancellation_handler.SetNotifier() يتم إطلاقها عند إلغاء المحادثة [SWS_DM_01522]، [SWS_DM_01523]. ويمثل الوفاء بالـ Promise أو إلغاؤه في الوقت نفسه نهاية صلاحية مجموعة المعلمات في ExitRead()[SWS_DM_01523].
يستند هذا الدليل إلى مواصفة AUTOSAR Adaptive Platform الإصدار R25-11.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: eefe02828ffeالمصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُنهي الطريقة الافتراضية ExitRead جلسة نقل بيانات جارية في سياق معالج التشخيص [SWS_DM_01523]. تعمل الدالة بشكل غير متزامن وتُرجع ara::core::Future يحتوي على بيانات الاستجابة كمتجه بايتات SWS Diagnostics §8.10.3.1.3.1 «ExitRead».
المعلمات وسياق الاستدعاء
exit_type (DataTransferExitType): يحدد سبب إنهاء النقل [SWS_DM_01523].
transfer_request_parameter_record (ara::core::Span<const ara::core::Byte>): يحتوي على مَعلمات خاصة بالشركة المصنعة لدعم نقل البيانات. يجب أن تظل البيانات الأساسية صالحة حتى يتم استيفاء الـ Promise المقترن أو إلغاء المعالجة [SWS_DM_01523].
meta_info (MetaInfo const &): يمرر معلومات وصفية لطلب التشخيص [SWS_DM_01523].
cancellation_handler (CancellationHandler): يُستخدم للتحقق من حالة الإلغاء باستخدام IsCanceled() أو لتسجيل دالة رد نداء (Callback) عبر SetNotifier() في حالة إلغاء الجلسة [SWS_DM_01523].
معالجة الأخطاء وقيم الإرجاع
في حالة النجاح، يوفر Future بيانات الإخراج التي توضع في استجابة UDS الإيجابية بعد SID كـ transferResponseParameterRecord[SWS_DM_01523]. عند الفشل، يتم استكمال Future برمز استجابة سلبية (NRC) مناسب من DiagUdsNrcErrc وفقًا للمعيار ISO 14229-1 [SWS_DM_01523].
التزامن ودورة الحياة
الطريقة محددة بأنها آمنة من الاستثناءات (exception safe)، ولكنها صراحةً غير آمنة مؤشريًا (not thread-safe) [SWS_DM_01523]. فيما يتعلق بدورة حياة الكائن، يوجد شرط ترتيب ملزم: لا يجوز بأي حال من الأحوال تدمير مثيل من DataTransferReadByPushHandler قبل استدعاء ExitRead()[SWS_DM_01519]. تسري متطلبات مماثلة على فئات المعالجات ذات الصلة في نقل البيانات [SWS_DM_01510][SWS_DM_01499].
تم إنشاء هذا النص بواسطة ذكاء اصطناعي بناءً على مواصفة AUTOSAR Adaptive R25-11.
This parameter record contains parameter(s), which are required
parameter_record
by the server to support the transfer of data. Format and length of this parameter(s) are vehicle manufacturer specific. Lifetime: Valid until Promise is fulfilled or the processing is cancelled by the cancellationHandler.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to OperationOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for an negative response message). Data in OperationOutput.response_data will be placed after SID as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
Reads data chunk from the application. The first or subsequent file/directory info content chunk to be sent back to the UDS client will be composed by the application and its ownership is passed as a result to ara::diag.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: fcd7efa833dfالمصدرأسئلة مفتوحة (1)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم الطريقة الافتراضية الصرفة Read للفئة ara::diag::DataTransferReadByPushHandler للقراءة غير المتزامنة لكتل البيانات الخاصة بمعلومات الملف أو الدليل من التطبيق [SWS_DM_01522]. يُجمّع التطبيق قطعة البيانات (Chunk) المعنية وينقل ملكيتها كـ ara::core::Vector<ara::core::Byte> إلى وحدة التشخيص.
الاستخدام وسياق الاستدعاء
يتم الاستدعاء بواسطة Diagnostic Server لتوفير بيانات الاستجابة لعملاء UDS عبر ملف الترويسة ara/diag/data_transfer.h[SWS_DM_01522]. تتوقع الطريقة ثلاث مَعلمات:
recommended_number_bytes_to_return: العدد الموصى به من البايتات لتحقيق إنتاجية مثالية. يُرجح أن تعتمد هذه القيمة على الحجم الداخلي للمخزن المؤقت أو حجم PDU في Diagnostic Management. سؤال Q-1a8c1270b192b96f (مفتوح)
meta_info: معلومات وصفية إضافية لطلب التشخيص الوارد (MetaInfo).
cancellation_handler: يتيح الاستعلام عن حالة الإلغاء عبر cancellation_handler.IsCanceled() أو تسجيل إشعار باستخدام cancellation_handler.SetNotifier() في حال انقطاع الاتصال.
يُستخدم ara::core::Future<ara::core::Vector<ara::core::Byte>> كقيمة معادة. عند المعالجة الناجحة، تُضمَّن البيانات كـ transferResponseParameterRecord خلف عداد التسلسل في رسالة الاستجابة الإيجابية [SWS_DM_01522].
معالجة الأخطاء والتزامن
إذا فشلت المعالجة، يتم استيفاء الـ Future برمز خطأ من DiagUdsNrcErrc يمثل NRC مناسبًا وفقًا للمعيار ISO 14229-1 [SWS_DM_01522]. إذا كانت الواجهة لا تُقدَّم بعد من الخدمة أو لم تعد تُقدَّم باستخدام offer()، يرد Diagnostic Manager على الطلب بـ NRC 0x94 (ResourceTemporarilyNotAvailable) [SWS_DM_01257]. الطريقة محددة بأنها آمنة من الاستثناءات (exception safe)، ولكنها غير آمنة مؤشريًا (not thread-safe) [SWS_DM_01522]، ولهذا السبب يجب مزامنة الاستدعاءات المتزامنة من جانب التطبيق.
تفاعل
يُكمّل مبدأ الدفع (Push) لهذه الواجهة آليات القراءة البديلة لوحدة التشخيص: أسلوب السحب (Pull) عبر ara::diag::DataTransferReadByPullHandler::Read[SWS_DM_01513] مع منطقة ذاكرة محددة مسبقًا، بالإضافة إلى توفير منطقة ذاكرة مشتركة باستخدام ReleaseHandler[SWS_DM_01504].
The recommended number of bytes to send back to DM in order to
bytes_to_return
get optimum data throughput.
meta_info
MetaInfo of the request.
cancellation_handler
This parameter is used to • Query the current cancellation status by calling cancellation_ handler.IsCanceled(). Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellation_handler.Set Notifier(). The registered notifier is called if the current conversation is cancelled.
A Future, which either gets readied to ReadPushOutput (transfer ResponseParameterRecord for a positive response message) or readied with ErrorCode from DiagUdsNrcErrc (for a negative response message). Data in ReadPushOutput.responseData will be placed after block SequenceCounter as transferResponseParameterRecord in the positive response.
Fehler
Fehlercode
Beschreibung
Please use an applicable NRC, as defined in ISO 14229-1, using DiagUdsNrcErrc.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني