ThingWorx C SDK
twMessaging.h
1 /*
2  * Copyright 2017, PTC, 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 (*dumpLog_cb) ();
23 typedef int (*response_cb) (uint32_t id, enum msgCodeEnum code, char * reason, twInfoTable * content);
24 typedef int (*eventcb) (struct twWs * ws, const char * data, size_t length);
25 
26 /***************************************/
27 /* Entities below this line are */
28 /* typically not directtly used */
29 /* by application developers */
30 /***************************************/
31 
32 /* Structures used to track request & responses */
33 typedef struct twRequestCallbackStruct {
34  message_cb cb;
35  enum entityTypeEnum entityType;
36  char * entityName;
37  enum characteristicEnum characteristicType;
38  char * characteristicName;
40 
41 typedef struct twResponseCallbackStruct {
42  char received;
43  response_cb cb;
44  uint32_t requestId;
45  uint32_t sessionId;
46  uint64_t expirationTime;
47  enum msgCodeEnum code;
48  twInfoTable * content;
50 
51 /* Central message handler - this is a singleton */
52 typedef struct twMessageHandler {
53  twWs * ws;
54  twList * responseCallbackList;
55  twList * incomingRequestCallbacks;
56  twList * multipartMessageList;
57  message_cb defaultRequestCallback;
58  dumpLog_cb dumpIncomingMsgList;
59  eventcb on_ws_connected;
60  eventcb on_ws_close;
61  eventcb on_ping;
62  eventcb on_pong;
63  TW_MUTEX mtx;
65 
66 twMessageHandler * twMessageHandler_Instance(twWs * ws);
67 int twMessageHandler_Delete(twMessageHandler * handler);
68 int twMessageHandler_CleanupOldMessages(twMessageHandler * handler);
69 void twMessageHandler_msgHandlerTask(DATETIME now, void * params);
70 
71 int twMessageHandler_RegisterConnectCallback(twMessageHandler * handler, eventcb cb);
72 int twMessageHandler_RegisterCloseCallback(twMessageHandler * handler, eventcb cb);
73 int twMessageHandler_RegisterPingCallback(twMessageHandler * handler, eventcb cb);
74 int twMessageHandler_RegisterPongCallback(twMessageHandler * handler, eventcb cb);
75 int twMessageHandler_RegisterDefaultRequestCallback(twMessageHandler * handler, message_cb cb);
76 int twMessageHandler_RegisterDumpIncomingMsgListCallback(twMessageHandler * handler, dumpLog_cb cb);
77 int twMessageHandler_RegisterRequestCallback(twMessageHandler * handler, message_cb cb, enum entityTypeEnum entityType, char * entityName, enum characteristicEnum characteristicType, char * characteristicName);
78 int twMessageHandler_RegisterResponseCallback(twMessageHandler * handler, response_cb cb, uint32_t requestId, DATETIME expirationTime);
79 
80 twResponseCallbackStruct * twMessageHandler_GetCompletedResponseStruct(twMessageHandler * handler, uint32_t id);
81 int twMessageHandler_UnegisterRequestCallback(twMessageHandler * handler, enum entityTypeEnum entityType, char * entityName, enum characteristicEnum characteristicType, char * characteristicName);
82 int twMessageHandler_UnegisterResponseCallback(twMessageHandler * handler, uint32_t requestId);
83 
84 #ifdef __cplusplus
85 }
86 #endif
87 
88 #endif
89 
90 
91 
92 
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:33
Linked list structure definition.
Definition: twList.h:59
Definition: twMessaging.h:52
entityTypeEnum
Definition: twDefinitions.h:114
Definition: twMessaging.h:41
msgCodeEnum
Enumeration of HTTP message codes.
Definition: twDefinitions.h:74
characteristicEnum
Definition: twDefinitions.h:147
Definition: inftree9.h:24
Definition: twMessages.h:37
Info table base structure.
Definition: twInfoTable.h:418
Websocket entity structure definition.
Definition: twWebsocket.h:87