WvStreams
uniclientconn.h
1 /* -*- Mode: C++ -*-
2  * Worldvisions Tunnel Vision Software:
3  * Copyright (C) 1997-2002 Net Integration Technologies, Inc.
4  *
5  * Manages a connection between the UniConf client and daemon.
6  */
7 #ifndef __UNICONFCONN_H
8 #define __UNICONFCONN_H
9 
10 #include "uniconfkey.h"
11 #include "uniconfgen.h"
12 #include "wvstreamclone.h"
13 #include "wvistreamlist.h"
14 #include "wvbuf.h"
15 #include "wvlog.h"
16 
17 #define UNICONF_PROTOCOL_VERSION UniClientConn::NUM_COMMANDS
18 #define DEFAULT_UNICONF_DAEMON_TCP_PORT 4111
19 #define DEFAULT_UNICONF_DAEMON_SSL_PORT 4112
20 
28 {
29  WvDynBuf msgbuf;
30 
31 protected:
32  WvLog log;
33  bool closed;
34  int version;
35 
36 public:
39  /* This table is _very_ important!!!
40  *
41  * With UniConf, we promise to never remove or modify the behaviour of
42  * any of the commands listed here. If you want to modify anything,
43  * you'd better just add a new command instead. We keep track of the
44  * version of the UniConf protocol by the number of commands supported
45  * by the server.
46  *
47  * @see UniClientConn::cmdinfos
48  */
49  enum Command
50  {
51  NONE = -2,
52  INVALID = -1,
54  // requests
67  // command completion replies
73  // partial replies
77  // events
80  };
81  static const int NUM_COMMANDS = EVENT_NOTICE + 1;
82  struct CommandInfo
83  {
84  const char *name;
85  const char *description;
86  };
87  static const CommandInfo cmdinfos[NUM_COMMANDS];
88 
90  UniClientConn(IWvStream *_s, WvStringParm dst = WvString::null);
91  virtual ~UniClientConn();
92 
93  virtual void close();
94 
101  Command readcmd();
102  Command readcmd(WvString &command);
103 
108  WvString readarg();
109 
115  void writecmd(Command command, WvStringParm payload = WvString::null);
116 
121  void writeok(WvStringParm payload = "");
122 
127  void writefail(WvStringParm payload = "");
128 
134  void writevalue(const UniConfKey &key, WvStringParm value);
135 
141  void writeonevalue(const UniConfKey &key, WvStringParm value);
142 
147  void writetext(WvStringParm text);
148 
149 private:
151  WvString readmsg();
152 
154  void writemsg(WvStringParm message);
155 };
156 
157 #endif // __UNICONFCONN_H
UniClientConn::REPLY_OK
@ REPLY_OK
Definition: uniclientconn.h:68
UniClientConn::EVENT_NOTICE
@ EVENT_NOTICE
Definition: uniclientconn.h:79
UniClientConn::REQ_SUBTREE
@ REQ_SUBTREE
Definition: uniclientconn.h:60
UniClientConn::payloadbuf
WvConstStringBuffer payloadbuf
Definition: uniclientconn.h:37
UniClientConn::REQ_NOOP
@ REQ_NOOP
Definition: uniclientconn.h:55
UniClientConn::writeok
void writeok(WvStringParm payload="")
Writes a REPLY_OK message.
Definition: uniclientconn.cc:161
UniClientConn::REQ_HASCHILDREN
@ REQ_HASCHILDREN
Definition: uniclientconn.h:61
UniClientConn::readarg
WvString readarg()
Reads the next argument from the command payload.
Definition: uniclientconn.cc:146
UniClientConn::INVALID
@ INVALID
Definition: uniclientconn.h:52
UniClientConn::REPLY_ONEVAL
@ REPLY_ONEVAL
Definition: uniclientconn.h:71
UniClientConn::REQ_HELP
@ REQ_HELP
Definition: uniclientconn.h:65
IWvStream
Definition: iwvstream.h:24
UniClientConn::writetext
void writetext(WvStringParm text)
Writes a PART_TEXT message.
Definition: uniclientconn.cc:188
WvConstStringBuffer
A raw memory read-only buffer backed by a constant WvString.
Definition: wvbuf.h:241
UniClientConn::REQ_GET
@ REQ_GET
Definition: uniclientconn.h:56
UniClientConn
Represents a connection to a UniConf daemon via any WvStream.
Definition: uniclientconn.h:27
UniClientConn::NONE
@ NONE
Definition: uniclientconn.h:51
WvString
WvString is an implementation of a simple and efficient printable-string class.
Definition: wvstring.h:329
WvLog
A WvLog stream accepts log messages from applications and forwards them to all registered WvLogRcv's.
Definition: wvlog.h:56
UniClientConn::PART_VALUE
@ PART_VALUE
Definition: uniclientconn.h:74
UniClientConn::REQ_COMMIT
@ REQ_COMMIT
Definition: uniclientconn.h:62
UniConfKey
Represents a UniConf key which is a path in a hierarchy structured much like the traditional Unix fil...
Definition: uniconfkey.h:38
WvStreamClone
WvStreamClone simply forwards all requests to the "cloned" stream.
Definition: wvstreamclone.h:23
UniClientConn::REQ_SETV
@ REQ_SETV
Definition: uniclientconn.h:58
UniClientConn::REQ_REMOVE
@ REQ_REMOVE
Definition: uniclientconn.h:59
UniClientConn::Command
Command
Definition: uniclientconn.h:49
UniClientConn::CommandInfo
Definition: uniclientconn.h:82
UniClientConn::writefail
void writefail(WvStringParm payload="")
Writes a REPLY_FAIL message.
Definition: uniclientconn.cc:167
UniClientConn::UniClientConn
UniClientConn(IWvStream *_s, WvStringParm dst=WvString::null)
Create a wrapper around the supplied WvStream.
Definition: uniclientconn.cc:55
UniClientConn::writecmd
void writecmd(Command command, WvStringParm payload=WvString::null)
Writes a command to the connection.
Definition: uniclientconn.cc:152
WvDynBufBase< unsigned char >
UniClientConn::readcmd
Command readcmd()
Reads a command from the connection.
Definition: uniclientconn.cc:120
UniClientConn::writeonevalue
void writeonevalue(const UniConfKey &key, WvStringParm value)
Writes a PART_VALUE message.
Definition: uniclientconn.cc:182
UniClientConn::PART_TEXT
@ PART_TEXT
Definition: uniclientconn.h:75
UniClientConn::REPLY_FAIL
@ REPLY_FAIL
Definition: uniclientconn.h:69
UniClientConn::EVENT_HELLO
@ EVENT_HELLO
Definition: uniclientconn.h:78
UniClientConn::REQ_QUIT
@ REQ_QUIT
Definition: uniclientconn.h:64
UniClientConn::close
virtual void close()
Close this stream.
Definition: uniclientconn.cc:70
UniClientConn::REQ_SET
@ REQ_SET
Definition: uniclientconn.h:57
UniClientConn::REPLY_CHILD
@ REPLY_CHILD
Definition: uniclientconn.h:70
UniClientConn::REQ_REFRESH
@ REQ_REFRESH
Definition: uniclientconn.h:63
UniClientConn::writevalue
void writevalue(const UniConfKey &key, WvStringParm value)
Writes a PART_VALUE message.
Definition: uniclientconn.cc:173