cis_config
CisInterface.hpp
1 extern "C" {
2 #include "CisInterface.h"
3 };
4 
6 #ifndef CISINTERFACE_HPP_
7 #define CISINTERFACE_HPP_
8 
17 class CisInput {
18  cisInput_t _pi;
19 public:
20 
26  CisInput(const char *name) : _pi(cisInput(name)) {}
27 
29  CisInput(cisInput_t x) : _pi(x) {}
30 
37  CisInput(const char *name, const char *fmt) : _pi(cisInputFmt(name, fmt)) {}
38 
42  void _destroy_pi() { cis_free(&_pi); }
43 
49 
54  cisInput_t pi() {
55  return _pi;
56  };
57 
67  int recv(char *data, const size_t len) { return cis_recv(_pi, data, len); }
68 
79  int recv(const int nargs, ...) {
80  // if (nargs != _pi._nfmt) {
81  // cislog_error("CisInput(%s).recv: %d args provided, but format expects %d.\n",
82  // _pi._name, nargs, _pi._nfmt);
83  // return -1;
84  // }
85  va_list va;
86  va_start(va, nargs);
87  int ret = vcisRecv(_pi, va);
88  va_end(va);
89  return ret;
90  }
91 
101  int recv_nolimit(char **data, const size_t len) {
102  return cis_recv_nolimit(_pi, data, len);
103  }
104 
115  int recv_nolimit(const int nargs, ...) {
116  // if (nargs != _pi._nfmt) {
117  // cislog_error("CisInput(%s).recv: %d args provided, but format expects %d.\n",
118  // _pi._name, nargs, _pi._nfmt);
119  // return -1;
120  // }
121  va_list va;
122  va_start(va, nargs);
123  int ret = vcisRecv_nolimit(_pi, va);
124  va_end(va);
125  return ret;
126  }
127 
128 };
129 
130 
139 class CisOutput {
140  cisOutput_t _pi;
141 public:
142 
148  CisOutput(const char *name) : _pi(cisOutput(name)) {}
149 
156  CisOutput(const char *name, const char *fmt) : _pi(cisOutputFmt(name, fmt)) {}
157 
159  CisOutput(cisOutput_t x) : _pi(x) {}
160 
164  void _destroy_pi() { cis_free(&_pi); }
165 
171 
176  cisOutput_t pi() {
177  return _pi;
178  };
179 
188  int send(const char *data, const size_t len) {
189  return cis_send(_pi, data, len);
190  }
191 
200  int send(const int nargs, ...) {
201  // if (nargs != _pi._nfmt) {
202  // cislog_error("CisOutput(%s).send: %d args provided, but format expects %d.\n",
203  // _pi._name, nargs, _pi._nfmt);
204  // return -1;
205  // }
206  va_list va;
207  va_start(va, nargs);
208  int ret = vcisSend(_pi, va);
209  va_end(va);
210  return ret;
211  }
212 
220  int send_nolimit(const char *data, const size_t len) {
221  return cis_send_nolimit(_pi, data, len);
222  }
223 
232  int send_nolimit(const int nargs, ...) {
233  // if (nargs != _pi._nfmt) {
234  // cislog_error("CisOutput(%s).send: %d args provided, but format expects %d.\n",
235  // _pi._name, nargs, _pi._nfmt);
236  // return -1;
237  // }
238  va_list va;
239  va_start(va, nargs);
240  int ret = vcisSend_nolimit(_pi, va);
241  va_end(va);
242  return ret;
243  }
244 
249  int send_eof() { return cis_send_eof(_pi); }
250 };
251 
252 
261 class CisRpc {
262  cisRpc_t _pi;
263 public:
264 
273  CisRpc(const char *name, const char *outFormat, const char *inFormat) :
274  _pi(cisRpc(name, outFormat, inFormat)) {}
275 
277  CisRpc(cisRpc_t x) : _pi(x) {}
278 
282  void _destroy_pi() { cis_free(&_pi); }
283 
289 
294  cisRpc_t pi() {
295  return _pi;
296  };
297 
306  int send(const int nargs, ...) {
307  va_list va;
308  va_start(va, nargs);
309  int ret = vrpcSend(_pi, va);
310  va_end(va);
311  return ret;
312  }
313 
324  int recv(const int nargs, ...) {
325  va_list va;
326  va_start(va, nargs);
327  int ret = vrpcRecv(_pi, va);
328  va_end(va);
329  return ret;
330  }
331 };
332 
333 
341 class CisRpcServer : public CisRpc {
342 public:
343 
353  CisRpcServer(const char *name, const char *inFormat, const char *outFormat) :
354  CisRpc(cisRpcServer(name, inFormat, outFormat)) {}
355 
361 
362 };
363 
364 
372 class CisRpcClient : public CisRpc {
373 public:
374 
384  CisRpcClient(const char *name, const char *outFormat, const char *inFormat) :
385  CisRpc(cisRpcClient(name, outFormat, inFormat)) {}
386 
392 
405  int call(const int nargs, ...) {
406  cisRpc_t _cpi = pi();
407  va_list va;
408  va_start(va, nargs);
409  int ret = vrpcCall(_cpi, va);
410  va_end(va);
411  return ret;
412  }
413 
414 };
415 
416 
425 public:
426 
431  CisAsciiFileOutput(const char *name) :
432  CisOutput(cisAsciiFileOutput(name)) {}
433 
435  CisAsciiFileOutput(cisOutput_t x) :
436  CisOutput(x) {}
437 
443  int send_line(const char *line) { return send(line, strlen(line)); }
444 
445 };
446 
447 
456 public:
457 
462  CisAsciiFileOutput_local(const char *name) :
463  CisAsciiFileOutput(cisAsciiFileOutput_local(name)) {}
464 
465 };
466 
467 
475 class CisAsciiFileInput : public CisInput {
476 public:
477 
482  CisAsciiFileInput(const char *name) :
483  CisInput(cisAsciiFileInput(name)) {}
484 
486  CisAsciiFileInput(cisInput_t x) :
487  CisInput(x) {}
488 
498  int recv_line(char *line, const size_t n) { return recv(line, n); }
499 
500 };
501 
502 
511 public:
512 
517  CisAsciiFileInput_local(const char *name) :
518  CisAsciiFileInput(cisAsciiFileInput_local(name)) {}
519 
520 };
521 
522 
532 public:
533 
540  CisAsciiTableOutput(const char *name, const char *format_str) :
541  CisAsciiFileOutput(cisAsciiTableOutput(name, format_str)) {}
542 
543 };
544 
545 
555 public:
556 
563  CisAsciiTableOutput_local(const char *name, const char *format_str) :
564  CisAsciiFileOutput(cisAsciiTableOutput_local(name, format_str)) {}
565 
566 };
567 
568 
578 public:
579 
586  CisAsciiArrayOutput(const char *name, const char *format_str) :
587  CisAsciiFileOutput(cisAsciiArrayOutput(name, format_str)) {}
588 
589 };
590 
591 
601 public:
602 
609  CisAsciiArrayOutput_local(const char *name, const char *format_str) :
610  CisAsciiFileOutput(cisAsciiArrayOutput_local(name, format_str)) {}
611 
612 };
613 
614 
624 public:
625 
633  CisAsciiTableInput(const char *name) :
634  CisAsciiFileInput(cisAsciiTableInput(name)) {}
635 
636 };
637 
647 public:
648 
656  CisAsciiTableInput_local(const char *name) :
657  CisAsciiFileInput(cisAsciiTableInput_local(name)) {}
658 
659 };
660 
670 public:
671 
679  CisAsciiArrayInput(const char *name) :
680  CisAsciiFileInput(cisAsciiArrayInput(name)) {}
681 
682 };
683 
694 public:
695 
703  CisAsciiArrayInput_local(const char *name) :
704  CisAsciiFileInput(cisAsciiArrayInput_local(name)) {}
705 
706 };
707 
708 #endif /*CISINTERFACE_HPP_*/
int recv_nolimit(char **data, const size_t len)
Receive a message larger than CIS_MSG_MAX from the input queue. See cis_recv_nolimit in CisInterface...
Definition: CisInterface.hpp:101
C++ interface to cisAsciiTableInput_t functionality for arrays.
Definition: CisInterface.hpp:669
CisRpc(const char *name, const char *outFormat, const char *inFormat)
Constructor for CisRpc.
Definition: CisInterface.hpp:273
CisOutput(const char *name)
Constructor for CisOutput.
Definition: CisInterface.hpp:148
CisAsciiArrayOutput(const char *name, const char *format_str)
Constructor for CisAsciiArrayOutput.
Definition: CisInterface.hpp:586
CisOutput(const char *name, const char *fmt)
Constructor for CisOutput with format.
Definition: CisInterface.hpp:156
CisAsciiTableInput(const char *name)
Constructor for CisAsciiTableInput. Due to issues with the C++ version of vsscanf, flags and precision indicators for floating point format specifiers (e.g. e, f), must be removed so that table input can be properly parsed.
Definition: CisInterface.hpp:633
~CisOutput()
Destructor for CisOutput. See cis_free in CisInterface.h for details.
Definition: CisInterface.hpp:170
int recv(char *data, const size_t len)
Receive a message shorter than CIS_MSG_MAX from the input queue. See cis_recv in CisInterface.h for additional details.
Definition: CisInterface.hpp:67
C++ interface to cisRpc_t functionality.
Definition: CisInterface.hpp:261
CisInput(cisInput_t x)
Empty constructor for inheritance.
Definition: CisInterface.hpp:29
int recv_line(char *line, const size_t n)
Receive a single line from an associated file or queue. See af_recv_line in CisInterface.h for details.
Definition: CisInterface.hpp:498
~CisRpc()
Destructor for CisRpc. See cis_free in CisInterface.h for details.
Definition: CisInterface.hpp:288
CisOutput(cisOutput_t x)
Empty constructor for inheritance.
Definition: CisInterface.hpp:159
C++ interface to cisAsciiFileInput_t functionality for local files. The CisAsciiFileInput_local class...
Definition: CisInterface.hpp:510
cisRpc_t pi()
Return the cisRpc_t structure.
Definition: CisInterface.hpp:294
CisInput(const char *name)
Constructor for CisInput.
Definition: CisInterface.hpp:26
CisRpcServer(const char *name, const char *inFormat, const char *outFormat)
Constructor for CisRpcServer.
Definition: CisInterface.hpp:353
C++ interface to cisAsciiTableOutput_t functionality for local files.
Definition: CisInterface.hpp:600
CisAsciiTableOutput_local(const char *name, const char *format_str)
Constructor for CisAsciiTableOutput for local files.
Definition: CisInterface.hpp:563
CisAsciiFileOutput(const char *name)
Constructor for CisAsciiFileOutput.
Definition: CisInterface.hpp:431
cisInput_t pi()
Return the cisInput_t structure.
Definition: CisInterface.hpp:54
CisRpc(cisRpc_t x)
Empty constructor for inheritance.
Definition: CisInterface.hpp:277
CisAsciiArrayOutput_local(const char *name, const char *format_str)
Constructor for CisAsciiArrayOutput for local files.
Definition: CisInterface.hpp:609
CisAsciiTableInput_local(const char *name)
Constructor for CisAsciiTableInput_local. Due to issues with the C++ version of vsscanf, flags and precision indicators for floating point format specifiers (e.g. e, f), must be removed so that table input can be properly parsed.
Definition: CisInterface.hpp:656
int call(const int nargs,...)
Send request to an RPC server from the client and wait for a response. See rpcCall in CisInterface...
Definition: CisInterface.hpp:405
void _destroy_pi()
Alias to allow freeing of underlying C struct at the class level.
Definition: CisInterface.hpp:42
C++ interface to cisAsciiTableInput_t functionality for local files as arrays.
Definition: CisInterface.hpp:693
void _destroy_pi()
Alias to allow freeing of underlying C struct at the class level.
Definition: CisInterface.hpp:282
C++ interface to cisAsciiFileOutput_t functionality. The CisAsciiFileOutput class is a basic wrapper ...
Definition: CisInterface.hpp:424
~CisInput()
Destructor for CisInput. See cis_free in CisInterface.h for details.
Definition: CisInterface.hpp:48
cisOutput_t pi()
Return the cisOutput_t structure.
Definition: CisInterface.hpp:176
C++ interface to cisAsciiTableInput_t functionality.
Definition: CisInterface.hpp:623
C++ interface to cisAsciiTableOutput_t functionality with arrays.
Definition: CisInterface.hpp:577
int recv(const int nargs,...)
Receive and parse a message shorter than CIS_MSG_MAX from the input queue. See cisRecv from CisInterf...
Definition: CisInterface.hpp:79
int send_line(const char *line)
Send a single line to a file or queue.
Definition: CisInterface.hpp:443
CisAsciiTableOutput(const char *name, const char *format_str)
Constructor for CisAsciiTableOutput.
Definition: CisInterface.hpp:540
C++ interface to cisAsciiTableInput_t functionality for local files.
Definition: CisInterface.hpp:646
int send_nolimit(const int nargs,...)
Format and send a message larger than CIS_MSG_MAX to the output queue. See cisSend from CisInterface...
Definition: CisInterface.hpp:232
C++ interface to cisAsciiFileOutput_t functionality for local files. The CisAsciiFileOutput_local cla...
Definition: CisInterface.hpp:455
CisInput(const char *name, const char *fmt)
Constructor for CisInput with format.
Definition: CisInterface.hpp:37
CisAsciiFileInput_local(const char *name)
Constructor for CisAsciiFileInput_local.
Definition: CisInterface.hpp:517
CisAsciiFileOutput_local(const char *name)
Constructor for CisAsciiFileOutput.
Definition: CisInterface.hpp:462
CisAsciiFileInput(cisInput_t x)
Empty constructor for inheritance.
Definition: CisInterface.hpp:486
int send_eof()
Send EOF message to output file, closing it.
Definition: CisInterface.hpp:249
C++ interface to cisAsciiTableOutput_t functionality for local files.
Definition: CisInterface.hpp:554
CisAsciiFileInput(const char *name)
Constructor for CisAsciiFileInput.
Definition: CisInterface.hpp:482
C++ interface to cisInput_t functionality.
Definition: CisInterface.hpp:17
C++ interface to cisAsciiFileInput_t functionality. The CisAsciiFileInput class is a basic wrapper ar...
Definition: CisInterface.hpp:475
CisAsciiArrayInput(const char *name)
Constructor for CisAsciiArrayInput. Due to issues with the C++ version of vsscanf, flags and precision indicators for floating point format specifiers (e.g. e, f), must be removed so that table input can be properly parsed.
Definition: CisInterface.hpp:679
int recv_nolimit(const int nargs,...)
Receive and parse a message larger than CIS_MSG_MAX from the input queue. See cisRecv_nolimit from Ci...
Definition: CisInterface.hpp:115
C++ interface to cisOutput_t functionality.
Definition: CisInterface.hpp:139
C++ interface to cisRpc_t server-side functionality. The CisRpcServer class is a basic wrapper around...
Definition: CisInterface.hpp:341
~CisRpcClient()
Destructor for CisRpcClient. See cis_free in CisInterface.h for details.
Definition: CisInterface.hpp:391
int send(const int nargs,...)
Format and send a message to an RPC output queue. See rpcSend from CisInterface.h for details...
Definition: CisInterface.hpp:306
void _destroy_pi()
Alias to allow freeing of underlying C struct at the class level.
Definition: CisInterface.hpp:164
CisAsciiFileOutput(cisOutput_t x)
Empty constructor for inheritance.
Definition: CisInterface.hpp:435
CisRpcClient(const char *name, const char *outFormat, const char *inFormat)
Constructor for CisRpcClient.
Definition: CisInterface.hpp:384
CisAsciiArrayInput_local(const char *name)
Constructor for CisAsciiArrayInput_local. Due to issues with the C++ version of vsscanf, flags and precision indicators for floating point format specifiers (e.g. e, f), must be removed so that table input can be properly parsed.
Definition: CisInterface.hpp:703
int send_nolimit(const char *data, const size_t len)
Send a message larger than CIS_MSG_MAX to the output queue. See cis_send_nolimit in CisInterface...
Definition: CisInterface.hpp:220
C++ interface to cisAsciiTableOutput_t functionality.
Definition: CisInterface.hpp:531
int send(const char *data, const size_t len)
Send a message smaller than CIS_MSG_MAX to the output queue. If the message is larger than CIS_MSG_MA...
Definition: CisInterface.hpp:188
~CisRpcServer()
Destructor for CisRpcServer. See cis_free in CisInterface.h for details.
Definition: CisInterface.hpp:360
int send(const int nargs,...)
Format and send a message smaller than CIS_MSG_MAX to the output queue. See cisSend from CisInterface...
Definition: CisInterface.hpp:200
C++ interface to cisRpc_t client-side functionality. The CisRpcClient class is a basic wrapper around...
Definition: CisInterface.hpp:372
int recv(const int nargs,...)
Receive and parse a message from an RPC input queue. See rpcRecv from CisInterface.h for details.
Definition: CisInterface.hpp:324