يُستخدم لتغليف أحجام الملفات المضغوطة وغير المضغوطة بالبايت في خدمات نقل الملفات.
السياق
تعد البنية ara::diag::FileTransferService::FileSizes جزءًا لا يتجزأ من وحدة Diagnostics (diag) في AUTOSAR Adaptive Platform [SWS_DM_01321]. وضمن نطاق أسماء الخدمة ذات المستوى الأعلى ara::diag::FileTransferService، تحدد نموذج بيانات مدمج لتمثيل معلومات أحجام الملفات الكاملة AUTOSAR_AP_SWS_Diagnostics §8.18.2 «Struct: FileSizes». ويتم التصريح عن النوع عبر ملف الرأس ara/diag/file_transfer.h [SWS_DM_01322]. وتتمثل مسؤوليتها الأساسية في تجميع معلومات الحجم ذات الصلة بعمليات نقل الملفات في بنية بيانات موحدة، مما يتيح لمكونات المنصة والتطبيق المتفاعلة تبادل أحجام الملفات بشكل متسق AUTOSAR_AP_SWS_Diagnostics ص. 1126.
من الناحية الوظيفية، تسجل بنية البيانات قيمتي حجم متميزتين: الحجم الإجمالي غير المضغوط لملف عبر العنصر uncompressed_size [SWS_DM_01322]، والحجم الإجمالي المضغوط عبر العنصر compressed_size [SWS_DM_01323]. وتُحفظ كلتا القيمتين كأعداد صحيحة غير موقعة بسعة 64 بت (std::uint64_t) بوحدة قياس البايت. وبذلك تعمل FileSizes كحامل معلومات دلالي بين عملاء التشخيص، وDiagnostic Management، وموفري الخدمات الفعليين الذين ينفذون عمليات نقل الملفات على المنصة التكيفية.
دورة الحياة
تمت نمذجة البنية ara::diag::FileTransferService::FileSizes ككائن بيانات صرف (Value Object) دون دوال افتراضية خاصة به أو تسلسلات هرمية معقدة للتوارث AUTOSAR_AP_SWS_Diagnostics §8.18.2.1 «Public Member Variables». ويتم الإنشاء نمطيًا مباشرة على مكدس الاستدعاء أو كعضو في بنية بيانات ذات مستوى أعلى. وبما أنها لا تتضمن سوى أنواع أعداد صحيحة قياسية، فمن المفترض أن تكون البنية قابلة للنسخ والنقل افتراضيًا ولا تتطلب إدارة ذاكرة ديناميكية على الذاكرة المكدسة (Heap). سؤال Q-f9c6e76fc8c62463 (مفتوح)
تعتمد علاقات الملكية على سياق الاستخدام المعني: إذا تم إنشاء حالة بواسطة تطبيق تشخيص، تظل الملكية لدى هذا التطبيق أو تنتقل عبر التمرير بالقيمة (Pass-by-Value) إلى دوال الواجهة المستدعاة. وإتلاف الحالة أمر بديهي ويتم تلقائيًا بمجرد مغادرة النطاق (Scope) دون الحاجة إلى منطق تنظيف إضافي. ونظرًا لأن النوع لا يوفر آليات مزامنة داخلية، فإن الاستخدام المنسق والآمن للخيوط عند الوصول المتزامن إلى نفس الحالة يقع على الأرجح بالكامل على عاتق مكونات التشخيص أو التطبيق المشاركة. سؤال Q-d2e83f9098c7f8c8 (مفتوح)
مسار الاستخدام
ينقسم الاستخدام النمطي للبنية إلى مراحل التهيئة، وتعيين المعلمات، والتمرير إلى روتينات النقل الخاصة بـ FileTransferService [SWS_DM_01321]. وفي حالة استخدام نمطية، يحدد المكون المرسل الأبعاد الفعلية للملف على نظام الملفات أو في الذاكرة قبل بدء نقل الملف. بعد ذلك، يقوم بإنشاء كائن من FileSizes ويعين قيم البايت المقاسة للمتغيرين العامين:
uncompressed_size: يحدد الحجم المطلق للملف الأصلي بالبايت [SWS_DM_01322].
compressed_size: يحدد الحجم المضغوط لدفق البيانات المراد نقله بالبايت [SWS_DM_01323].
إذا تم نقل ملف دون ضغط مسبق، فمن المفترض أن يحمل compressed_size وuncompressed_size قيمًا متطابقة. سؤال Q-1edcb924fd5932ee (مفتوح) وبعد التهيئة، يتم تمرير البنية إلى الدوال المناسبة لنقل الملفات لتمكين الأطراف المقابلة من تخصيص متطلبات الذاكرة مسبقًا ومراقبة تقدم النقل بدقة AUTOSAR_AP_SWS_Diagnostics ص. 77.
سيناريوهات الأخطاء
لا توجد رموز أخطاء تشخيصية أو قيم إرجاع أو استثناءات خاصة محددة في مواصفة ara::diag::FileTransferService::FileSizes AUTOSAR_AP_SWS_Diagnostics §8.18.2 «Struct: FileSizes». وباعتبارها نوع بيانات خامل، لا تطلق البنية نفسها رسائل خطأ ولا تتحقق من صحة القيم المدخلة في وقت التشغيل.
تنشأ احتمالات الخطأ بشكل أساسي من الشروط المسبقة واللاحقة غير الصحيحة عند ملء المعلمات. وبفضل النوع std::uint64_t، يمكن تمثيل قيم تصل إلى $2^{64}-1$ بايت [SWS_DM_01322]، [SWS_DM_01323]. وإذا قام أحد المكونات بتمرير أحجام غير منطقية — على سبيل المثال، قيمة صفر بايت لملفات موجودة أو حجم مضغوط يتجاوز بشكل كبير وبدون تفسير منطقي الحجم غير المضغوط —، فيجب معالجة ذلك من خلال منطق المعالجة السابق أو اللاحق لـ FileTransferService. كما يشكل تجاوز سعة ذاكرة الوجهة المتاحة سيناريو خطأ عالي المستوى يجب اكتشافه استنادًا إلى قيم البايت المنقولة في FileSizes قبل بدء نقل البيانات.
يستند دليل الفئات هذا إلى مواصفة AUTOSAR Adaptive Platform R25-11 (الوحدة diag) وتم إعداده لـ autodocs.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني