My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
NetSendStr.h
Go to the documentation of this file.
1 #ifndef NETSENDSTR_H
2 #define NETSENDSTR_H
3 
11 #include "gcp/control/code/unix/libunix_src/common/netbuf.h"
12 #include "gcp/control/code/unix/libunix_src/common/netobj.h"
13 
14 #define NET_SEND_HANDLER(fn) void (fn)(void* arg)
15 
16 #ifdef NET_ERROR_HANDLER
17 #undef NET_ERROR_HANDLER
18 #endif
19 
20 #define NET_ERROR_HANDLER(fn) void (fn)(void* arg)
21 
22 namespace gcp {
23 
24  namespace control {
25  class NetSendStr;
26  };
27 
28  namespace util {
29 
30  class NetSendStr {
31  public:
32 
33  enum NetSendId {
34 
35  // The message body is being sent
36 
37  NET_SEND_DATA = gcp::control::NetSendStr::NET_SEND_DATA,
38 
39  // The message has been completely sent
40 
41  NET_SEND_DONE = gcp::control::NetSendStr::NET_SEND_DONE,
42 
43  // Closed connection detected at start of message
44 
45  NET_SEND_CLOSED = gcp::control::NetSendStr::NET_SEND_CLOSED,
46 
47  // I/O error detected while sending
48 
49  NET_SEND_ERROR = gcp::control::NetSendStr::NET_SEND_ERROR
50  };
51 
55  NetSendStr();
56 
60  NetSendStr(int fd, unsigned int size);
61 
65  virtual ~NetSendStr();
66 
70  void attach(int fd);
71 
76  void setBuffer(void* buffer, unsigned int size);
77 
82  NetSendId send();
83 
88  NetSendId send(int fd);
89 
93  NetSendId state();
94 
99  int getFd();
100 
104  void startPut(int opcode);
105 
109  void endPut();
110 
114  void putChar(int ndata, unsigned char *data);
115 
119  void putShort(int ndata, unsigned short *data);
120 
124  void putInt(int ndata, unsigned int *data);
125 
129  void putFloat(int ndata, float *data);
130 
134  void putDouble(int ndata, double *data);
135 
139  void putObj(const NetObjTable* types, int id, void *obj);
140 
144  void incNput(int nbytes);
145 
149  void installSendHandler(NET_SEND_HANDLER(*handler), void* arg);
150 
154  void installErrorHandler(NET_ERROR_HANDLER(*handler), void* arg);
155 
156  private:
157 
161  void privateConstructor(int fd, unsigned int size);
162 
166  gcp::control::NetSendStr* netStream_;
167 
171  bool netBufAllocated_;
172 
176  bool attached_;
177 
182  NetSendId privateSend(int fd);
183 
187  NetSendId privateState(gcp::control::NetSendStr::NetSendId id);
188 
189  // Handler functions
190 
194  NET_SEND_HANDLER(*sendHandler_);
195 
199  void* sendArg_;
200 
204  NET_SEND_HANDLER(*errorHandler_);
205 
209  void* errorArg_;
210 
211  }; // End class NetSendStr
212 
213  } // End namespace util
214 } // End namespace gcp
215 
216 
217 #endif // End #ifndef
218 
219 
void attach(int fd)
Definition: NetSendStr.cc:92
Definition: NetSendStr.h:30
void putDouble(int ndata, double *data)
Definition: NetSendStr.cc:297
NetSendStr()
Definition: NetSendStr.cc:21
void putShort(int ndata, unsigned short *data)
Definition: NetSendStr.cc:270
virtual ~NetSendStr()
Definition: NetSendStr.cc:83
NetSendId state()
Definition: NetSendStr.cc:227
void putInt(int ndata, unsigned int *data)
Definition: NetSendStr.cc:279
void putFloat(int ndata, float *data)
Definition: NetSendStr.cc:288
int getFd()
Definition: NetSendStr.cc:235
void installSendHandler(NET_SEND_HANDLER(*handler), void *arg)
Definition: NetSendStr.cc:65
void endPut()
Definition: NetSendStr.cc:252
void setBuffer(void *buffer, unsigned int size)
Definition: NetSendStr.cc:101
Definition: netobj.h:69
Definition: netbuf.h:173
void startPut(int opcode)
Definition: NetSendStr.cc:243
Definition: tVideoCapabilitiesEml.cc:67
void putObj(const NetObjTable *types, int id, void *obj)
Definition: NetSendStr.cc:306
void putChar(int ndata, unsigned char *data)
Definition: NetSendStr.cc:261
NetSendId send()
Definition: NetSendStr.cc:116
void incNput(int nbytes)
Definition: NetSendStr.cc:315
void installErrorHandler(NET_ERROR_HANDLER(*handler), void *arg)
Definition: NetSendStr.cc:74