00001 00817 #ifndef LE_MESSAGING_H_INCLUDE_GUARD 00818 #define LE_MESSAGING_H_INCLUDE_GUARD 00819 00820 // ======================================= 00821 // DATA TYPES 00822 // ======================================= 00823 00824 //-------------------------------------------------------------------------------------------------- 00828 //-------------------------------------------------------------------------------------------------- 00829 typedef struct le_msg_Protocol* le_msg_ProtocolRef_t; 00830 00831 //-------------------------------------------------------------------------------------------------- 00835 //-------------------------------------------------------------------------------------------------- 00836 typedef struct le_msg_Service* le_msg_ServiceRef_t; 00837 00838 //-------------------------------------------------------------------------------------------------- 00842 //-------------------------------------------------------------------------------------------------- 00843 typedef struct le_msg_Session* le_msg_SessionRef_t; 00844 00845 //-------------------------------------------------------------------------------------------------- 00849 //-------------------------------------------------------------------------------------------------- 00850 typedef struct le_msg_Message* le_msg_MessageRef_t; 00851 00852 00853 //-------------------------------------------------------------------------------------------------- 00864 //-------------------------------------------------------------------------------------------------- 00865 typedef void (* le_msg_SessionEventHandler_t) 00866 ( 00867 le_msg_SessionRef_t sessionRef, 00868 void* contextPtr 00869 ); 00870 00871 00872 //-------------------------------------------------------------------------------------------------- 00883 //-------------------------------------------------------------------------------------------------- 00884 typedef void (* le_msg_ReceiveHandler_t) 00885 ( 00886 le_msg_MessageRef_t msgRef, 00887 void* contextPtr 00888 ); 00889 00890 00891 //-------------------------------------------------------------------------------------------------- 00903 //-------------------------------------------------------------------------------------------------- 00904 typedef void (* le_msg_ResponseCallback_t) 00905 ( 00906 le_msg_MessageRef_t msgRef, 00907 void* contextPtr 00908 ); 00909 00910 00911 // ======================================= 00912 // PROTOCOL FUNCTIONS 00913 // ======================================= 00914 00915 //-------------------------------------------------------------------------------------------------- 00923 //-------------------------------------------------------------------------------------------------- 00924 le_msg_ProtocolRef_t le_msg_GetProtocolRef 00925 ( 00926 const char* protocolId, 00927 size_t largestMsgSize 00928 ); 00929 00930 00931 //-------------------------------------------------------------------------------------------------- 00937 //-------------------------------------------------------------------------------------------------- 00938 const char* le_msg_GetProtocolIdStr 00939 ( 00940 le_msg_ProtocolRef_t protocolRef 00941 ); 00942 00943 00944 //-------------------------------------------------------------------------------------------------- 00950 //-------------------------------------------------------------------------------------------------- 00951 size_t le_msg_GetProtocolMaxMsgSize 00952 ( 00953 le_msg_ProtocolRef_t protocolRef 00954 ); 00955 00956 00957 // ======================================= 00958 // SESSION FUNCTIONS 00959 // ======================================= 00960 00961 //-------------------------------------------------------------------------------------------------- 00971 //-------------------------------------------------------------------------------------------------- 00972 le_msg_SessionRef_t le_msg_CreateSession 00973 ( 00974 le_msg_ProtocolRef_t protocolRef, 00975 const char* serviceName 00976 ); 00977 00978 00979 //-------------------------------------------------------------------------------------------------- 00984 //-------------------------------------------------------------------------------------------------- 00985 void le_msg_SetSessionContextPtr 00986 ( 00987 le_msg_SessionRef_t sessionRef, 00988 00989 void* contextPtr 00990 00991 ); 00992 00993 //-------------------------------------------------------------------------------------------------- 01001 //-------------------------------------------------------------------------------------------------- 01002 void* le_msg_GetSessionContextPtr 01003 ( 01004 le_msg_SessionRef_t sessionRef 01005 ); 01006 01007 01008 //-------------------------------------------------------------------------------------------------- 01017 //-------------------------------------------------------------------------------------------------- 01018 void le_msg_DeleteSession 01019 ( 01020 le_msg_SessionRef_t sessionRef 01021 ); 01022 01023 01024 //-------------------------------------------------------------------------------------------------- 01037 //-------------------------------------------------------------------------------------------------- 01038 void le_msg_SetSessionRecvHandler 01039 ( 01040 le_msg_SessionRef_t sessionRef, 01041 le_msg_ReceiveHandler_t handlerFunc, 01042 void* contextPtr 01043 ); 01044 01045 01046 //-------------------------------------------------------------------------------------------------- 01063 //-------------------------------------------------------------------------------------------------- 01064 void le_msg_SetSessionCloseHandler 01065 ( 01066 le_msg_SessionRef_t sessionRef, 01067 le_msg_SessionEventHandler_t handlerFunc, 01068 void* contextPtr 01069 ); 01070 01071 01072 //-------------------------------------------------------------------------------------------------- 01084 //-------------------------------------------------------------------------------------------------- 01085 void le_msg_OpenSession 01086 ( 01087 le_msg_SessionRef_t sessionRef, 01088 le_msg_SessionEventHandler_t callbackFunc, 01089 01090 void* contextPtr 01091 ); 01092 01093 01094 //-------------------------------------------------------------------------------------------------- 01110 //-------------------------------------------------------------------------------------------------- 01111 le_result_t le_msg_OpenSessionSync 01112 ( 01113 le_msg_SessionRef_t sessionRef 01114 ); 01115 01116 01117 //-------------------------------------------------------------------------------------------------- 01121 //-------------------------------------------------------------------------------------------------- 01122 void le_msg_CloseSession 01123 ( 01124 le_msg_SessionRef_t sessionRef 01125 ); 01126 01127 01128 //-------------------------------------------------------------------------------------------------- 01134 //-------------------------------------------------------------------------------------------------- 01135 le_msg_ProtocolRef_t le_msg_GetSessionProtocol 01136 ( 01137 le_msg_SessionRef_t sessionRef 01138 ); 01139 01140 01141 //-------------------------------------------------------------------------------------------------- 01147 //-------------------------------------------------------------------------------------------------- 01148 le_msg_ServiceRef_t le_msg_GetSessionService 01149 ( 01150 le_msg_SessionRef_t sessionRef 01151 ); 01152 01153 01154 //-------------------------------------------------------------------------------------------------- 01163 //-------------------------------------------------------------------------------------------------- 01164 le_result_t le_msg_GetClientUserId 01165 ( 01166 le_msg_SessionRef_t sessionRef, 01167 uid_t* userIdPtr 01168 ); 01169 01170 01171 // ======================================= 01172 // MESSAGE FUNCTIONS 01173 // ======================================= 01174 01175 //-------------------------------------------------------------------------------------------------- 01186 //-------------------------------------------------------------------------------------------------- 01187 le_msg_MessageRef_t le_msg_CreateMsg 01188 ( 01189 le_msg_SessionRef_t sessionRef 01190 ); 01191 01192 01193 //-------------------------------------------------------------------------------------------------- 01197 //-------------------------------------------------------------------------------------------------- 01198 void le_msg_AddRef 01199 ( 01200 le_msg_MessageRef_t msgRef 01201 ); 01202 01203 01204 //-------------------------------------------------------------------------------------------------- 01209 //-------------------------------------------------------------------------------------------------- 01210 void le_msg_ReleaseMsg 01211 ( 01212 le_msg_MessageRef_t msgRef 01213 ); 01214 01215 01216 //-------------------------------------------------------------------------------------------------- 01227 //-------------------------------------------------------------------------------------------------- 01228 bool le_msg_NeedsResponse 01229 ( 01230 le_msg_MessageRef_t msgRef 01231 ); 01232 01233 01234 //-------------------------------------------------------------------------------------------------- 01242 //-------------------------------------------------------------------------------------------------- 01243 void* le_msg_GetPayloadPtr 01244 ( 01245 le_msg_MessageRef_t msgRef 01246 ); 01247 01248 01249 //-------------------------------------------------------------------------------------------------- 01255 //-------------------------------------------------------------------------------------------------- 01256 size_t le_msg_GetMaxPayloadSize 01257 ( 01258 le_msg_MessageRef_t msgRef 01259 ); 01260 01261 01262 //-------------------------------------------------------------------------------------------------- 01266 //-------------------------------------------------------------------------------------------------- 01267 void le_msg_Send 01268 ( 01269 le_msg_MessageRef_t msgRef 01270 ); 01271 01272 01273 //-------------------------------------------------------------------------------------------------- 01279 //-------------------------------------------------------------------------------------------------- 01280 le_msg_SessionRef_t le_msg_GetSession 01281 ( 01282 le_msg_MessageRef_t msgRef 01283 ); 01284 01285 01286 //-------------------------------------------------------------------------------------------------- 01299 //-------------------------------------------------------------------------------------------------- 01300 void le_msg_RequestResponse 01301 ( 01302 le_msg_MessageRef_t msgRef, 01303 le_msg_ResponseCallback_t handlerFunc, 01304 void* contextPtr 01305 ); 01306 01307 01308 //-------------------------------------------------------------------------------------------------- 01335 //-------------------------------------------------------------------------------------------------- 01336 le_msg_MessageRef_t le_msg_RequestSyncResponse 01337 ( 01338 le_msg_MessageRef_t msgRef 01339 ); 01340 01341 01342 //-------------------------------------------------------------------------------------------------- 01354 //-------------------------------------------------------------------------------------------------- 01355 void le_msg_Respond 01356 ( 01357 le_msg_MessageRef_t msgRef 01358 ); 01359 01360 01361 // ======================================= 01362 // SERVICE FUNCTIONS 01363 // ======================================= 01364 01365 //-------------------------------------------------------------------------------------------------- 01371 //-------------------------------------------------------------------------------------------------- 01372 le_msg_ServiceRef_t le_msg_CreateService 01373 ( 01374 le_msg_ProtocolRef_t protocolRef, 01375 const char* serviceName 01376 ); 01377 01378 01379 //-------------------------------------------------------------------------------------------------- 01385 //-------------------------------------------------------------------------------------------------- 01386 void le_msg_DeleteService 01387 ( 01388 le_msg_ServiceRef_t serviceRef 01389 ); 01390 01391 01392 //-------------------------------------------------------------------------------------------------- 01398 //-------------------------------------------------------------------------------------------------- 01399 void le_msg_SetServiceOpenHandler 01400 ( 01401 le_msg_ServiceRef_t serviceRef, 01402 le_msg_SessionEventHandler_t handlerFunc, 01403 void* contextPtr 01404 ); 01405 01406 01407 //-------------------------------------------------------------------------------------------------- 01414 //-------------------------------------------------------------------------------------------------- 01415 void le_msg_SetServiceCloseHandler 01416 ( 01417 le_msg_ServiceRef_t serviceRef, 01418 le_msg_SessionEventHandler_t handlerFunc, 01419 void* contextPtr 01420 ); 01421 01422 01423 //-------------------------------------------------------------------------------------------------- 01430 //-------------------------------------------------------------------------------------------------- 01431 void le_msg_SetServiceRecvHandler 01432 ( 01433 le_msg_ServiceRef_t serviceRef, 01434 le_msg_ReceiveHandler_t handlerFunc, 01435 void* contextPtr 01436 ); 01437 01438 01439 //-------------------------------------------------------------------------------------------------- 01446 //-------------------------------------------------------------------------------------------------- 01447 void le_msg_SetServiceContextPtr 01448 ( 01449 le_msg_ServiceRef_t serviceRef, 01450 01451 void* contextPtr 01452 01453 ); 01454 01455 01456 //-------------------------------------------------------------------------------------------------- 01466 //-------------------------------------------------------------------------------------------------- 01467 void* le_msg_GetServiceContextPtr 01468 ( 01469 le_msg_ServiceRef_t serviceRef 01470 ); 01471 01472 01473 //-------------------------------------------------------------------------------------------------- 01479 //-------------------------------------------------------------------------------------------------- 01480 void le_msg_AdvertiseService 01481 ( 01482 le_msg_ServiceRef_t serviceRef 01483 ); 01484 01485 01486 //-------------------------------------------------------------------------------------------------- 01493 //-------------------------------------------------------------------------------------------------- 01494 void le_msg_HideService 01495 ( 01496 le_msg_ServiceRef_t serviceRef 01497 ); 01498 01499 //-------------------------------------------------------------------------------------------------- 01507 //-------------------------------------------------------------------------------------------------- 01508 const char* le_msg_GetServiceName 01509 ( 01510 le_msg_ServiceRef_t serviceRef 01511 ); 01512 01513 01514 //-------------------------------------------------------------------------------------------------- 01520 //-------------------------------------------------------------------------------------------------- 01521 le_msg_ProtocolRef_t le_msg_GetServiceProtocol 01522 ( 01523 le_msg_ServiceRef_t serviceRef 01524 ); 01525 01526 01527 //-------------------------------------------------------------------------------------------------- 01535 //-------------------------------------------------------------------------------------------------- 01536 le_msg_MessageRef_t le_msg_GetServiceRxMsg 01537 ( 01538 void 01539 ); 01540 01541 01542 //-------------------------------------------------------------------------------------------------- 01549 //-------------------------------------------------------------------------------------------------- 01550 #define LE_KILL_CLIENT(formatString, ...) \ 01551 { \ 01552 le_msg_MessageRef_t msgRef = le_msg_GetServiceRxMsg(); \ 01553 LE_FATAL_IF(msgRef == NULL, formatString, ##__VA_ARGS__); \ 01554 LE_EMERG(formatString, ##__VA_ARGS__); \ 01555 le_msg_CloseSession(le_msg_GetSession(msgRef)); \ 01556 } 01557 01558 #endif // LEGATO_MESSAGING_INCLUDE_GUARD