sipXcallLib home page


TaoMessage.h
Go to the documentation of this file.
1 //
2 // Copyright (C) 2004-2006 SIPfoundry Inc.
3 // Licensed by SIPfoundry under the LGPL license.
4 //
5 // Copyright (C) 2004-2006 Pingtel Corp. All rights reserved.
6 // Licensed to SIPfoundry under a Contributor Agreement.
7 //
8 // $$
10 
11 #ifndef _TaoMessage_h_
12 #define _TaoMessage_h_
13 
14 #if _MSC_VER >= 1000
15 #pragma once
16 #endif // _MSC_VER >= 1000
17 
18 // SYSTEM INCLUDES
19 
20 // APPLICATION INCLUDES
21 #include "os/OsMsg.h"
22 #include "net/HttpMessage.h"
23 #include "tao/TaoDefs.h"
24 #include "tao/TaoDefs.h"
26 
27 // Field names
28 #define TAO_MESSAGE_CONTENT_TYPE "TAO-MESSAGE"
29 #define TAO_MESSAGE_ID_FIELD "TAO-MESSAGE-ID"
30 #define TAO_MESSAGE_TYPE_FIELD "TAO-MESSAGE-TYPE"
31 #define TAO_MESSAGE_SUBTYPE_FIELD "TAO-MESSAGE-SUBTYPE"
32 #define TAO_MESSAGE_CMD_FIELD "TAO-MESSAGE-CMD"
33 #define TAO_MESSAGE_HANDLE_FIELD "TAO-MESSAGE-HANDLE"
34 #define TAO_MESSAGE_SOCKET_FIELD "TAO-MESSAGE-SOCKET"
35 #define TAO_MESSAGE_ARGCNT_FIELD "TAO-MESSAGE-ARGCNT"
36 #define TAO_MESSAGE_ARGLIST_FIELD "TAO-MESSAGE-ARGLIST"
37 #define TAO_MESSAGE_QUEUEHANDLE_FIELD "TAO-MESSAGE-QUEUEHANDLE"
38 
39 // MACROS
40 // EXTERNAL FUNCTIONS
41 // EXTERNAL VARIABLES
42 // CONSTANTS
43 // STRUCTS
44 // TYPEDEFS
45 //#define TAOMSG_DEBUG
46 // FORWARD DECLARATIONS
47 
48 //:This class is for carrying information in Tao subsystems, typically as carrier
49 // of information between server and client transports. It maybe subclassed for
50 // different message types.
51 class TaoMessage : public OsMsg
52 {
53 /* //////////////////////////// PUBLIC //////////////////////////////////// */
54 public:
55 
56  // MsgType categories defined for use by the system
58  {
60 
69 
78 
79  EVENT = 17,
80 
84  };
85 
86  // Function categories defined for use by the system
88  {
89 /* ----------------------------- PROVIDER --------------------------------- */
91 
92  CREATE_CALL = 0x01,
94  GET_ADDRESS = 0x03,
95  GET_ADDRESSES = 0x04,
96  GET_CALLS = 0x05,
98  GET_PROVIDER = 0x07,
100  GET_STATE = 0x09,
101 
103  GET_TERMINAL = 0x0b,
105 
107  NUM_CALLS = 0x0e,
111  SHUTDOWN = 0x12,
112 /* ----------------------------- ADDRESS --------------------------------- */
123  GET_NAME = 0x2a,
125 
129  NUM_FORWARDS = 0x2f,
136 
137 /* ----------------------------- CALL ------------------------------------- */
138  ADD_PARTY = 0x40,
139  CONFERENCE = 0x41,
140  CONNECT = 0x42,
142  CONSULT = 0x44,
143  DROP = 0x45,
144  DROP_RESULT = 0x46,
148 
155  TRANSFER_CON = 0x50,
156  TRANSFER_SEL = 0x51,
157  CALL_HOLD = 0x52,
158  CALL_UNHOLD = 0x53,
163 
164 /* ----------------------------- CONNECTION ------------------------------- */
165  ACCEPT = 0x60,
166  DISCONNECT = 0x61,
167  GET_CALL = 0x62,
170  PARK = 0x65,
171  REDIRECT = 0x66,
172  REJECT = 0x67,
174  GET_TO_FIELD = 0x69,
176 /* ----------------------------- TERMCONNECTION --------------------------- */
177  ANSWER = 0x70,
178  HOLD = 0x71,
179  UNHOLD = 0x72,
182  START_TONE = 0x75,
183  STOP_TONE = 0x76,
184  STOP_PLAY = 0x77,
185  IS_LOCAL = 0x78,
190 /* ----------------------------- TERMINAL --------------------------------- */
195  GET_CONFIG = 0x84,
197 
200  PICKUP = 0x88,
204 /* ----------------------------- PHONEBUTTON --------------------------------- */
205  BUTTON_PRESS = 0x90,
206  BUTTON_DOWN = 0x91,
207  BUTTON_UP = 0x92,
211 /* ----------------------------- PHONEHOOKSWITCH --------------------------------- */
215 /* ----------------------------- PHONELAMP --------------------------------- */
220 /* ----------------------------- PHONEDISPALY --------------------------------- */
227 /* ----------------------------- PHONEMIC --------------------------------- */
228  MIC_GET_GAIN = 0xc0,
229  MIC_SET_GAIN = 0xc1,
230 /* ----------------------------- PHONERINGER --------------------------------- */
239  RINGER_IS_ON = 0xca,
240 /* ----------------------------- PHONESPEAKER --------------------------------- */
244 /* ----------------------------- PHONEGROUP --------------------------------- */
251 
255 
257  };
258 
259 #ifdef TAOMSG_DEBUG
260  static unsigned int mMsgCnt;
261 #endif
262 /* ============================ CREATORS ================================== */
263 
264  TaoMessage();
265 
266  TaoMessage(const UtlString& msgString);
267  //:Constructor
268 
269  TaoMessage(UtlString& msgString, UtlString delimiter);
270  //:Constructor
271 
272  TaoMessage(const unsigned char msgType,
273  const unsigned char cmd,
274  const int msgId,
275  TaoObjHandle handle,
276  TaoObjHandle socket,
277  const int argCnt,
278  const UtlString& agrList);
279  //:Constructor
280 
281  TaoMessage(TaoListenerEventMessage& rEventMessage, TaoObjHandle hSocket);
282 
283  TaoMessage(const TaoMessage& rTaoMessage);
284  //:Copy constructor
285 
286  TaoMessage(OsMsg& msgString);
287  //:Constructor
288 
289  virtual OsMsg* createCopy(void) const;
290  //:Create a copy of this msg object (which may be of a derived type)
291 
292  virtual
293  ~TaoMessage();
294  //:Destructor
295 
296 /* ============================ MANIPULATORS ============================== */
297 
298  TaoMessage& operator=(const TaoMessage& rhs);
299  //:Assignment operator
300 
301  void setCmd(TaoMsgCmds cmd);
302 
303  void setSocket(TaoObjHandle handle);
304 
305  void setMsgID(unsigned int id);
306 
307  void setArgCnt(int cnt);
308 
309  void setArgList(UtlString& argList);
310  void setArgList(const char* szArgList);
311 
312  void setObjHandle(TaoObjHandle handle);
313 
314  void setMsgQueueHandle(TaoObjHandle handle);
315 
316 /* ============================ ACCESSORS ================================= */
317 
319  //:Return pointer to message queue owner.
320 
321  TaoObjHandle getSocket(void) const { return mSocketHandle; };
322  //:Return pointer to OsConnectionSocket.
323 
324  unsigned int getMsgID(void) const { return mMsgID; };
325  //:Return the used size of the message in bytes
326 
327  TaoObjHandle getTaoObjHandle(void) const { return mTaoObjHandle; };
328  //:Return the mTaoObjHandle object handle
329 
330  unsigned int getArgCnt(void) const { return mArgCnt; };
331  //:Return the used size of the message in bytes
332 
333  const char* getArgList(void) const { return mArgList.data(); };
334  //:Return the used size of the message in bytes
335 
336  unsigned char getCmd() { return mCmd; };
337 
338  void getBytes(UtlString* bytes, int* length);
339  //: Get the bytes for the complete message, using the mHttpMsg's getBytes method.
340  // Suitable for streaming or sending over a socket
343 
344 /* ============================ INQUIRY =================================== */
345 
346 /* //////////////////////////// PROTECTED ///////////////////////////////// */
347 protected:
348  void createHTTPMsg(TaoMessage& rTaoMessage);
349 
350 /* //////////////////////////// PRIVATE /////////////////////////////////// */
351 private:
352 /* ============================ FUNCTIONS ================================= */
353  void serialize();
354  // construct mBody with other class members
355 
356  void deSerialize();
357  // construct class members with mBody
358 
359 /* ============================ VARIABLES ================================= */
360 
361  TaoObjHandle mTaoObjHandle; // the PTAPI object associated with the msg
362  TaoObjHandle mSocketHandle; // socket on the transport
363  TaoObjHandle mMessageQueueHandle; // message queue owner i fnon zero
364 
365  unsigned int mMsgID; // the identifier of this msg
366  unsigned int mArgCnt; // the number of arguments in the msg
367  UtlString mArgList; // argument list
368  UtlBoolean mbDirty; // Is the message dirty (needs to be reserialized)
369 
370  unsigned char mCmd;
371 #ifdef USE_HTTPMSG
372  HttpMessage mHttpMsg; // HTTPMessage form of the TaoMessage
373 #endif
375  UtlString mBody;
376 
377 
378 };
379 
380 #endif // _TaoMessage_h_
Definition: TaoMessage.h:128
TaoMsgCmds
Definition: TaoMessage.h:87
Definition: TaoMessage.h:196
Definition: TaoMessage.h:133
Definition: TaoMessage.h:68
Definition: TaoMessage.h:226
const char * getArgList(void) const
Definition: TaoMessage.h:333
Definition: TaoMessage.h:104
Definition: TaoMessage.h:126
Definition: TaoMessage.h:216
Definition: TaoMessage.h:63
Definition: TaoMessage.h:142
TaoObjHandle mMessageQueueHandle
Definition: TaoMessage.h:363
Definition: TaoMessage.h:182
Definition: TaoMessage.h:172
Definition: TaoMessage.h:131
Definition: TaoMessage.h:51
Definition: TaoMessage.h:94
Definition: TaoMessage.h:77
Definition: TaoMessage.h:213
Definition: TaoMessage.h:114
Definition: TaoMessage.h:64
Definition: TaoMessage.h:173
Definition: TaoMessage.h:166
Definition: TaoMessage.h:150
Definition: TaoMessage.h:113
UtlBoolean mbDirty
Definition: TaoMessage.h:368
Definition: TaoMessage.h:206
Definition: TaoMessage.h:194
Definition: TaoMessage.h:193
void setObjHandle(TaoObjHandle handle)
Definition: TaoMessage.cpp:411
Definition: TaoMessage.h:161
Definition: TaoMessage.h:153
void getBytes(UtlString *bytes, int *length)
Definition: TaoMessage.cpp:427
Definition: TaoMessage.h:181
unsigned int getMsgID(void) const
Definition: TaoMessage.h:324
Definition: TaoMessage.h:171
Definition: TaoMessage.h:139
Definition: TaoMessage.h:200
Definition: TaoMessage.h:97
Definition: TaoMessage.h:98
Definition: TaoMessage.h:237
Definition: TaoMessage.h:175
Definition: TaoMessage.h:124
Definition: TaoMessage.h:198
Definition: TaoMessage.h:231
Definition: TaoMessage.h:138
UtlString mArgList
Definition: TaoMessage.h:367
Definition: TaoMessage.h:246
Definition: TaoMessage.h:224
Definition: TaoMessage.h:83
Definition: TaoMessage.h:109
Definition: TaoMessage.h:135
Definition: TaoMessage.h:212
Definition: TaoMessage.h:253
Definition: TaoMessage.h:225
Definition: TaoMessage.h:177
unsigned int mMsgID
Definition: TaoMessage.h:365
Definition: TaoMessage.h:170
Definition: TaoMessage.h:205
void setMsgQueueHandle(TaoObjHandle handle)
Definition: TaoMessage.cpp:324
Definition: TaoMessage.h:152
Definition: TaoMessage.h:252
TaoObjHandle mTaoObjHandle
Definition: TaoMessage.h:361
Definition: TaoMessage.h:228
Definition: TaoMessage.h:65
TaoMessage()
Definition: TaoMessage.cpp:31
UtlString mBody
Definition: TaoMessage.h:375
Definition: TaoMessage.h:127
Definition: TaoMessage.h:229
Definition: TaoMessage.h:180
Definition: TaoMessage.h:201
virtual ~TaoMessage()
Definition: TaoMessage.cpp:239
Definition: TaoMessage.h:108
int mBodyLength
Definition: TaoMessage.h:374
Definition: TaoMessage.h:234
Definition: TaoMessage.h:146
Definition: TaoMessage.h:90
TaoMsgTypes
Definition: TaoMessage.h:57
Definition: TaoMessage.h:81
Definition: TaoMessage.h:102
Definition: TaoMessage.h:130
Definition: TaoMessage.h:76
Definition: TaoMessage.h:95
unsigned int mArgCnt
Definition: TaoMessage.h:366
Definition: TaoMessage.h:235
Definition: TaoMessage.h:147
void setArgList(UtlString &argList)
Definition: TaoMessage.cpp:390
Definition: TaoMessage.h:151
Definition: TaoListenerEventMessage.h:78
Definition: TaoMessage.h:111
Definition: TaoMessage.h:116
unsigned char mCmd
Definition: TaoMessage.h:370
Definition: TaoMessage.h:134
Definition: TaoMessage.h:59
Definition: TaoMessage.h:241
TaoObjHandle getTaoObjHandle(void) const
Definition: TaoMessage.h:327
Definition: TaoMessage.h:92
Definition: TaoMessage.h:221
Definition: TaoMessage.h:185
Definition: TaoMessage.h:120
Definition: TaoMessage.h:245
Definition: TaoMessage.h:165
Definition: TaoMessage.h:222
Definition: TaoMessage.h:243
Definition: TaoMessage.h:93
Definition: TaoMessage.h:71
Definition: TaoMessage.h:189
Definition: TaoMessage.h:199
Definition: TaoMessage.h:117
Definition: TaoMessage.h:82
Definition: TaoMessage.h:209
Definition: TaoMessage.h:141
Definition: TaoMessage.h:207
Definition: TaoMessage.h:110
Definition: TaoMessage.h:256
Definition: TaoMessage.h:119
Definition: TaoMessage.h:123
void createHTTPMsg(TaoMessage &rTaoMessage)
param: bytes - gets allocated and must be freed param: length - the length of bytes ...
Definition: TaoMessage.cpp:248
Definition: TaoMessage.h:143
Definition: TaoMessage.h:174
Definition: TaoMessage.h:223
Definition: TaoMessage.h:232
TaoObjHandle getMsgQueueHandle(void) const
Definition: TaoMessage.h:318
Definition: TaoMessage.h:168
Definition: TaoMessage.h:160
Definition: TaoMessage.h:132
Definition: TaoMessage.h:239
Definition: TaoMessage.h:107
Definition: TaoMessage.h:249
Definition: TaoMessage.h:72
TaoObjHandle getSocket(void) const
Definition: TaoMessage.h:321
Definition: TaoMessage.h:183
Definition: TaoMessage.h:179
void setSocket(TaoObjHandle handle)
Definition: TaoMessage.cpp:337
Definition: TaoMessage.h:254
Definition: TaoMessage.h:191
Definition: TaoMessage.h:236
Definition: TaoMessage.h:238
TaoMessage & operator=(const TaoMessage &rhs)
Definition: TaoMessage.cpp:295
Definition: TaoMessage.h:210
Definition: TaoMessage.h:218
Definition: TaoMessage.h:217
Definition: TaoMessage.h:118
unsigned int getArgCnt(void) const
Definition: TaoMessage.h:330
Definition: TaoMessage.h:70
Definition: TaoMessage.h:75
Definition: TaoMessage.h:242
Definition: TaoMessage.h:96
Definition: TaoMessage.h:156
Definition: TaoMessage.h:186
Definition: TaoMessage.h:188
Definition: TaoMessage.h:169
unsigned char getCmd()
Definition: TaoMessage.h:336
Definition: TaoMessage.h:74
Definition: TaoMessage.h:99
Definition: TaoMessage.h:247
Definition: TaoMessage.h:250
Definition: TaoMessage.h:115
Definition: TaoMessage.h:187
virtual OsMsg * createCopy(void) const
Definition: TaoMessage.cpp:284
Definition: TaoMessage.h:167
Definition: TaoMessage.h:154
Definition: TaoMessage.h:178
Definition: TaoMessage.h:149
Definition: TaoMessage.h:61
void setCmd(TaoMsgCmds cmd)
Definition: TaoMessage.cpp:363
Definition: TaoMessage.h:62
Definition: TaoMessage.h:184
Definition: TaoMessage.h:248
Definition: TaoMessage.h:159
Definition: TaoMessage.h:67
Definition: TaoMessage.h:208
Definition: TaoMessage.h:202
Definition: TaoMessage.h:106
Definition: TaoMessage.h:79
uintptr_t TaoObjHandle
Definition: TaoDefs.h:32
Definition: TaoMessage.h:192
Definition: TaoMessage.h:66
Definition: TaoMessage.h:122
Definition: TaoMessage.h:155
Definition: TaoMessage.h:158
void setMsgID(unsigned int id)
Definition: TaoMessage.cpp:350
void deSerialize()
Definition: TaoMessage.cpp:463
Definition: TaoMessage.h:100
Definition: TaoMessage.h:233
Definition: TaoMessage.h:219
Definition: TaoMessage.h:157
void serialize()
Definition: TaoMessage.cpp:440
Definition: TaoMessage.h:121
TaoObjHandle mSocketHandle
Definition: TaoMessage.h:362
void setArgCnt(int cnt)
Definition: TaoMessage.cpp:377
Definition: TaoMessage.h:203
Definition: TaoMessage.h:195
Definition: TaoMessage.h:145
Definition: TaoMessage.h:144
Definition: TaoMessage.h:129
Definition: TaoMessage.h:103
Definition: TaoMessage.h:73
Definition: TaoMessage.h:214
Definition: TaoMessage.h:140
Definition: TaoMessage.h:162