nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr

#include <src/lib/profiles/weave-tunneling/WeaveTunnelConnectionMgr.h>

คลาสนี้สรุปสถานะการเชื่อมต่ออุโมงค์ข้อมูล Weave ทั้งหมด ตลอดจนตรรกะและฟังก์ชันการจัดการที่เกี่ยวข้อง

สรุป

อินสแตนซ์ของคลาสนี้จะใช้เพื่อจัดการอุโมงค์ข้อมูลบนอินเทอร์เฟซแต่ละรายการที่อุโมงค์ Weave ไปยังบริการจะมีอยู่

ผู้ผลิตและผู้ทำลาย

WeaveTunnelConnectionMgr(void)

ประเภทสาธารณะ

ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec) Typedef
void(*
ติดต่อกลับเพื่อดึงข้อมูลช่วงเวลาที่ต้องรอก่อนอุโมงค์ข้อมูลถัดไปจะเชื่อมต่ออีกครั้ง
TunnelConnNotifyReasons{
  kStatus_TunDown = 0,
  kStatus_TunPrimaryUp = 1,
  kStatus_TunPrimaryConnError = 2,
  kStatus_TunBackupConnError = 3,
  kStatus_TunFailoverToBackup = 4,
  kStatus_TunBackupOnlyDown = 5,
  kStatus_TunBackupUp = 6,
  kStatus_TunPrimaryAndBackupUp = 7,
  kStatus_TunPrimaryReconnectRcvd = 8,
  kStatus_TunBackupReconnectRcvd = 9,
  kStatus_TunPrimaryLiveness = 10,
  kStatus_TunBackupLiveness = 11
}
enum
TunnelConnNotifyReasons Typedef
TunnelConnectionState{
  kState_NotConnected = 0,
  kState_Connecting = 1,
  kState_ConnectionEstablished = 2,
  kState_TunnelOpen = 3,
  kState_TunnelClosing = 4,
  kState_ReconnectRecvd = 5
}
enum
TunnelConnectionState Typedef

แอตทริบิวต์สาธารณะ

mServiceConnDelayPolicyCallback

ฟังก์ชันสาธารณะ

Init(WeaveTunnelAgent *tunAgent, TunnelType tunType, SrcInterfaceType srcIntfType, const char *connIntfName)
เริ่มต้น WeaveTunnelConnectionMgr
ServiceTunnelClose(WEAVE_ERROR err)
void
ปิดอุโมงค์ข้อมูลบริการ
SetInterfaceName(const char *intfName)
void
ตั้งค่า InterfaceName สำหรับการเชื่อมต่อ Tunnel
SetInterfaceType(const SrcInterfaceType srcIntfType)
void
ตั้งค่า SrcInterfaceType สำหรับการเชื่อมต่อ Tunnel
Shutdown(void)
void
StopAndReconnectTunnelConn(ReconnectParam & reconnParam)
void
หยุดการเชื่อมต่อทันเนลบริการแล้วลองเชื่อมต่ออีกครั้ง
TryConnectingNow(void)
พยายามสร้างการเชื่อมต่อกับบริการ

ฟังก์ชันสาธารณะแบบคงที่

DefaultReconnectPolicyCallback(void *const appstate, ReconnectParam & reconnectParam, uint32_t & delayMsec)
void
การใช้นโยบายเริ่มต้นสำหรับการดึงข้อมูลครั้งต่อไปเพื่อเชื่อมต่อกับบริการ
HandleServiceConnectionClosed(WeaveConnection *con, WEAVE_ERROR conErr)
void
เรียกใช้เครื่องจัดการเมื่อปิดการเชื่อมต่อ Service TCP
HandleServiceConnectionComplete(WeaveConnection *con, WEAVE_ERROR conErr)
void
เรียกใช้เครื่องจัดการเมื่อการเชื่อมต่อ Service TCP เสร็จสมบูรณ์
RecvdFromService(WeaveConnection *con, const WeaveMessageInfo *msgInfo, PacketBuffer *message)
void
ตัวแฮนเดิลเพื่อรับแพ็กเก็ต IPv6 แบบ Tunnel จากการเชื่อมต่อ Service TCP และส่งต่อไปยังอินเทอร์เฟซ Tunnel EndPoint หลังจากถอดรหัสแพ็กเก็ต IPv6 ดิบจากในส่วนหัวของอุโมงค์ข้อมูล
ServiceMgrStatusHandler(void *appState, WEAVE_ERROR err, StatusReport *report)
void
มีการเรียกใช้เครื่องจัดการหาก Service Manager สร้างการเชื่อมต่อ TCP กับบริการไม่สำเร็จ

ประเภทสาธารณะ

ConnectPolicyCallback

void(* ConnectPolicyCallback)(void *const appState, ReconnectParam &reconnectParam, uint32_t &delayMsec)

ติดต่อกลับเพื่อดึงข้อมูลช่วงเวลาที่ต้องรอก่อนอุโมงค์ข้อมูลถัดไปจะเชื่อมต่ออีกครั้ง

รายละเอียด
พารามิเตอร์
[in] appState
เคอร์เซอร์สถานะแอปที่ตั้งไว้ระหว่างการเริ่มต้น SubscriptionClient
[in] reconnectParam
โครงสร้างที่มีพารามิเตอร์ที่ส่งผลต่อการคำนวณความล่าช้าของการเชื่อมต่ออีกครั้ง
[out] delayMsec
เวลาเป็นมิลลิวินาทีที่ต้องรอก่อนพยายามเชื่อมต่อใหม่ครั้งถัดไป

TunnelConnNotifyReasons

 TunnelConnNotifyReasons
พร็อพเพอร์ตี้
kStatus_TunBackupConnError

ใช้เพื่อระบุว่าความพยายามเชื่อมต่ออุโมงค์ข้อมูลสำรองล้มเหลว หรือเพียร์ที่มีอยู่มีการล้มเลิกหรือปิดโดยเพียร์ที่มีอยู่

kStatus_TunBackupLiveness

ใช้เพื่อระบุข้อมูลเกี่ยวกับการตรวจสอบ Tunnel Liveness ใน Tunnel Weave Tunnel

kStatus_TunBackupOnlyDown

ใช้เพื่อระบุว่าอุโมงค์ข้อมูลสำรองหยุดทำงาน

kStatus_TunBackupReconnectRcvd

ใช้เพื่อระบุว่าบริการได้ส่งคำขอเชื่อมต่อใหม่สำหรับอุโมงค์ข้อมูล Backup Weave

kStatus_TunBackupUp

ใช้เพื่อระบุว่าอุโมงค์ข้อมูลการสำรองข้อมูล Weave ทำงานแล้ว

kStatus_TunDown

ใช้เพื่อระบุว่าอุโมงค์ Weave พังลงแล้ว

kStatus_TunFailoverToBackup

ใช้เพื่อระบุว่าอุโมงค์ข้อมูลหลักหยุดทำงานและเปลี่ยนไปใช้อุโมงค์ข้อมูลสำรองแล้ว

kStatus_TunPrimaryAndBackupUp

ใช้เพื่อระบุว่าอุโมงค์ข้อมูล Weave ทั้งหลักและสำรองพร้อมใช้งาน

kStatus_TunPrimaryConnError

ใช้เพื่อระบุว่าความพยายามเชื่อมต่ออุโมงค์ข้อมูลหลักล้มเหลว หรือเพียร์ที่มีอยู่มีการล้มเลิกหรือปิดโดยเพียร์ที่มีอยู่

kStatus_TunPrimaryLiveness

ใช้เพื่อระบุข้อมูลเกี่ยวกับการตรวจสอบ Tunnel Liveness บนอุโมงค์ Weave หลัก

kStatus_TunPrimaryReconnectRcvd

ใช้เพื่อระบุว่าบริการได้ส่งคำขอเชื่อมต่ออุโมงค์ Weave หลักอีกครั้ง

kStatus_TunPrimaryUp

ใช้เพื่อระบุว่าอุโมงค์ข้อมูล Weave หลักกำลังทำงานอยู่

TunnelConnNotifyReasons

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr::TunnelConnNotifyReasons TunnelConnNotifyReasons

TunnelConnectionState

 TunnelConnectionState
พร็อพเพอร์ตี้
kState_Connecting

ใช้เพื่อระบุว่าได้เริ่มการเชื่อมต่อ Weave Tunnel แล้ว

kState_ConnectionEstablished

ใช้เพื่อระบุว่าสร้างการเชื่อมต่อ Weave Tunnel แล้วและมีการแลกเปลี่ยนข้อมูลเส้นทาง

kState_NotConnected

ใช้เพื่อระบุว่า Weave Tunnel ไม่ได้เชื่อมต่อ

kState_ReconnectRecvd

ใช้เพื่อระบุว่าบริการต้องการให้เกตเวย์เส้นขอบเชื่อมต่ออีกครั้งหลังจากค้นหาไดเรกทอรี

kState_TunnelClosing

ใช้เพื่อระบุว่าอุโมงค์ Weave Tunnel กำลังจะปิดและขาดการเชื่อมต่อ

kState_TunnelOpen

ใช้เพื่อระบุว่าอุโมงค์ Weave Tunnel เปิดอยู่และพร้อมสำหรับการรับส่งข้อมูล

TunnelConnectionState

enum nl::Weave::Profiles::WeaveTunnel::WeaveTunnelConnectionMgr::TunnelConnectionState TunnelConnectionState

แอตทริบิวต์สาธารณะ

mServiceConnDelayPolicyCallback

ConnectPolicyCallback mServiceConnDelayPolicyCallback

ฟังก์ชันสาธารณะ

Init

WEAVE_ERROR Init(
  WeaveTunnelAgent *tunAgent,
  TunnelType tunType,
  SrcInterfaceType srcIntfType,
  const char *connIntfName
)

เริ่มต้น WeaveTunnelConnectionMgr

ServiceTunnelClose

void ServiceTunnelClose(
  WEAVE_ERROR err
)

ปิดอุโมงค์ข้อมูลบริการ

รายละเอียด
พารามิเตอร์
[in] err
WEAVE_ERROR ถูกส่งผ่านจากผู้โทร

SetInterfaceName

void SetInterfaceName(
  const char *intfName
)

ตั้งค่า InterfaceName สำหรับการเชื่อมต่อ Tunnel

รายละเอียด
พารามิเตอร์
[in] tunIntf
InterfaceName สำหรับการตั้งค่าการเชื่อมต่อทันเนลบริการ

SetInterfaceType

void SetInterfaceType(
  const SrcInterfaceType srcIntfType
)

ตั้งค่า SrcInterfaceType สำหรับการเชื่อมต่อ Tunnel

รายละเอียด
พารามิเตอร์
[in] srcIntfType
ประเภทเทคโนโลยีเครือข่ายของอินเทอร์เฟซสำหรับการเชื่อมต่ออุโมงค์ข้อมูลบริการ

ปิดการทำงาน

void Shutdown(
  void
)

StopAndReconnectTunnelConn

void StopAndReconnectTunnelConn(
  ReconnectParam & reconnParam
)

หยุดการเชื่อมต่อทันเนลบริการแล้วลองเชื่อมต่ออีกครั้ง

รายละเอียด
พารามิเตอร์
[in] err
WEAVE_ERROR ถูกส่งผ่านจากผู้โทร

TryConnectingNow

WEAVE_ERROR TryConnectingNow(
  void
)

พยายามสร้างการเชื่อมต่อกับบริการ

ลองเชื่อมต่อกับบริการโดยใช้ ServiceManager หรือทำโดยตรง

WeaveTunnelConnectionMgr

 WeaveTunnelConnectionMgr(
  void
)

ฟังก์ชันสาธารณะแบบคงที่

DefaultReconnectPolicyCallback

void DefaultReconnectPolicyCallback(
  void *const appstate,
  ReconnectParam & reconnectParam,
  uint32_t & delayMsec
)

การใช้นโยบายเริ่มต้นสำหรับการดึงข้อมูลครั้งต่อไปเพื่อเชื่อมต่อกับบริการ

นโยบายนี้เลือกช่วงเวลาแบบสุ่ม (ที่มีความละเอียดเป็นมิลลิวินาที) ในช่วงกรอบเวลาที่เพิ่มขึ้น โดยเรียงตามลำดับฟีโบนักชีจนถึง WEAVE_CONFIG_TUNNELING_RECONNECT_MAX_FIBONACCI_INDEX

รายละเอียด
พารามิเตอร์
[in] appState
เคอร์เซอร์สถานะแอปที่ตั้งไว้ระหว่างการเริ่มต้น SubscriptionClient
[in] reconnectParam
โครงสร้างที่มีพารามิเตอร์ที่ส่งผลต่อการคำนวณความล่าช้าของการเชื่อมต่ออีกครั้ง
[out] delayMsec
เวลาเป็นมิลลิวินาทีที่ต้องรอก่อนพยายามเชื่อมต่อใหม่ครั้งถัดไป

HandleServiceConnectionClosed

void HandleServiceConnectionClosed(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

เรียกใช้เครื่องจัดการเมื่อปิดการเชื่อมต่อ Service TCP

อุปกรณ์จะพยายามเริ่มต้นการเชื่อมต่อกับบริการอีกครั้งหากมีการตั้งค่า mServiceConKeepAlive เป็น "จริง"

หลังจากนั้น อุปกรณ์จะพยายามเชื่อมต่อบริการอีกครั้ง

รายละเอียด
พารามิเตอร์
[in] con
ตัวชี้ไปยังออบเจ็กต์ WeaveConnection
[in] conErr
ข้อผิดพลาดภายใน WeaveConnection หรือ WEAVE_NO_ERROR

HandleServiceConnectionComplete

void HandleServiceConnectionComplete(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

เรียกใช้เครื่องจัดการเมื่อการเชื่อมต่อ Service TCP เสร็จสมบูรณ์

อุปกรณ์จะดำเนินการเริ่มต้นคำสั่งการควบคุมอุโมงค์ข้อมูลไปยังบริการจากฟังก์ชันนี้

อุปกรณ์จะดำเนินการเริ่มต้นคำสั่งการควบคุมอุโมงค์ข้อมูลไปยังบริการจากฟังก์ชันนี้

รายละเอียด
พารามิเตอร์
[in] con
ตัวชี้ไปยังออบเจ็กต์ WeaveConnection
[in] conErr
ข้อผิดพลาดภายใน WeaveConnection หรือ WEAVE_NO_ERROR

RecvdFromService

void RecvdFromService(
  WeaveConnection *con,
  const WeaveMessageInfo *msgInfo,
  PacketBuffer *message
)

ตัวแฮนเดิลเพื่อรับแพ็กเก็ต IPv6 แบบ Tunnel จากการเชื่อมต่อ Service TCP และส่งต่อไปยังอินเทอร์เฟซ Tunnel EndPoint หลังจากถอดรหัสแพ็กเก็ต IPv6 ดิบจากในส่วนหัวของอุโมงค์ข้อมูล

รายละเอียด
พารามิเตอร์
[in] con
ตัวชี้ไปยังออบเจ็กต์ WeaveConnection
[in] msgInfo
ตัวชี้ไปยังออบเจ็กต์ WeaveMessageInfo
[in] message
ตัวชี้ไปยังออบเจ็กต์ PacketBuffer ที่มีแพ็กเก็ต IPv6 ที่อุโมงค์ข้อมูล

ServiceMgrStatusHandler

void ServiceMgrStatusHandler(
  void *appState,
  WEAVE_ERROR err,
  StatusReport *report
)

มีการเรียกใช้เครื่องจัดการหาก Service Manager สร้างการเชื่อมต่อ TCP กับบริการไม่สำเร็จ