ThingWorx C SDK
twMessaging.h
1 /*
2  * Copyright (C) 2015 ThingWorx Inc.
3  *
4  * Portable ThingWorx Binary Messaging layer
5  */
6 
7 #include "twMessages.h"
8 #include "twWebsocket.h"
9 #include "twList.h"
10 
11 #ifndef TW_MESSAGING_H
12 #define TW_MESSAGING_H
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 /******************************************/
19 /* Message tracking components */
20 /******************************************/
21 typedef int (*message_cb) (struct twWs * ws, struct twMessage * msg);
22 typedef int (*response_cb) (uint32_t id, enum msgCodeEnum code, char * reason, twInfoTable * content);
23 typedef int (*eventcb) (struct twWs * ws, const char * data, size_t length);
24 
25 /***************************************/
26 /* Entities below this line are */
27 /* typically not directtly used */
28 /* by application developers */
29 /***************************************/
30 
31 /* Structures used to track request & responses */
32 typedef struct twRequestCallbackStruct {
33  message_cb cb;
34  enum entityTypeEnum entityType;
35  char * entityName;
36  enum characteristicEnum characteristicType;
37  char * characteristicName;
39 
40 typedef struct twResponseCallbackStruct {
41  char received;
42  response_cb cb;
43  uint32_t requestId;
44  uint32_t sessionId;
45  uint64_t expirationTime;
46  enum msgCodeEnum code;
47  twInfoTable * content;
49 
50 /* Central message handler - this is a singleton */
51 typedef struct twMessageHandler {
52  twWs * ws;
53  twList * responseCallbackList;
54  twList * incomingRequestCallbacks;
55  twList * multipartMessageList;
56  message_cb defaultRequestCallback;
57  eventcb on_ws_connected;
58  eventcb on_ws_close;
59  eventcb on_ping;
60  eventcb on_pong;
61  TW_MUTEX mtx;
63 
64 twMessageHandler * twMessageHandler_Instance(twWs * ws);
65 int twMessageHandler_Delete(twMessageHandler * handler);
66 int twMessageHandler_CleanupOldMessages(twMessageHandler * handler);
67 void twMessageHandler_msgHandlerTask(DATETIME now, void * params);
68 
69 int twMessageHandler_RegisterConnectCallback(twMessageHandler * handler, eventcb cb);
70 int twMessageHandler_RegisterCloseCallback(twMessageHandler * handler, eventcb cb);
71 int twMessageHandler_RegisterPingCallback(twMessageHandler * handler, eventcb cb);
72 int twMessageHandler_RegisterPongCallback(twMessageHandler * handler, eventcb cb);
73 int twMessageHandler_RegisterDefaultRequestCallback(twMessageHandler * handler, message_cb cb);
74 int twMessageHandler_RegisterRequestCallback(twMessageHandler * handler, message_cb cb, enum entityTypeEnum entityType, char * entityName, enum characteristicEnum characteristicType, char * characteristicName);
75 int twMessageHandler_RegisterResponseCallback(twMessageHandler * handler, response_cb cb, uint32_t requestId, DATETIME expirationTime);
76 
77 twResponseCallbackStruct * twMessageHandler_GetCompletedResponseStruct(twMessageHandler * handler, uint32_t id);
78 int twMessageHandler_UnegisterRequestCallback(twMessageHandler * handler, enum entityTypeEnum entityType, char * entityName, enum characteristicEnum characteristicType, char * characteristicName);
79 int twMessageHandler_UnegisterResponseCallback(twMessageHandler * handler, uint32_t requestId);
80 
81 #ifdef __cplusplus
82 }
83 #endif
84 
85 #endif
86 
87 
88 
89 
Websocket client abstraction layer.
#define TW_MUTEX
For Linux builds a TW_MUTEX is a pthread_mutex_t.
Definition: twLinux-openssl.h:81
Definition: twMessaging.h:32
Linked list structure definition.
Definition: twList.h:46
Definition: twMessaging.h:51
entityTypeEnum
Definition: twDefinitions.h:113
Definition: twMessaging.h:40
msgCodeEnum
Enumeration of HTTP message codes.
Definition: twDefinitions.h:74
characteristicEnum
Definition: twDefinitions.h:146
Definition: twMessages.h:32
Info table base structure.
Definition: twInfoTable.h:418
Websocket entity structure definition.
Definition: twWebsocket.h:65