7 #include "PsiInterface.h" 30 PsiInput(
const char *name) : _pi(psiInput(name)) {}
41 int recv(
char *data,
int len) {
42 return psi_recv(_pi, data, len);
55 return psi_recv_nolimit(_pi, data, len);
77 PsiOutput(
const char *name) : _pi(psiOutput(name)) {}
87 int send(
char *data,
int len) {
88 return psi_send(_pi, data, len);
99 return psi_send_nolimit(_pi, data, len);
125 PsiRpc(
const char *outName,
char *outFormat,
126 const char *inName,
char *inFormat) :
127 _pi(psiRpc(outName, outFormat, inName, inFormat)) {}
147 error(
"PsiRpc(%s).send: %d args provided, but format expects %d.\n",
153 int ret = vrpcSend(_pi, va);
170 error(
"PsiRpc(%s).recv: %d args provided, but format expects %d.\n",
176 int ret = vrpcRecv(_pi, va);
204 PsiRpc(name, outFormat, name, inFormat) {}
230 PsiRpc(name, outFormat, name, inFormat) {
248 if (nargs != nfmt_tot) {
249 error(
"PsiRpcClient(%s).call: %d args provided, but format expects %d.\n",
255 int ret = vrpcCall(_cpi, va);
283 _pi(psiAsciiFileOutput(name, dst_type)) {}
302 int send_line(
char *line) {
return af_send_line(_pi, line); }
327 _pi(psiAsciiFileInput(name, src_type)) {}
343 int recv_line(
char *line,
size_t n) {
return af_recv_line(_pi, line, n); }
370 _pi(psiAsciiTableOutput(name, format_str, dst_type)) {}
384 int send(
char *data,
int len) {
return at_psi_send(_pi, data, len); }
407 error(
"PsiAsciiTableOutput(%s).send_row: %d args provided, but format expects %d.\n",
408 _pi.
_name, nargs, nfmt);
414 ret = vsend_row(_pi, ap);
435 error(
"PsiAsciiTableOutput(%s).send_array: %d args provided, but format expects %d.\n",
436 _pi.
_name, nargs, nfmt);
442 ret = vsend_array(_pi, nrows, ap);
473 _pi(psiAsciiTableInput(name, src_type)) {
475 std::regex e(
"%(?:\\d+\\$)?[+-]?(?:[ 0]|'.{1})?-?\\d*(?:\\.\\d+)?(?:[lhjztL])*([eEfFgG])");
478 result = std::regex_replace(s, e,
"%$1");
479 strcpy(_pi.
_psi.
_fmt, result.c_str());
496 int recv(
char **data,
int len) {
return at_psi_recv(_pi, data, len); }
514 error(
"PsiAsciiTableInput(%s).recv_row: %d args provided, but format expects %d.\n",
515 _pi.
_name, nargs, nfmt);
521 ret = vrecv_row(_pi, ap);
541 error(
"PsiAsciiTableInput(%s).recv_array: %d args provided, but format expects %d.\n",
542 _pi.
_name, nargs, nfmt);
548 ret = vrecv_array(_pi, ap);
int _nfmt
Number of fields expected from format string.
Definition: PsiInterface.h:236
C++ interface to psiRpc_t client-side functionality.
Definition: PsiInterface.hpp:217
psiOutput_t _psi
Associated output handler for queues.
Definition: PsiInterface.h:1310
C++ interface to psiAsciiTableOutput_t functionality.
Definition: PsiInterface.hpp:356
int send_eof()
Send a nolimit EOF message to a table output queue. See at_send_eof in PsiInterface for details...
Definition: PsiInterface.hpp:391
char format_str[LINE_SIZE_MAX]
Format string for rows.
Definition: AsciiTable.h:89
int send_eof()
Send EOF message to output file, closing it. See af_send_eof in PsiInterface.h for details...
Definition: PsiInterface.hpp:295
C++ interface to psiOutput_t functionality.
Definition: PsiInterface.hpp:68
int send_nolimit(char *data, int len)
Send a message larger than PSI_MSG_MAX to the output queue. See psi_send_nolimit in PsiInterface...
Definition: PsiInterface.hpp:98
int send(char *data, int len)
Send a message smaller than PSI_MSG_MAX to the output queue. If the message is larger than PSI_MSG_MA...
Definition: PsiInterface.hpp:87
int call(int nargs,...)
Send request to an RPC server from the client and wait for a response. See rpcCall in PsiInterface...
Definition: PsiInterface.hpp:245
asciiTable_t _table
Associated output handler for local tables.
Definition: PsiInterface.h:1309
PsiRpcClient(const char *name, char *outFormat, char *inFormat)
Constructor for PsiRpcClient.
Definition: PsiInterface.hpp:229
int send_array(int nargs, int nrows,...)
Format and send table columns to the table file/queue. See at_send_array in PsiInterface.h for details.
Definition: PsiInterface.hpp:428
PsiAsciiTableOutput(const char *name, char *format_str, int dst_type=1)
Constructor for PsiAsciiTableOutput.
Definition: PsiInterface.hpp:369
PsiRpcServer(const char *name, char *inFormat, char *outFormat)
Constructor for PsiRpcServer.
Definition: PsiInterface.hpp:203
Structure for handling output to an ASCII table.
Definition: PsiInterface.h:1305
Remote Procedure Call (RPC) structure. Contains information required to coordinate sending/receiving ...
Definition: PsiInterface.h:826
PsiAsciiFileOutput(const char *name, int dst_type=1)
Constructor for PsiAsciiFileOutput.
Definition: PsiInterface.hpp:282
C++ interface to psiAsciiFileOutput_t functionality.
Definition: PsiInterface.hpp:271
const char * _name
Path to local table or name of message queue.
Definition: PsiInterface.h:1307
~PsiAsciiTableOutput()
Destructor for PsiAsciiTableOutput. See cleanup_pato in PsiInterface.h for details.
Definition: PsiInterface.hpp:375
int send_row(int nargs,...)
Format and send a row to the table file/queue. See at_send_row in PsiInterface.h for details...
Definition: PsiInterface.hpp:400
~PsiAsciiFileOutput()
Destructor for PsiAsciiFileOutput. See cleanup_pafo in PsiInterface.h for details.
Definition: PsiInterface.hpp:288
Output queue structure. Contains information on an output queue.
Definition: PsiInterface.h:232
psiInput_t _input
Input queue structure.
Definition: PsiInterface.h:827
C++ interface to psiRpc_t functionality.
Definition: PsiInterface.hpp:112
PsiOutput(const char *name)
Constructor for PsiOutput.
Definition: PsiInterface.hpp:77
int send_line(char *line)
Send a single line to a file or queue. See af_send_line in PsiInterface.h for details.
Definition: PsiInterface.hpp:302
int recv(int nargs,...)
Receive and parse a message from an RPC input queue. See rpcRecv from PsiInterface.h for details.
Definition: PsiInterface.hpp:168
psiRpc_t pi()
Return the psiRpc_t structure.
Definition: PsiInterface.hpp:133
int _type
0 if _name is a local table, 1 if it is a message queue.
Definition: PsiInterface.h:1308
const char * _name
Queue name.
Definition: PsiInterface.h:234
int send(int nargs,...)
Format and send a message to an RPC output queue. See rpcSend from PsiInterface.h for details...
Definition: PsiInterface.hpp:145
Structure of information for output to a file line by line.
Definition: PsiInterface.h:1064
C++ interface to psiRpc_t server-side functionality.
Definition: PsiInterface.hpp:191
int send(char *data, int len)
Send a nolimit message to a table output queue. See at_psi_send in PsiInterface.h for details...
Definition: PsiInterface.hpp:384
PsiRpc(const char *outName, char *outFormat, const char *inName, char *inFormat)
Constructor for PsiRpc.
Definition: PsiInterface.hpp:125
psiOutput_t _output
Output queue structure.
Definition: PsiInterface.h:828