Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Trang này được dịch bởi Cloud Translation API.
Switch to English

nl :: Dệt :: Hồ sơ :: Echo_Next :: WeaveEchoClient

#include <src/lib/profiles/echo/Next/WeaveEchoClient.h>

Provides the ability to send Weave EchoRequest messages to a peer node and receive
the corresponding EchoResponse messages.

Tóm lược

Lớp WeaveEchoClient thực hiện phía khởi tạo của giao thức Weave Echo. Tương tự như giao thức ping ICMP, giao thức Weave Echo có thể được sử dụng để kiểm tra tính khả dụng và khả năng tiếp cận của một nút Weave.

Các ứng dụng có thể sử dụng lớp WeaveEchoClient để gửi các thông điệp EchoRequest một lần hoặc lặp lại tới một nút ngang hàng được xác định bởi một đối tượng Binding . Một lớp tương ứng tồn tại để phản hồi các yêu cầu tiếng vọng (xem WeaveEchoServer ).

Khách hàng ràng buộc

WeaveEchoClient lấy một đối tượng Weave Binding được sử dụng để xác định và thiết lập giao tiếp với người nhận dự định của các yêu cầu tiếng vọng. Binding có thể được ứng dụng định cấu hình và chuẩn bị trước khi khởi tạo đối tượng WeaveEchoClient hoặc có thể không chuẩn bị trước, trong trường hợp đó WeaveEchoClient sẽ yêu cầu chuẩn bị ràng buộc theo yêu cầu (xem Binding :: RequestPrepare () để biết chi tiết ).

Việc chuẩn bị Ràng buộc theo yêu cầu cũng sẽ được yêu cầu nếu nó không thành công sau khi đã vào trạng thái Sẵn sàng.

Chế độ lặp lại gửi

Phương thức SendRepeating () có thể được sử dụng để đặt WeaveEchoClient vào chế độ SendRepeating. Trong chế độ này, đối tượng khách hàng sẽ gửi một chuỗi lặp lại các thông điệp EchoRequest tới đồng đẳng tại một khoảng thời gian được định cấu hình. Chế độ SendRepeating có thể bị hủy bằng cách gọi phương thức Stop () .

Multicast và Broadcast

Đối tượng WeaveEchoClient có thể được sử dụng để gửi EchoRequests đến nhiều người nhận đồng thời bằng cách định cấu hình đối tượng Binding với địa chỉ phát đa hướng IPv6 thích hợp hoặc địa chỉ phát sóng mạng cục bộ IPv4 (255.255.255.255). Khi đối tượng WeaveEchoClient phát hiện ra địa chỉ đa hướng hoặc địa chỉ ngang hàng quảng bá, nó sẽ tự động chuyển sang chế độ MultiResponse khi gửi EchoRequest.

Trong chế độ này, đối tượng tiếp tục lắng nghe và gửi tất cả các tin nhắn EchoResponse đến trên cùng một trao đổi. Đối tượng vẫn ở chế độ MultiResponse cho đến khi: 1) ứng dụng gọi Stop () hoặc Send () , 2) ở chế độ SendRepeating, đến lúc gửi yêu cầu khác, hoặc 3) không nhận được phản hồi và hết thời gian chờ nhận.

Sự kiện API

Trong quá trình hoạt động, đối tượng WeaveEchoClient sẽ gọi đến ứng dụng để yêu cầu các hành động cụ thể hoặc gửi thông báo về các sự kiện quan trọng. Các lệnh gọi sự kiện API này được thực hiện cho hàm gọi lại hiện được định cấu hình trên đối tượng khách hàng. Trừ khi được lưu ý, các ứng dụng có thể tự do thay đổi trạng thái của ứng dụng khách trong khi gọi lại sự kiện. Một ngoại lệ tổng thể là phương thức Shutdown () của đối tượng, phương thức này có thể không bao giờ được gọi trong khi gọi lại.

Các sự kiện API sau được xác định:

Chuẩn bị

WeaveEchoClient sắp tạo một thông báo EchoRequest và đang yêu cầu ứng dụng cung cấp một trọng tải. Nếu một ứng dụng muốn, nó có thể trả về một PacketBuffer mới chứa dữ liệu trọng tải. Nếu ứng dụng không xử lý sự kiện này, EchoRequest có trọng tải dài bằng 0 sẽ được gửi tự động. Ứng dụng KHÔNG THỂ thay đổi trạng thái của WeaveEchoClient trong quá trình gọi lại này.

Đã gửi yêu cầu

Một tin nhắn EchoRequest đã được gửi đến đồng đẳng.

Đáp ứng nhận được

Một thông báo EchoResponse đã được nhận từ ngang hàng. Các đối số cho sự kiện chứa tải trọng phản hồi và siêu thông tin về thông báo phản hồi.

CommunicationError

Đã xảy ra lỗi khi tạo hoặc gửi EchoRequest hoặc trong khi chờ phản hồi. Ví dụ về các lỗi có thể xảy ra trong khi chờ phản hồi là lỗi chính hoặc kết nối bị đóng không mong muốn. Đối số cho sự kiện chứa lý do lỗi.

ResponseTimeout

Không nhận được EchoResponse trong thời gian quy định. Thời gian chờ phản hồi được kiểm soát bởi thuộc tính DefaultResponseTimeout trên đối tượng Binding .

RequestAborted

Trao đổi Echo đang tiến hành đã bị hủy bỏ do một yêu cầu được thực hiện để gửi một EchoRequest khác trước khi nhận được phản hồi cho thư trước đó. Điều này có thể phát sinh trong chế độ SendRepeating khi đến thời điểm để gửi EchoRequest tiếp theo. Điều này cũng có thể xảy ra nếu ứng dụng gọi Send () sau khi gửi EchoRequest nhưng trước khi nhận được bất kỳ phản hồi nào.

Khi đối tượng ở chế độ MultiResponse, sự kiện bị chặn nếu ít nhất một thông báo EchoResponse đã được nhận.

Người xây dựng và Người phá hủy

WeaveEchoClient (void)

Các loại công khai

EventCallback )(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam) typedef
void(*
EventType {
kEvent_PreparePayload = 1,
kEvent_RequestSent = 2,
kEvent_ResponseReceived = 3,
kEvent_CommunicationError = 4,
kEvent_ResponseTimeout = 5,
kEvent_RequestAborted = 6,
kEvent_DefaultCheck = 100
}
enum
State {
kState_NotInitialized = 0,
kState_Idle = 1,
kState_PreparingBinding = 2,
kState_RequestInProgress = 3,
kState_WaitingToSend = 4
}
enum

Thuộc tính công cộng

AppState
void *
Một con trỏ đến dữ liệu dành riêng cho ứng dụng.

Chức năng công cộng

GetBinding (void) const
Trả về một con trỏ đến đối tượng Binding được liên kết với WeaveEchoClient .
GetEventCallback (void) const
EventCallback
Trả về một con trỏ đến hàm gọi lại sự kiện API hiện được định cấu hình trên đối tượng WeaveEchoClient .
GetState (void) const
Truy xuất trạng thái hiện tại của đối tượng WeaveEchoClient .
Init ( Binding *binding, EventCallback eventCallback, void *appState)
Khởi tạo một đối tượng WeaveEchoClient .
IsSendRrepeating () const
bool
Trả về true nếu đối tượng WeaveEchoClient hiện đang ở chế độ gửi lặp lại.
RequestInProgress () const
bool
Trả về true nếu EchoRequest đã được gửi và đối tượng WeaveEchoClient đang chờ phản hồi.
Send (void)
Gửi tin nhắn EchoRequest cho đồng nghiệp.
Send (PacketBuffer *payloadBuf)
Gửi một tin nhắn EchoRequest cho đồng nghiệp với một trọng tải cụ thể.
SendRepeating (uint32_t sendIntervalMS)
Bắt đầu gửi một chuỗi lặp lại các thông điệp EchoRequest đến đồng đẳng.
SetEventCallback (EventCallback eventCallback)
void
Đặt chức năng gọi lại sự kiện API trên đối tượng WeaveEchoClient .
Shutdown (void)
void
Tắt đối tượng WeaveEchoClient đã khởi tạo trước đó.
Stop (void)
void
Dừng mọi trao đổi Echo đang diễn ra và hủy chế độ gửi lặp lại.

Chức năng tĩnh công khai

DefaultEventHandler (void *appState, EventType eventType, const InEventParam & inParam, OutEventParam & outParam)
void
Trình xử lý mặc định cho các sự kiện API WeaveEchoClient .

Cấu trúc

nl :: Weave :: Profiles :: Echo_Next :: WeaveEchoClient :: InEventParam

Nhập tham số cho sự kiện API WeaveEchoClient .

nl :: Weave :: Profiles :: Echo_Next :: WeaveEchoClient :: OutEventParam

Xuất các tham số cho sự kiện API WeaveEchoClient .

Các loại công khai

EventCallback

void(* EventCallback)(void *appState, EventType eventType, const InEventParam &inParam, OutEventParam &outParam)

Loại sự kiện

 EventType
Tính chất
kEvent_CommunicationError

Đã xảy ra lỗi giao tiếp khi gửi EchoRequest hoặc đang chờ phản hồi.

kEvent_DefaultCheck

Được sử dụng để xác minh xử lý sự kiện mặc định chính xác trong ứng dụng.

kEvent_PreparePayload

Ứng dụng được yêu cầu chuẩn bị tải trọng cho yêu cầu Echo.

kEvent_RequestAborted

Trao đổi Echo đang tiến hành đã bị hủy bỏ do một yêu cầu được thực hiện để bắt đầu một trao đổi khác.

kEvent_RequestSent

Một tin nhắn EchoRequest đã được gửi đến đồng đẳng.

kEvent_ResponseReceived

Một thông báo EchoResponse đã được nhận từ ngang hàng.

kEvent_ResponseTimeout

Không nhận được EchoResponse trong thời gian quy định.

Tiểu bang

 State
Tính chất
kState_Idle

Đối tượng khách hàng đang nhàn rỗi.

kState_NotInitialized

Đối tượng khách hàng không được khởi tạo.

kState_PreparingBinding

Đối tượng khách hàng đang chờ ràng buộc sẵn sàng.

kState_RequestInProgress

Một thông báo EchoRequest đã được gửi và đối tượng khách đang chờ phản hồi.

kState_WaitingToSend

SendRepeating () đã được gọi và đối tượng khách hàng đang đợi lần gửi EchoRequest tiếp theo.

Thuộc tính công cộng

AppState

void * AppState

Một con trỏ đến dữ liệu dành riêng cho ứng dụng.

Chức năng công cộng

GetBinding

Binding * GetBinding(
  void
) const 

Trả về một con trỏ đến đối tượng Binding được liên kết với WeaveEchoClient .

GetEventCallback

EventCallback GetEventCallback(
  void
) const 

Trả về một con trỏ đến hàm gọi lại sự kiện API hiện được định cấu hình trên đối tượng WeaveEchoClient .

GetState

State GetState(
  void
) const 

Truy xuất trạng thái hiện tại của đối tượng WeaveEchoClient .

Trong đó

WEAVE_ERROR Init(
  Binding *binding,
  EventCallback eventCallback,
  void *appState
)

Khởi tạo một đối tượng WeaveEchoClient .

Khởi tạo một đối tượng WeaveEchoClient để chuẩn bị gửi tin nhắn echo đến một đối tượng ngang hàng.

Chi tiết
Thông số
[in] binding
Một đối tượng Binding sẽ được sử dụng để thiết lập giao tiếp với nút ngang hàng.
[in] eventCallback
Một con trỏ đến một hàm sẽ được gọi bởi đối tượng WeaveEchoClient để cung cấp các sự kiện API cho ứng dụng.
[in] appState
Một con trỏ đến một đối tượng do ứng dụng xác định sẽ được chuyển trở lại ứng dụng bất cứ khi nào một sự kiện API xảy ra.

IsSendRrepeating

bool IsSendRrepeating() const 

Trả về true nếu đối tượng WeaveEchoClient hiện đang ở chế độ gửi lặp lại.

RequestInProgress

bool RequestInProgress() const 

Trả về true nếu EchoRequest đã được gửi và đối tượng WeaveEchoClient đang chờ phản hồi.

Gửi

WEAVE_ERROR Send(
  void
)

Gửi tin nhắn EchoRequest cho đồng nghiệp.

Phương thức này bắt đầu quá trình gửi một thông điệp EchoRequest tới nút ngang hàng. Nếu và khi nhận được thông báo EchoResponse tương ứng, nó sẽ được gửi đến ứng dụng thông qua sự kiện API ResponseReceive.

Khi hình thành thông báo EchoRequest, WeaveEchoClient đưa ra yêu cầu đối với ứng dụng, thông qua sự kiện API Chuẩn bị tải, để chuẩn bị tải thông báo.

Nếu đối tượng Binding không ở trạng thái Sẵn sàng khi phương thức này được gọi, một yêu cầu sẽ được gửi đến phương thức Binding :: RequestPrepare () để bắt đầu chuẩn bị theo yêu cầu. Thao tác gửi sau đó sẽ được xếp hàng đợi cho đến khi quá trình này hoàn tất. Độ sâu tối đa của hàng đợi này là một. Do đó, bất kỳ lệnh gọi nào đến Send () trong khi có một lần gửi trước đó trong hàng đợi sẽ dẫn đến chỉ một EchoRequest duy nhất được gửi.

Gọi Send () trong khi WeaveEchoClient đang ở chế độ gửi lặp lại (nghĩa là do một cuộc gọi trước đó tới SendRepeating () ) có tác dụng tăng tốc và đặt lại chu kỳ gửi nhưng không đưa WeaveEchoClient ra khỏi chế độ gửi lặp lại.

Gửi

WEAVE_ERROR Send(
  PacketBuffer *payloadBuf
)

Gửi một tin nhắn EchoRequest cho đồng nghiệp với một trọng tải cụ thể.

Phương thức này bắt đầu quá trình gửi thông điệp EchoRequest đến nút ngang hàng. Nội dung của bộ đệm tải trọng được cung cấp sẽ được gửi đến đồng đẳng dưới dạng tải trọng của thông báo EchoRequest. Nếu và khi nhận được thông báo EchoResponse tương ứng, nó sẽ được gửi đến ứng dụng thông qua sự kiện API ResponseReceive.

Khi gọi phương thức này, quyền sở hữu bộ đệm tải trọng được cung cấp sẽ chuyển đến đối tượng WeaveEchoClient , đối tượng có trách nhiệm giải phóng nó. Điều này đúng bất kể phương thức hoàn tất thành công hay có lỗi.

Nếu đối tượng Binding không ở trạng thái Ready khi phương thức này được gọi, một yêu cầu sẽ được gửi đến phương thức Binding :: RequestPrepare () để bắt đầu chuẩn bị theo yêu cầu. Thao tác gửi sau đó sẽ được xếp hàng đợi cho đến khi quá trình này hoàn tất. Độ sâu tối đa của hàng đợi này là một. Vì vậy, bất kỳ lệnh gọi nào đến Send () trong khi có một lần gửi trước đó trong hàng đợi sẽ dẫn đến chỉ một EchoRequest duy nhất được gửi.

Gọi Send () trong khi WeaveEchoClient đang ở chế độ gửi lặp lại (nghĩa là do một cuộc gọi trước đó tới SendRepeating () ) có tác dụng tăng tốc và đặt lại chu kỳ gửi nhưng không đưa WeaveEchoClient ra khỏi chế độ gửi lặp lại.

Chi tiết
Thông số
[in] payloadBuf
Một đối tượng PacketBuffer chứa dữ liệu trọng tải sẽ được gửi đến ngang hàng. Quyền sở hữu vùng đệm này được chuyển cho đối tượng WeaveEchoClient trong mọi trường hợp.

Gửi lại

WEAVE_ERROR SendRepeating(
  uint32_t sendIntervalMS
)

Bắt đầu gửi một chuỗi tin nhắn EchoRequest lặp lại cho đồng đẳng.

Phương thức này bắt đầu một quá trình lặp lại gửi các thông điệp EchoRequest đến đồng đẳng. Khi nhận được các thông báo EchoResponse từ đồng đẳng, chúng sẽ được gửi đến ứng dụng thông qua sự kiện API ResponseReceive.

Khi SendRepeating () được gọi, WeaveEchoClient sẽ chuyển sang chế độ gửi lặp lại, trong đó nó sẽ ở lại cho đến khi Stop () được gọi hoặc lỗi Binding xảy ra. Gọi SendRepeating () nhiều lần có tác dụng thiết lập lại chu kỳ gửi và cập nhật khoảng thời gian.

Lần gửi đầu tiên của một chuỗi xảy ra tại thời điểm SendRepeating () được gọi hoặc bất cứ khi nào Binding trở nên sẵn sàng sau khi SendRepeating () được gọi (xem bên dưới). Các lần gửi tiếp theo xảy ra sau đó trong khoảng thời gian được chỉ định.

Mỗi lần gửi xảy ra, WeaveEchoClient sẽ đưa ra yêu cầu đối với ứng dụng, thông qua sự kiện API Chuẩn bị tải, để chuẩn bị tải trọng của thư.

Nếu đối tượng Binding không ở trạng thái Sẵn sàng khi cần gửi tin nhắn, một yêu cầu sẽ được gửi đến phương thức Binding :: RequestPrepare () để bắt đầu chuẩn bị theo yêu cầu. Việc gửi tin nhắn lặp lại tiếp theo sẽ bị tạm dừng cho đến khi quá trình này hoàn tất. Lỗi trong quá trình chuẩn bị Binding theo yêu cầu sẽ khiến WeaveEchoClient rời khỏi chế độ gửi lặp lại.

SetEventCallback

void SetEventCallback(
  EventCallback eventCallback
)

Đặt chức năng gọi lại sự kiện API trên đối tượng WeaveEchoClient .

Tắt

void Shutdown(
  void
)

Tắt đối tượng WeaveEchoClient đã khởi tạo trước đó.

Lưu ý rằng phương thức này chỉ có thể được gọi nếu phương thức Init () đã được gọi trước đó.

Dừng lại

void Stop(
  void
)

Dừng mọi trao đổi Echo đang diễn ra và hủy chế độ gửi lặp lại.

WeaveEchoClient

 WeaveEchoClient(
  void
)

Chức năng tĩnh công khai

DefaultEventHandler

void DefaultEventHandler(
  void *appState,
  EventType eventType,
  const InEventParam & inParam,
  OutEventParam & outParam
)

Trình xử lý mặc định cho các sự kiện API WeaveEchoClient .

Các ứng dụng bắt buộc phải gọi phương thức này cho bất kỳ sự kiện API nào mà chúng không nhận ra hoặc xử lý. Các tham số được cung cấp phải giống với các tham số được chuyển bởi đối tượng khách đến hàm xử lý sự kiện của ứng dụng.

Chi tiết
Thông số
[in] appState
Một con trỏ đến thông tin trạng thái do ứng dụng xác định được liên kết với đối tượng khách.
[in] eventType
ID sự kiện được chuyển bởi lệnh gọi lại sự kiện
[in] inParam
Tham chiếu các tham số sự kiện đầu vào được truyền bởi lệnh gọi lại sự kiện
[in] outParam
Tham chiếu các tham số sự kiện đầu ra được truyền bởi lệnh gọi lại sự kiện