التابع IO.advise‎ في روبي

من موسوعة حسوب

يعلن التابع advise عن نية الوصول إلى بيانات الملف الحالي وفق نمط محدد.

على أنظمة التشغيل التي لا تدعم استدعاء النظام posix_fadvise(2)‎، هذا التابع سيكون عملية فارغة (no-op).

الوسيط advice (انظر فقرة البنية العامة) سيكون أحد الرموز التالية:

  • normal: - لا نصيحة لتقديمها؛ ستُعتمد الإعدادات الافتراضية للملفات المفتوحة.
  • ‎:sequential - سيتم الدخول إلى البيانات بالتتابع، مع قراءة مواضع الإزاحة (offsets) الدنيا قبل العليا.
  • ‎:random - سيتم الدخول إلى البيانات بترتيب عشوائي.
  • ‎:willneed - سيتم الدخول إلى البيانات في المستقبل القريب.
  • :dontneed‎ - لن يتم الدخول إلى البيانات في المستقبل القريب.
  • ‎:noreuse - لن يتم الدخول إلى البيانات إلا مرة واحدة فقط.

دلالات التوجيهات المُقدمة من advice تعتمد على النظام المُستخدم. انظر صفحةposix_fadvise لمزيد من التفاصيل.

المقصود ب"البيانات": الحيز من الملف الحالي الذي يبدأ عند الإزاحة offset ويمتد لـ len بايت. إن كان len يساوي 0، فسينتهي الحيّز عند البايت الأخير من الملف. افتراضيا، كلا الوسيطين offset و len يساويان 0، أي أن النصيحة تنطبق على الملف بأكمله.

في حالة حدوث خطأ، سيُطلق أحد الاستثناءات التالية:

  • IOError: مجرى د/خ مغلق.
  • Errno::EBADF: واصف الملف (file descriptor) الحالي غير صالح.
  • Errno::EINVAL: تم إعطاء قيمة غير صالحة للوسيط advice.
  • Errno::ESPIPE: يشير واصف الملف الحالي إلى أنبوب (pipe) أو أنبوب مسمى (FIFO). (يطلق اللينكس الخطأ Errno::EINVAL في هذه الحالة).
  • TypeError: إما أنّ الوسيط advice ليس رمزا، أو أنّ أحد الوسائط الأخرى ليس عدد صحيحا.
  • RangeError: أحد الوسائط المعطاة كبير جدا، أو صغير جدا.

هذه القائمة ليست شاملة؛ فهناك أخطاء Errnoأخرى، كما أن الاستثناءات ممكنة أيضا.

البنية العامة

advise(advice, offset=0, len=0)  nil

المعاملات

advice‎

النصيحة أو التوجيه

offset‎

عدد صحيح يمثل الإزاحة

len‎

عدد صحيح يمثل الطول

القيمة المُعادة

يعيد التابع advise القيمة nil.

انظر أيضا

  • التابع autoclose=‎: يُعيّن قيمة راية الإغلاق التلقائي.

مصادر