123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #ifndef SP_RPC_H
- #define SP_RPC_H
- #pragma once
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* remote procedure call mechanism to sp shell */
- /* server side (shell) */
- typedef struct iobuffer_t iobuffer_t;
- typedef struct sp_svc_t sp_svc_t;
- typedef struct sp_rpc_server_t sp_rpc_server_t;
- typedef struct sp_rpc_server_callback {
- void (*on_info)(sp_rpc_server_t *server, int epid, int svc_id, int call_type, iobuffer_t **info_pkt, void *user_data);
- void (*on_req)(sp_rpc_server_t *server, int epid, int svc_id, int rpc_id, int call_type, iobuffer_t **req_pkt, void *user_data);
- void (*on_destroy)(sp_rpc_server_t *server, void *user_data);
- void *user_data;
- }sp_rpc_server_callback;
- SPBASE_API int sp_rpc_server_create(sp_svc_t *svc, sp_rpc_server_callback *cb, sp_rpc_server_t **p_server);
- SPBASE_API void sp_rpc_server_destroy(sp_rpc_server_t *server);
- SPBASE_API int sp_rpc_server_start(sp_rpc_server_t *server);
- SPBASE_API int sp_rpc_server_stop(sp_rpc_server_t *server);
- SPBASE_API sp_svc_t *sp_rpc_server_get_svc(sp_rpc_server_t *server);
- SPBASE_API int sp_rpc_server_send_answer(sp_rpc_server_t *server, int epid, int svc_id, int rpc_id, iobuffer_t **ans_pkt);
- /* client side (entity) */
- typedef struct sp_rpc_client_t sp_rpc_client_t;
- typedef struct sp_rpc_client_mgr_t sp_rpc_client_mgr_t;
- typedef struct sp_rpc_client_mgr_callback {
- void (*on_req)(sp_rpc_client_mgr_t *mgr, int epid, int svc_id, int rpc_id, int call_type, iobuffer_t **req_pkt, void *user_data);
- void (*on_destroy)(sp_rpc_client_mgr_t *mgr, void *user_data);
- void *user_data;
- }sp_rpc_client_mgr_callback;
- int sp_rpc_client_mgr_create(sp_svc_t *svc, sp_rpc_client_mgr_callback *cb, sp_rpc_client_mgr_t **p_mgr);
- void sp_rpc_client_mgr_destroy(sp_rpc_client_mgr_t *mgr);
- int sp_rpc_client_mgr_start(sp_rpc_client_mgr_t *mgr);
- int sp_rpc_client_mgr_stop(sp_rpc_client_mgr_t *mgr);
- sp_svc_t *sp_rpc_client_mgr_get_svc(sp_rpc_client_mgr_t *mgr);
- int sp_rpc_client_mgr_cancel_all(sp_rpc_client_mgr_t *mgr);
- int sp_rpc_client_mgr_get_client_cnt(sp_rpc_client_mgr_t *mgr);
- int sp_rpc_client_mgr_one_way_call(sp_rpc_client_mgr_t *mgr, int epid, int svc_id, int call_type, iobuffer_t **info_pkt);
- int sp_rpc_client_mgr_send_answer(sp_rpc_client_mgr_t *mgr, int epid, int svc_id, int rpc_id, iobuffer_t **ans_pkt);
- typedef struct sp_rpc_client_callback {
- void (*on_ans)(sp_rpc_client_t *client, int error, iobuffer_t **ans_pkt, void *user_data);
- void (*on_destroy)(sp_rpc_client_t *client, void *user_data);
- void *user_data;
- }sp_rpc_client_callback;
- int sp_rpc_client_create(sp_rpc_client_mgr_t *mgr, int epid, int svc_id, int call_type, sp_rpc_client_callback *cb, sp_rpc_client_t **p_client);
- void sp_rpc_client_destroy(sp_rpc_client_t *client);
- int sp_rpc_client_close(sp_rpc_client_t *client);
- int sp_rpc_client_async_call(sp_rpc_client_t *client, iobuffer_t **req_pkt);
- int sp_rpc_client_get_rpc_id(sp_rpc_client_t *client);
- int sp_rpc_client_get_remote_epid(sp_rpc_client_t *client);
- int sp_rpc_client_get_remote_svc_id(sp_rpc_client_t *client);
- #ifdef __cplusplus
- } // extern "C" {
- #endif
- #endif // SP_RPC_H
|