خواندن تراکنش‌ها

خواندن تراکنش

یکی از اولین موارد استفاده هنگام تعامل با «گره‌ها» در Matter خواندن «مشخصه» از «گره» دیگر است، مثل مقدار دما از حسگر. در چنین «تعامل‌هایی»، اولین «کنش» که باید انجام شود «کنش درخواست خواندن» است.

ترتیب عملیات تراکنش خواندن
شکل ۱: خواندن تراکنش

خواندن کنش درخواست

جهت: آغازگر -> هدف

در این «کنش»، «آغازگر» از «هدف» پُرسمان می‌کند و موارد زیر را ارائه می‌دهد:

  • درخواست‌های مشخصه: فهرستی از صفر یا بیشتر از «مشخصه‌های» «هدف». این فهرست از صفر یا چند «مسیر» به «مشخصه‌های» درخواستی «هدف» تشکیل شده است.
  • درخواست‌های رویداد: فهرستی از صفر یا چند «مسیر به هدف» برای رویدادهای درخواستی «هدف».

پس‌از اینکه «هدف» «اقدام درخواست خواندن» را دریافت کرد، «اقدام داده‌های گزارش» را با اطلاعات درخواستی جمع‌آوری می‌کند.

گزارش کنش داده

جهت: هدف -> آغازگر

در این «کنش»، «هدف» با این موارد پاسخ می‌دهد:

  • گزارش‌های مشخصه: فهرستی از صفر یا بیشتر از «مشخصه‌های» گزارش‌شده در «درخواست کنش خواندن» درخواست شده است.
  • گزارش‌های رویداد: فهرستی از صفر یا چند رویداد گزارش‌شده.
  • سرکوب کردن پاسخ: پرچمی که تعیین می‌کند آیا پاسخ وضعیت به این کنش باید سرکوب شود یا نه.
  • شناسه اشتراک: اگر این گزارش بخشی از تراکنش اشتراک باشد، باید شامل عدد صحیحی باشد که برای شناسایی تراکنش اشتراک استفاده می‌شود.

کنش پاسخ وضعیت

جهت: یا «هدف -> آغازگر» یا «آغازگر -> هدف»

پس‌از اینکه «آغازگر» داده‌های درخواستی را دریافت کرد، به‌طور پیش‌فرض باید «کنش پاسخ وضعیت» تولید کند. این کنش از «آغازگر» ارسال می‌شود و دریافت داده‌های گزارش‌شده را تأیید می‌کند. اگر پرچم «پاسخ وضعیت سرکوب» تنظیم شده باشد، «آغازگر» نباید «کنش پاسخ وضعیت» را ارسال کند.

وقتی «کنش پاسخ وضعیت» توسط «آغازگر» ارسال شود، یا «کنش گزارش داده» توسط «آغازگر» با پرچم «سرکوب پاسخ» فعال دریافت شود، پُرسمان خواندن/گزارش کردن تمام می‌شود.

«کنش پاسخ وضعیت» به‌سادگی حاوی فیلد وضعیت است که یا موفقیت عملیات را تأیید می‌کند یا کد خطا ارائه می‌دهد.

خواندن محدودیت‌ها

«کنش درخواست خواندن» و «کنش داده‌های گزارش» فقط Unicast هستند. علاوه‌براین، «مسیرهای» این درخواست‌ها نباید «گروه گره‌ها» را هدف‌یابی کنند.

«کنش پاسخ وضعیت» فقط Unicast است و نمی‌تواند به‌عنوان پاسخی به پخش همگانی گروهی تولید شود.

تراکنش اشتراک

توالی عملیات تراکنش اشتراک
شکل ۲: تراکنش اشتراک

اقدام درخواست مشترک شدن

جهت: آغازگر -> هدف

علاوه‌بر «کنش درخواست خواندن» تکی، «آغازگر» همچنین می‌تواند در به‌روزرسانی‌های دوره‌ای «مشخصه» یا «رویداد» مشترک شود. بنابراین، همان «کنش داده‌های گزارش» می‌تواند در نتیجه به‌روزرسانی‌های دوره‌ای داده که از تراکنش آبونمانی پیروی می‌کنند تولید شود.

«تعامل اشتراک» بین دو «گره» رابطه ایجاد می‌کند، که در آن «هدف» به‌صورت دوره‌ای «کنش‌های داده گزارش» را برای «آغازگر» تولید می‌کند. «آغازگر» مشترک و «هدف» ناشر است.

«کنش درخواست مشترک شدن» شامل موارد زیر است:

  • کف حداقل فاصله: حداقل فاصله بین گزارش‌ها.
  • سقف حداکثر فاصله: حداکثر فاصله بین گزارش‌ها.
  • گزارش‌های مشخصه: فهرستی از صفر یا بیشتر از «مشخصه‌های» گزارش‌شده در «درخواست کنش خواندن» درخواست شده است.
  • گزارش‌های رویداد: فهرستی از صفر یا چند رویداد گزارش‌شده.

پس‌از «درخواست مشترک شدن»، «هدف» با «کنش داده‌های گزارش» حاوی اولین دسته از داده‌های گزارش‌شده به «آغازگر» پاسخ می‌دهد: داده‌های منتشرشده آماده.

«آغازگر» سپس «کنش گزارش داده» را با «پاسخ وضعیت» کنش ارسال‌شده به «هدف» تأیید می‌کند. وقتی «هدف» «کنش پاسخ وضعیت» را دریافت کرد که هیچ خطایی را گزارش نمی‌کند، «کنش پاسخ مشترک شدن» را ارسال می‌کند.

«هدف» متعاقباً «کنش داده‌های گزارش» را به‌صورت دوره‌ای در فاصله زمانی مذاکره‌شده ارسال می‌کند و «آغازگر» تا زمانی که اشتراک ازدست برود یا لغو شود به آن «کنش‌ها» پاسخ می‌دهد.

کنش پاسخ مشترک شدن

جهت: هدف -> آغازگر

این آخرین «کنش» در «تراکنش اشتراک» است و فرایند را تکمیل می‌کند. شامل این موارد می‌شود:

  • شناسه اشتراک: عدد صحیحی که اشتراک را شناسایی می‌کند.
  • حداقل فاصله: حداقل فاصله نهایی و تعیین‌شده بین گزارش‌ها.
  • حداکثر فاصله: نهایی‌ترین، حداکثر فاصله تعیین‌شده بین گزارش‌ها.

محدودیت‌های اشتراک

  • «کنش درخواست اشتراک» و «کنش پاسخ اشتراک» کنش‌های Unicast-فقط هستند.
  • همه «کنش‌های داده‌های گزارش» در «تعامل اشتراک» باید «شناسه اشتراک» یکسانی داشته باشند.
  • اگر «مشترک» در حداکثر فاصله زمانی مذاکره‌شده بین «کنش‌ها» «کنش داده‌های گزارش» را دریافت نکند، اشتراک فسخ خواهد شد.
  • در نتیجه قانون قبلی، «ناشر» می‌تواند «تعامل اشتراک» را با متوقف کردن ارسال «کنش‌های داده گزارش» دوره‌ای فسخ کند.
  • «مشترک» می‌تواند «تعامل اشتراک» را با پاسخ دادن به «کنش گزارش داده» با کد وضعیت INACTIVE_SUBSCRIPTION خاتمه دهد.