nl:: Weave:: Profiles:: ServiceDirectory:: WeaveServiceManager
#include <src/lib/profiles/service-directory/ServiceDirectory.h>
אובייקט הניהול של ספריית השירותים של Weave.
סיכום
מנהל השירות של Weave הוא הממשק הראשי של האפליקציות לשירות הספרייה. לכן הוא מסתיר את הסיבוכים שטבועים בחיפוש רשומת הספרייה המשויכת לנקודת קצה (endpoint) של שירות, ביצוע חיפוש DNS על אחד או יותר משמות המארחים שנמצאים שם, ניסיון להתחבר, אבטחת החיבור וכן הלאה. הוא יכול גם לנהל מטמון של מידע מספריית השירות.
פונקציות constructor ו-destructor |
|
---|---|
WeaveServiceManager(void)
השיטה הזו מאתחלת את המכונה WeaveServiceManager.
|
|
~WeaveServiceManager(void)
השיטה הזו מפרקת את המכונה WeaveServiceManager.
|
סוגים ציבוריים |
|
---|---|
@303{
|
טיפוסים בני מנייה (enum) |
OnConnectBegin)(struct ServiceConnectBeginArgs &args)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnConnectBeginvoid(*
קריאה חוזרת (callback) של האפליקציה שמתבצעת מיד לפני יצירת החיבור. |
OnServiceEndpointQueryBegin)(void)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryBeginvoid(*
קריאה חוזרת (callback) של אפליקציה כדי לסמן את הזמן של שאילתה יוצאת בספריית השירותים. |
OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::OnServiceEndpointQueryEndWithTimeInfovoid(*
קריאה חוזרת (callback) של אפליקציה למסירת ערכי זמן מתגובה מספריית השירות. |
RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::RootDirectoryAccessor פונקציית גישה למידע של ספריית הבסיס. |
StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
|
nl::Weave::Profiles::ServiceDirectory::WeaveServiceManager::StatusHandlervoid(*
handler לתנאים של שגיאות וסטטוסים. |
פונקציות ציבוריות |
|
---|---|
SetConnectBeginCallback(OnConnectBegin aConnectBegin)
|
void
מגדירים פונקציית קריאה חוזרת (callback) שתופעל מיד לפני יצירת החיבור.
|
cancel(uint64_t aServiceEp, void *aAppState)
|
void
השיטה הזו מבטלת בקשת חיבור.
|
clearCache(void)
|
void
שיטה זו מנקה את המצב ואת המטמון של המנהל אם המצב נמצא במצב kServiceMgrState_resolved, כלומר התקבלה תגובה מנקודת הקצה של Service Directory.
|
connect(uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf)
|
ה-method הזה מבקש חיבור לשירות Weave.
|
init(WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin)
|
השיטה הזו מפעילה את האובייקט של מנהל השירות.
|
lookup(uint64_t aServiceEp, HostPortList *outHostPortList)
|
השיטה הזו מחפשת את פרטי הספרייה של נקודת קצה של שירות.
|
lookup(uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry)
|
השיטה הזו מחפשת את פרטי הספרייה של נקודת קצה של שירות.
|
onConnectionClosed(WEAVE_ERROR aError)
|
void
השיטה הזו מטפלת באירוע connection closed שדווח על ידי ההקשר המשויך של המרות Weave.
|
onConnectionComplete(WEAVE_ERROR aError)
|
void
השיטה הזו מטפלת באירוע הקישור שהושלם עבור טרנזקציית שאילתה על נקודת קצה של שירות.
|
onResponseReceived(uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg)
|
void
השיטה הזו מטפלת בכל הודעת תשובה בשיחה עם שירות הספריות.
|
onResponseTimeout(void)
|
void
השיטה הזו מטפלת באירוע זמן קצוב שפג, שבו לא התקבלה תגובה משירות הספרייה.
|
relocate(WEAVE_ERROR aError)
|
void
השיטה הזו משנה את מיקום המטמון של ספריית השירות.
|
relocate(void)
|
void
השיטה הזו מעבירה את המטמון של ספריית השירות למיקום אחר.
|
replaceOrAddCacheEntry(uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId)
|
מוסיפים את הרשומה העיקרית של שם המארח ומזהה היציאה בתחילת רשימת התיקיות.
|
reset(WEAVE_ERROR aError)
|
void
השיטה הזו מאפסת את מנהל השירות למצב הראשוני שלו.
|
reset(void)
|
void
השיטה הזו מאפסת את מנהל השירות למצב הראשוני שלו.
|
unresolve(WEAVE_ERROR aError)
|
void
השיטה הזו מבטלת את התוקף של המטמון של ספריית השירות.
|
unresolve(void)
|
void
השיטה הזו מבטלת את התוקף של המטמון של ספריית השירות.
|
שיעורים |
|
---|---|
nl:: |
הכיתה הזו מייצגת עסקה יחידה שמנוהלת על ידי מנהל השירות. |
סוגי פריטים ציבוריים
@303
@303
מאפיינים | |
---|---|
kWeave_DefaultSendTimeout
|
מספר אלפיות השנייה שתגובה לשאילתת הספרייה חייבת להתקבל לפני תום הזמן הקצוב לתפוגה של ההקשר של ההחלפה. |
OnConnectBegin
void(* OnConnectBegin)(struct ServiceConnectBeginArgs &args)
התקשרות חזרה של אפליקציה שבוצעה מיד לפני יצירת החיבור.
אפליקציות יכולות להשתמש בקריאה החוזרת הזו כדי לעקוב אחרי הארגומנטים המועברים ל-#WeaveConnection::Connect() במהלך יצירת חיבור לשירות, ולשנות אותם אם רוצים. קריאת החזרה (callback) הזו תתבצע גם בחיבור לנקודת הקצה של שירות היעד וגם בחיבור לנקודת הקצה של Service Directory, במקרה שצריך לבצע חיפוש בספרייה.
OnServiceEndpointQueryBegin
void(* OnServiceEndpointQueryBegin)(void)
קריאה חוזרת (callback) של אפליקציה לסימון המועד של שאילתה יוצאת בספריית השירות.
קוראים לזה כשאנחנו עומדים לשלוח בקשת שאילתה על נקודת קצה (endpoint) של שירות. האירוע הזה משמש להתאמה ל-OnServiceEndpointQueryEnd כדי לפצות על זמן הטיסה של ההודעה.
OnServiceEndpointQueryEndWithTimeInfo
void(* OnServiceEndpointQueryEndWithTimeInfo)(uint64_t timeQueryReceiptMsec, uint32_t timeProcessMsec)
קריאה חוזרת (callback) של אפליקציה להעברת ערכי זמן מתשובה של ספריית שירותים.
קוראים לפעולה הזו כשאנחנו מקבלים פרטי זמן מתשובה לשאילתה של ספריית השירות. לתשומת ליבכם: הקריאה החוזרת (callback) תתרחש רק אם יתבצע ניתוח מוצלח של התשובה ופרטי הזמן נכללים
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
RootDirectoryAccessor
WEAVE_ERROR(* RootDirectoryAccessor)(uint8_t *aDirectory, uint16_t aLength)
פונקציית גישה למידע על ספריית השורש.
צריך להתחיל מאיפשהו, ובספריית השירותים צריך להתחיל בספריית stub שמכילה את כתובת השרת שאפשר להכות עליה כדי להגיע לכל השאר. מכיוון שהמיקום והמקור של המידע הזה עשויים להשתנות ממכשיר למכשיר, אנחנו מספקים כאן פונקציית קריאה חוזרת של גישה (accessor callback).
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
||||
החזרות |
WEAVE_NO_ERROR אם הפעולה הסתיימה בהצלחה, אחרת תהליך הטעינה יופסק.
|
StatusHandler
void(* StatusHandler)(void *anAppState, WEAVE_ERROR anError, StatusReport *aStatusReport)
handler לתנאים של שגיאות וסטטוסים.
משתמש במנהל השירות עשוי לקבל מידע על בעיות בניסיון לבצע בקשת התחברות באחת משתי דרכים. הוא עשוי לקבל דוח סטטוס מהשירות או לקבל WEAVE_ERROR שנוצר באופן פנימי. בכל מקרה, המידע מועבר באמצעות קריאה חוזרת (callback).
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
פונקציות ציבוריות
SetConnectBeginCallback
void SetConnectBeginCallback( OnConnectBegin aConnectBegin )
הגדרת פונקציית קריאה חוזרת שתופעל מיד לפני יצירת החיבור.
פרטים | |||
---|---|---|---|
פרמטרים |
|
WeaveServiceManager
WeaveServiceManager( void )
השיטה הזו מאתחלת את המכונה WeaveServiceManager.
חשוב לזכור שצריך לקרוא ל-init() כדי לאתחל עוד יותר את המכונה הזו.
ביטול
void cancel( uint64_t aServiceEp, void *aAppState )
השיטה הזו מבטלת בקשת חיבור.
ה-method הזה מבטל בקשת חיבור על סמך מזהה נקודת הקצה של השירות ואובייקט מצב האפליקציה שהועברו בזמן הבקשה כמזהים. אם זו בקשת ההתחברות האחרונה, השיטה הזו מוחקת גם את המצבים בהמתנה של החיבור של ספריית השירות.
פרטים | |||||
---|---|---|---|---|---|
פרמטרים |
|
clearCache
void clearCache( void )
שיטה זו מנקה את המצב ואת המטמון של המנהל אם המצב נמצא במצב kServiceMgrState_resolved, כלומר התקבלה תגובה מנקודת הקצה של Service Directory.
חיבור
WEAVE_ERROR connect( uint64_t aServiceEp, WeaveAuthMode aAuthMode, void *aAppState, StatusHandler aStatusHandler, WeaveConnection::ConnectionCompleteFunct aConnectionCompleteHandler, const uint32_t aConnectTimeoutMsecs, const InterfaceId aConnectIntf )
ה-method הזה מבקש חיבור לשירות Weave.
זוהי קריאת ה-connect ברמה העליונה. בעיקרון, הוא יוצר חיבור מאובטח לשירות Weave על סמך נקודת קצה של שירות ומצב אימות, או שהוא מפסיק לפעול אם הוא לא מצליח.
אפשר להפעיל את השיטה הזו רק אחרי קריאה מוצלחת ל-init(), ואפשר לבטל בקשת חיבור באמצעות cancel().
אפשר להפעיל את השיטה הזו לפני שהמטמון המקומי יתמלא בנתונים מנתונים שהוקצתה להם כברירת מחדל או מביקור בשירות הספרייה. מנהל השירות רק יכניס את הבקשה לתור לפני שיהיה אפשר לקבוע את תוכן המטמון.
פרטים | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||||||||||
החזרות |
WEAVE_NO_ERROR לגבי הצלחה; אחרת, קוד שגיאה תואם.
|
להתחיל
WEAVE_ERROR init( WeaveExchangeManager *aExchangeMgr, uint8_t *aCache, uint16_t aCacheLen, RootDirectoryAccessor aAccessor, WeaveAuthMode aDirAuthMode, OnServiceEndpointQueryBegin aServiceEndpointQueryBegin, OnServiceEndpointQueryEndWithTimeInfo aServiceEndpointQueryEndWithTimeInfo, OnConnectBegin aConnectBegin )
השיטה הזו מפעילה את האובייקט של מנהל השירות.
כדי להשתמש בו, צריך לאתחל אובייקט של מנהל שירות. אחרי קריאה מוצלחת לשיטה הזו, לקוחות יכולים להתחיל לקרוא ל-connect(), ל-lookup() ולשיטות אחרות.
פרטים | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||||||||||||
החזרות |
WEAVE_ERROR_INVALID_ARGUMENT אם ארגומנט של פונקציה לא חוקי. אחרת, WEAVE_NO_ERROR.
|
חיפוש
WEAVE_ERROR lookup( uint64_t aServiceEp, HostPortList *outHostPortList )
השיטה הזו מחפשת את פרטי הספרייה של נקודת קצה של שירות.
אם ספריית השירות נפתרה, כלומר אם בוצעה פעולת connect() מוצלחת, השיטה הזו תאכלס את האובייקט HostPortList שסופק.
הערה: הרשימה HostPortList מקושרת לאובייקט WeaveServiceManager. היא נשארת בתוקף עד שהמטמון של ספריית השירותים יימחק או עד שתתבצע חיפוש נוסף בספריית השירותים.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
חיפוש
WEAVE_ERROR lookup( uint64_t aServiceEp, uint8_t *aControlByte, uint8_t **aDirectoryEntry )
השיטה הזו מחפשת פרטי ספרייה של נקודת קצה (endpoint) של שירות.
אם ספריית השירות נפתרה, כלומר אם בוצעה פעולת connect() ללא שגיאות, השיטה הזו תחזיר רשומת ספרייה בהינתן מזהה נקודת קצה של שירות.
השיטה הזו חושפת את הפרטים של ההטמעה הפנימית של ספריית השירות. מומלץ מאוד להשתמש בגרסה של השיטה הזו שיוצרת את HostPortList.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
onConnectionClosed
void onConnectionClosed( WEAVE_ERROR aError )
השיטה הזו מטפלת באירוע סגירת החיבור שדווח על ידי ההקשר המשויך של Weave Exchange.
פרטים | |||
---|---|---|---|
פרמטרים |
|
onConnectionComplete
void onConnectionComplete( WEAVE_ERROR aError )
השיטה הזו מטפלת באירוע connect completed עבור עסקת שאילתה של נקודת קצה לשירות.
יש כמה אפשרויות. קודם כול, יכול להיות שהחיבור נכשל. במקרה כזה סיימנו. אחרת, למעשה החיבור הושלם. אנחנו רוצים לפתוח הקשר של Exchange ולשלוח שאילתה לספרייה.
פרטים | |||
---|---|---|---|
פרמטרים |
|
onResponseReceived
void onResponseReceived( uint32_t aProfileId, uint8_t aMsgType, PacketBuffer *aMsg )
השיטה הזו מטפלת בכל הודעת תגובה בשיחה עם שירות הספרייה.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
onResponseTimeout
void onResponseTimeout( void )
שיטה זו מטפלת באירוע הזמן הקצוב לתפוגה, שבו לא התקבלה תגובה משירות הספריות.
לעבור למיקום חדש
void relocate( WEAVE_ERROR aError )
השיטה הזו משנה את מיקום המטמון של ספריית השירות.
כשנקודת קצה של שירות מחזירה דוח סטטוס עם קוד הסטטוס kStatus_Reloc, האפליקציה יכולה לקרוא ל-unresolve() כדי לנקות את המטמון ולבטל בקשות חיבור. השיטה הזו מפשטת את טיפול השגיאות על ידי קריאה ל-unresolve() בפעם הראשונה, ול-reset() אם הבעיה עדיין לא נפתרה.
הגרסה הזו של השיטה – שמופיעה כאן לצורך תאימות לאחור – מתעדת שגיאה ומפעילה את relocate(void).
פרטים | |||
---|---|---|---|
פרמטרים |
|
relocate(void)
שינוי מקום מגורים
void relocate( void )
השיטה הזו מעבירה את המטמון של ספריית השירות למיקום אחר.
כשנקודת קצה של שירות מחזירה דוח סטטוס עם קוד הסטטוס kStatus_Relocated, האפליקציה יכולה להפעיל את unresolve() כדי לנקות את המטמון ולבטל בקשות חיבור. השיטה הזו מפשטת את טיפול השגיאות על ידי קריאה ל-unresolve() בפעם הראשונה, ול-reset() אם הבעיה עדיין לא נפתרה.
מידע נוסף:relocate(WEAVE_ERROR)
replaceOrAddCacheEntry
WEAVE_ERROR replaceOrAddCacheEntry( uint16_t port, const char *hostName, uint8_t hostLen, uint64_t serviceEndpointId )
צריך להוסיף את רשומת הספרייה המשנית של שם המארח ומזהה היציאה בתחילת רשימת הספריות.
אפס
void reset( WEAVE_ERROR aError )
השיטה הזו מאפסת את מנהל השירות למצב ההתחלתי שלו.
השיטה הזו מאפסת את כל המצבים של מנהל השירות, כולל מצב התקשורת, מצב המטמון ומצב כל בקשת החיבור בהמתנה.
הגרסה הזו של השיטה – שמופיעה כאן לצורך תאימות לאחור – מתעדת שגיאה ומפעילה את reset(void).
פרטים | |||
---|---|---|---|
פרמטרים |
|
reset(void)
אפס
void reset( void )
השיטה הזו מאפסת את מנהל השירות למצב הראשוני שלו.
השיטה הזו מאפסת את כל המצבים של מנהל השירות, כולל מצב התקשורת, מצב המטמון והמצב של בקשות ההתחברות שנמצאות בהמתנה.
מידע נוסף זמין במאמרים הבאים:reset(WEAVE_ERROR)
לא לפתור
void unresolve( WEAVE_ERROR aError )
השיטה הזו מבטלת את התוקף של המטמון של ספריית השירות.
השיטה הזו מגדירה את מצב המטמון של ספריית השירות כך שבבקשה הבאה מנהל השירות ינפיק שאילתה על ספריית השירות.
הגרסה הזו של השיטה, שמופיעה כאן לצורך תאימות לאחור, מקבלת ומתעדת שגיאה ואז קוראת ל-unresolve(cancel) .
פרטים | |||
---|---|---|---|
פרמטרים |
|
unresolve(pause)
לא לפתור
void unresolve( void )
השיטה הזו מבטלת את התוקף של המטמון של ספריית השירות.
השיטה הזו מגדירה את מצב המטמון של ספריית השירות כך שבבקשה הבאה מנהל השירות ינפיק שאילתה על ספריית השירות.
למידע נוסף:unresolve(WEAVE_ERROR)