访问微服务(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);
user_data: 是调用WA_SendRequest所提供的参数user_dataresponse: 为NULL时表示超时。参考:restful_response_t 结构说明>>
发送同步请求
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参数。