WvStreams
include/wvdbusserver.h
1/* -*- Mode: C++ -*-
2 * Worldvisions Weaver Software:
3 * Copyright (C) 2004-2006 Net Integration Technologies, Inc.
4 *
5 * Pathfinder Software:
6 * Copyright (C) 2007, Carillon Information Security Inc.
7 *
8 * This library is licensed under the LGPL, please read LICENSE for details.
9 *
10 * This class represents a dbus server, which may have multiple connections
11 * at the same time. It is intended purely for unit testing and debugging
12 * purposes and by no means should be used in production code (use the
13 * dbus daemon for that).
14 *
15 */
16#ifndef __WVDBUSSERVER_H
17#define __WVDBUSSERVER_H
18
19#include "wvlistener.h"
20#include "wvhashtable.h"
21#include "wvlog.h"
22#include "wvistreamlist.h"
23#include <stdint.h>
24
25class WvDBusMsg;
26class WvDBusConn;
27DeclareWvList(WvDBusConn);
28
29
30class WvDBusServer : public WvIStreamList
31{
32 WvIStreamList listeners;
33public:
34 /*
35 * Constructs a new DBus server. You must then call listen() to
36 * actually listen for new connections.
37 */
39
44
48 virtual ~WvDBusServer();
49
59 void listen(WvStringParm moniker);
60
61 virtual bool isok() const;
62 virtual int geterr() const;
63
69
74
81
87
88private:
89 WvLog log;
90 WvDBusConnList all_conns;
91 std::map<WvString,WvDBusConn*> name_to_conn;
92
93 void new_connection_cb(IWvStream *s);
94 void conn_closed(WvStream &s);
95
96 bool do_server_msg(WvDBusConn &conn, WvDBusMsg &msg);
97 bool do_bridge_msg(WvDBusConn &conn, WvDBusMsg &msg);
98 bool do_broadcast_msg(WvDBusConn &conn, WvDBusMsg &msg);
99 bool do_gaveup_msg(WvDBusConn &conn, WvDBusMsg &msg);
100};
101
102#endif // __WVDBUSSERVER_H
void listen(WvStringParm moniker)
Listen using a given WvListener moniker.
void unregister_name(WvStringParm name, WvDBusConn *conn)
Undo a register_name().
virtual ~WvDBusServer()
Shut down this server.
void unregister_conn(WvDBusConn *conn)
Forget all name registrations for a particular connection.
WvDBusServer(WvDBusServer &c)
Not actually defined.
virtual int geterr() const
If isok() is false, return the system error number corresponding to the error, -1 for a special error...
WvString get_addr()
get the full, final address (identification guid and all) of the server if there's more than one list...
virtual bool isok() const
return true if the stream is actually usable right now
void register_name(WvStringParm name, WvDBusConn *conn)
Register a given dbus service name as belonging to a particular connection.
A WvFastString acts exactly like a WvString, but can take (const char *) strings without needing to a...
WvStreamList holds a list of WvStream objects – and its select() and callback() functions know how to...
A WvLog stream accepts log messages from applications and forwards them to all registered WvLogRcv's.
Unified support for streams, that is, sequences of bytes that may or may not be ready for read/write ...
WvString is an implementation of a simple and efficient printable-string class.