sipxtacklib  Version 3.3
SipProtocolServerBase.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 
12 #ifndef _SipProtocolServerBase_h_
13 #define _SipProtocolServerBase_h_
14 
15 // SYSTEM INCLUDES
16 //#include <...>
17 
18 // APPLICATION INCLUDES
19 #include <net/SipClient.h>
20 #include <os/OsServerSocket.h>
21 #include <os/OsTask.h>
22 #include <os/OsServerTask.h>
23 #include <os/OsLockingList.h>
24 #include <os/OsRWMutex.h>
25 #include <utl/UtlHashMap.h>
26 
27 // DEFINES
28 // MACROS
29 // EXTERNAL FUNCTIONS
30 // EXTERNAL VARIABLES
31 // CONSTANTS
32 // STRUCTS
33 // TYPEDEFS
34 // FORWARD DECLARATIONS
35 class SipUserAgent;
37 
38 //:Class short description which may consist of multiple lines (note the ':')
39 // Class detailed description which may extend to multiple lines
40 class SipProtocolServerBase : public OsTask
41 {
42 /* //////////////////////////// PUBLIC //////////////////////////////////// */
43 public:
44 
45 /* ============================ CREATORS ================================== */
46 
48  const char* protocolString,
49  const char* taskName);
50  //:Default constructor
51 
52 
53  virtual
55  //:Destructor
56 
57 /* ============================ MANIPULATORS ============================== */
58 
59  virtual UtlBoolean startListener();
60 
61  virtual void shutdownListener() = 0;
62 
63 
64  UtlBoolean send(SipMessage* message, const char* hostAddress,
65  int hostPort = SIP_PORT);
66 
67  virtual int run(void* pArg) = 0;
68 
69  void removeOldClients(long oldTime);
70 
71 /* ============================ ACCESSORS ================================= */
72 
73  int getClientCount();
74 
75  virtual void printStatus();
76 
77  virtual UtlBoolean isOk();
78 
79 /* ============================ INQUIRY =================================== */
80 
81 /* //////////////////////////// PROTECTED ///////////////////////////////// */
82 protected:
84 
85  SipClient* createClient(const char* hostAddress,
86  int hostPort,
87  const char* localIp);
88 
89  void releaseClient(SipClient* client);
90 
91  void startClients();
92 
93  void shutdownClients();
94 
95  UtlBoolean clientExists(SipClient* client);
96 
97  void addClient(SipClient* client);
98 
99  virtual OsSocket* buildClientSocket(int hostPort, const char* hostAddress, const char* localIp) = 0;
100 
101  UtlString mProtocolString;
102  UtlString mDefaultIp;
105  UtlHashMap mServerSocketMap;
106  UtlHashMap mServerPortMap;
107  UtlHashMap mServers;
109 
110 
111 
112 /* //////////////////////////// PRIVATE /////////////////////////////////// */
113 private:
114 
115  UtlBoolean waitForClientToWrite(SipClient* client);
116 
117  SipClient* getClient(const char* hostAddress,
118  int hostPort,
119  const char* localIp);
120 
121  void deleteClient(SipClient* client);
122 
123  OsRWMutex mClientLock;
124  OsLockingList mClientList;
125 
126  SipProtocolServerBase(const SipProtocolServerBase& rSipProtocolServerBase);
127  //: disable Copy constructor
128 
129  SipProtocolServerBase& operator=(const SipProtocolServerBase& rhs);
130  //:disable Assignment operator
131 
132 };
133 
134 /* ============================ INLINE METHODS ============================ */
135 
136 #endif // _SipProtocolServerBase_h_
UtlHashMap mServers
Definition: SipProtocolServerBase.h:107
SipUserAgent * mSipUserAgent
Definition: SipProtocolServerBase.h:104
void shutdownClients()
Definition: SipProtocolServerBase.cpp:665
Transaction and Transport manager for SIP stack.
Definition: SipUserAgent.h:157
Definition: SipTcpServer.h:38
void removeOldClients(long oldTime)
Definition: SipProtocolServerBase.cpp:562
Definition: SipClient.h:38
void releaseClient(SipClient *client)
Definition: SipProtocolServerBase.cpp:134
virtual void printStatus()
Definition: SipProtocolServerBase.cpp:711
virtual UtlBoolean isOk()
Definition: SipProtocolServerBase.cpp:348
Definition: SipProtocolServerBase.h:40
SipProtocolServerBase(SipUserAgent *userAgent, const char *protocolString, const char *taskName)
Definition: SipProtocolServerBase.cpp:35
Specialization of HttpMessage to contain and manipulate SIP messages.
Definition: SipMessage.h:343
SipServerBrokerListener * mpServerBrokerListener
Definition: SipProtocolServerBase.h:108
#define SIP_PORT
Definition: SipMessage.h:256
void addClient(SipClient *client)
Definition: SipProtocolServerBase.cpp:683
UtlHashMap mServerSocketMap
Definition: SipProtocolServerBase.h:105
virtual OsSocket * buildClientSocket(int hostPort, const char *hostAddress, const char *localIp)=0
UtlHashMap mServerPortMap
Definition: SipProtocolServerBase.h:106
UtlBoolean clientExists(SipClient *client)
Definition: SipProtocolServerBase.cpp:691
virtual ~SipProtocolServerBase()
Definition: SipProtocolServerBase.cpp:53
void startClients()
Definition: SipProtocolServerBase.cpp:654
SipClient * createClient(const char *hostAddress, int hostPort, const char *localIp)
Definition: SipProtocolServerBase.cpp:219
virtual UtlBoolean startListener()
Definition: SipProtocolServerBase.cpp:162
UtlString mDefaultIp
Definition: SipProtocolServerBase.h:102
UtlBoolean send(SipMessage *message, const char *hostAddress, int hostPort=SIP_PORT)
Definition: SipProtocolServerBase.cpp:76
UtlString mProtocolString
Definition: SipProtocolServerBase.h:101
int mDefaultPort
Definition: SipProtocolServerBase.h:103
virtual int run(void *pArg)=0
virtual void shutdownListener()=0
int getClientCount()
Definition: SipProtocolServerBase.cpp:678

sipXtackLib home page