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

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

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

สรุป

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

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

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
มีการเรียกใช้ตัวแฮนเดิลเมื่อปิดการเชื่อมต่อ TCP ของบริการ
HandleServiceConnectionComplete(WeaveConnection *con, WEAVE_ERROR conErr)
void
มีการเรียกใช้ตัวแฮนเดิลเมื่อการเชื่อมต่อ 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
มีการเรียกใช้เครื่องจัดการหากตัวจัดการบริการสร้างการเชื่อมต่อ 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 บนอุโมงค์ Backup Weave

kStatus_TunBackupOnlyDown

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

kStatus_TunBackupReconnectRcvd

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

kStatus_TunBackupUp

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

kStatus_TunDown

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

kStatus_TunFailoverToBackup

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

kStatus_TunPrimaryAndBackupUp

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

kStatus_TunPrimaryConnError

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

kStatus_TunPrimaryLiveness

ใช้เพื่อระบุข้อมูลเกี่ยวกับการตรวจสอบความถูกต้องของ Tunnel Liveness บนอุโมงค์ Primary 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

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

เริ่มต้น

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
ประเภทเทคโนโลยีเครือข่ายของอินเทอร์เฟซสำหรับการเชื่อมต่อ Service Tunnel

ปิดการทำงาน

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
)

มีการเรียกใช้ตัวแฮนเดิลเมื่อปิดการเชื่อมต่อ TCP ของบริการ

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

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

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

HandleServiceConnectionComplete

void HandleServiceConnectionComplete(
  WeaveConnection *con,
  WEAVE_ERROR conErr
)

มีการเรียกใช้ตัวแฮนเดิลเมื่อการเชื่อมต่อ TCP ของบริการเสร็จสมบูรณ์

อุปกรณ์ดำเนินการต่อเพื่อเริ่มคำสั่งควบคุม Tunnel ไปยังบริการจากฟังก์ชันนี้

อุปกรณ์ดำเนินการต่อเพื่อเริ่มคำสั่งควบคุม Tunnel ไปยังบริการจากฟังก์ชันนี้

รายละเอียด
พารามิเตอร์
[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 แบบ Tunnel

ServiceMgrStatusHandler

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

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