FileAccessor contains a common basis for ReadAccessor and WriteAccessor. It provides methods for checking and setting the current position in the file (GetPosition, Set Position, MovePosition, IsEof) and for checking the current size of the file (GetSize).
تُستخدم كفئة أساسية مشتركة للاستعلام عن حجم الملفات والتنقل بين المواضع لعمليات الوصول المخصصة إلى الملفات.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: e1768b56d42cالمصدرأسئلة مفتوحة (2)
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
تُستخدم كفئة أساسية مشتركة للاستعلام عن حجم الملفات والتنقل بين المواضع لعمليات الوصول المخصصة إلى الملفات.
تُستخدم الفئة ara::per::FileAccessor في وحدة استدامة AUTOSAR كفئة أساسية مشتركة للتنقل بين المواضع والتحقق من حجم عمليات الوصول المرتبة إلى الملفات ([SWS_PER_00424]). وهي تمنع إنشاء النسخ المباشر بالإضافة إلى عمليات النسخ عبر منشئات محذوفة ([SWS_PER_00589]). وعند تحديد مواضع غير صالحة، تُطبَّق دلالات التراجع (Rollback) التي تحمي موضع المؤشر الحالي. جميع العمليات آمنة من الاستثناءات، ولكنها تتطلب مزامنة خارجية عند الاستخدام المتزامن.
السياق
تُستخدم الفئة ara::per::FileAccessor في وحدة الاستدامة (ara::per) لـ AUTOSAR Adaptive Platform كفئة أساسية مجردة مشتركة لكائنات الوصول إلى الملفات مثل ReadAccessor وWriteAccessor. وتتمثل مسؤوليتها المركزية في توفير واجهة موحدة لإدارة المواضع والتحقق من الحجم المتعلق بالملفات. تعمل الفئة كجهة تحكم لمؤشر القراءة والكتابة داخل ملف مفتوح، ولكنها لا تحتوي في حد ذاتها على دوال لنقل البيانات الفعلي (مثل قراءة أو كتابة البايتات). ويتم التنقل إما بشكل مطلق بدءًا من بداية الملف أو نسبيًا بالاستناد إلى نقاط مرجعية محددة.
دورة الحياة
لا يمكن إنشاء نسخة من الفئة ara::per::FileAccessor مباشرة أو نسخها بحرية. تم حذف المنشئ الافتراضي ([SWS_PER_00589])، وكذلك منشئ النسخ ([SWS_PER_00592]) ومُعامل تعيين النسخ ([SWS_PER_00593]). كما تم منع دلالات النقل صراحةً: تم حذف كل من منشئ النقل ([SWS_PER_00590]) ومُعامل تعيين النقل ([SWS_PER_00591]). وينتج عن ذلك التفسير القائل بأنه يتم إنشاء النسخ وإدارتها حصرًا في سياق فئات فرعية ملموسة.
يضمن مدمّر الكائن الافتراضي ~FileAccessor() ([SWS_PER_00594]) تحريرًا آمنًا، مما يتيح إتلافًا متعدد الأشكال عبر مؤشرات الفئة الأساسية. فيما يتعلق بالتزامن، تم تحديد جميع الدوال الأعضاء صراحةً على أنها غير آمنة ترابطيًا ([SWS_PER_00162]، [SWS_PER_00424]، [SWS_PER_00107]، [SWS_PER_00163]، [SWS_PER_00164]). وبالتالي، يجب مزامنة عمليات الوصول المتزامنة من خيوط معالجة مختلفة إلى النسخة ذاتها بواسطة التطبيق.
مسار الاستخدام
يتضمن الاستخدام النموذجي لـ FileAccessor الاستعلام عن حجم الملف، وتحديد الموضع الحالي، بالإضافة إلى إزاحة المواضع بصورة موجهة تمهيدًا لعمليات القراءة أو الكتابة:
الاستعلام عن الحجم: يتم تحديد حجم الملف الحالي بالبايت عبر GetSize() ([SWS_PER_00424]).
الاستعلام عن الموضع: يستعلم التطبيق باستخدام GetPosition() عن إزاحة البايت الحالية بدءًا من بداية الملف، والتي يمكن أن تقع أيضًا عند نهاية الملف تمامًا ([SWS_PER_00162]).
تحديد الموضع المطلق: يضبط SetPosition() المؤشر على إزاحة مطلقة بدءًا من بداية الملف ([SWS_PER_00163]).
الإزاحة النسبية: يقوم MovePosition() بإزاحة المؤشر انطلاقًا من Origin::kBeginning، أو Origin::kCurrent، أو Origin::kEnd بمقدار إزاحة ذات إشارة ([SWS_PER_00164]).
فحص نهاية الملف: تشير الدالة IsEof() إلى ما إذا كان الموضع الحالي قد بلغ نهاية الملف ([SWS_PER_00107]).
تم التصريح عن جميع عمليات FileAccessor بأنها آمنة من الاستثناءات (noexcept). ويتم إرجاع حالات الخطأ المحتملة في استدعاءات التنقل عبر ara::core::Result:
إذا حاول أحد التطبيقات عبر SetPosition() التوجه إلى موضع يتجاوز نهاية الملف، يفشل الاستدعاء مع رمز الخطأ PerErrc::kInvalidPosition ([SWS_PER_00163]). وينطبق الأمر نفسه على MovePosition() إذا كان موضع الهدف المحسوب سالبًا أو يقع بعد نهاية الملف ([SWS_PER_00164]). وتُفرض دلالات تراجع صارمة بشكل إلزامي على كلتا الدالتين: في حال حدوث خطأ، يظل الموضع الصالح سابقًا للملف محفوظًا دون تغيير ([SWS_PER_00163]، [SWS_PER_00164]).
Moves the current position in the file relative to the Origin. In case of an error, the current position is not changed.
مُولَّد بالذكاء الاصطناعيغير مُراجَعالنموذج: gemini-3.8-flash-medium · الجهد: medium · درجة الحرارة: غير قابل للتحكم · الموجّه: 436bd0736ae4المصدر
مترجم من الدليل الألمانيgemini-3.8-flash-low · 2026-10-13 · الأصل الألماني
الاستخدام
تقوم الدالة المتزامنة MovePosition للفئة ara::per::FileAccessor بإزاحة موضع الملف الحالي بالنسبة إلى نقطة مرجعية محددة [SWS_PER_00164]. تم التصريح عن الدالة كـ noexcept[SWS_PER_00164]. وتأخذ كمعلمات نقطة البداية origin من النوع Origin بالإضافة إلى إزاحة البايت ذات الإشارة offset[SWS_PER_00164]. عند التنفيذ الناجح، تُرجع الدالة ara::core::Result يحتوي على موضع البايت المطلق الناتج بدءاً من بداية الملف [SWS_PER_00164].
التفاعل وقيم المعلمات
يتم تحديد النقطة المرجعية origin بواسطة التعداد Origin[SWS_PER_00146]:
Origin::kCurrent: الإزاحة بدءاً من موضع الملف الحالي؛ يجوز أن يكون offset موجباً أو سالباً، مع العلم أن القيمة صفر لا تغير الموضع [SWS_PER_00164]، [SWS_PER_00146].
Origin::kEnd: الإزاحة بالنسبة إلى نهاية الملف؛ يجوز أن يكون offset سالباً، في حين أن الإزاحة بقيمة صفر تضبط الموضع تماماً عند نهاية الملف [SWS_PER_00164]، [SWS_PER_00146].
معالجة الأخطاء
في حالة حدوث خطأ، لا يتم تغيير موضع الملف السابق بفضل دلالات التراجع [SWS_PER_00164]. وإذا أسفرت النقطة المستهدفة المحسوبة عن قيمة أصغر من الصفر أو وقعت بعد نهاية الملف، يتم إرجاع رمز الخطأ PerErrc::kInvalidPosition[SWS_PER_00164]. بالإضافة إلى ذلك، قد تتضمن النتيجة أخطاء خاصة بالشركة المصنعة [SWS_PER_00164].
التزامن والقيود
تم تحديد الدالة كـ exception safe[SWS_PER_00164]. ونظراً لأن التنفيذ مصنف كـ not thread-safe، يجب مزامنة عمليات الوصول المتوازية إلى نفس المثيل من FileAccessor من جانب المتصل [SWS_PER_00164].
تم إنشاء هذا النص بواسطة نظام ذكاء اصطناعي وجرى تنقيحه بواسطة autodocs.
Offset in bytes relative to ’origin’. Can be positive in case of k Beginning and kCurrent and negative in case of kCurrent and k End. In case of kCurrent, an offset of zero will not change the current position. In case of kEnd, an offset of zero will set the position to the end of the file.
A Result containing the new position in bytes from the beginning of the file. In case of an error, it contains any of the errors defined below, or a vendor specific error.
gemini-3.8-flash-low· 2026-10-13 · الأصل الألماني