跳到主要内容

访问微服务(Client)

参考示例:hello_world_client>>

创建微服务上下文(Context)

RESTFUL_CONTEXT 
WA_InitRestful(BROKER_HANDLE broker, MODULE_HANDLE module, const char * module_name);

发送异步请求

bool WA_SendRequest(RESTFUL_CONTEXT restful_context, 
restful_request_t * request,
WA_Result_Handler response_handler, void * user_data, int timeout_ms);
  • response_handler: 回复消息处理函数

实现回复消息处理函数

发送异步请求时,当回复被返回时,回调函数将被执行来处理返回的Response。

回调函数原型如下:

typedef void (*WA_Result_Handler) (RESTFUL_CONTEXT context, restful_response_t *response, void * user_data);

发送同步请求

restful_response_t * WA_SendRequestWait(RESTFUL_CONTEXT restful_context, 
restful_request_t * request, int timeout_ms);

调用此函数时将阻塞,直到收到Response,或者超时返回NULL。

调用者需要负责调用wa_free_response销毁返回的restful_response_t数据。

// The response and its owning payload will be freed.
void wa_free_response(restful_response_t * response);

在专用线程中执行异步回调函数

缺省情况下,会在插件的主线程中执行response回调函数。

如果需要指定在某个其他线程上来执行,调用WA_SetRemotePoster函数来提供如何处理来自框架总线上的消息。

typedef void (*RestfulRemoteHandler) (restful_remote_job_t job, RemoteHandler job_handler, void * arg_for_poster);


void WA_SetRemotePoster(RESTFUL_CONTEXT restful_context, RestfulRemoteHandler poster, void * arg);

poster参数是RestfulRemoteHandler原型的函数实现,在运行中由框架调用来处理接收到的总线消息。其入口参数说明:

  • job: 是不透明类型restful_remote_job_t的内部数据句柄,由框架提供
  • job_handler:是原型为RemoteHandler的函数实现,由框架提供。
  • arg_for_poster: 是插件调用WA_SetRemotePoster时提供的arg参数。

参考示例:hello_world_service>>