访问微服务(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);
user_data
: 是调用WA_SendRequest
所提供的参数user_data
response
: 为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
参数。