sync from fd.org

timeout support in connection
This commit is contained in:
Andreas Volz 2009-11-16 23:00:10 +01:00
parent d55e70a385
commit 25a2ef65af
3 changed files with 27 additions and 5 deletions

View file

@ -1,5 +1,4 @@
SUBDIRS = properties echo hal glib SUBDIRS = properties echo hal glib ecore
DIST_SUBDIRS = properties echo hal glib ecore
MAINTAINERCLEANFILES = \ MAINTAINERCLEANFILES = \
Makefile.in Makefile.in

View file

@ -446,6 +446,10 @@ public:
bool start_service( const char* name, unsigned long flags ); bool start_service( const char* name, unsigned long flags );
const std::vector<std::string>& names(); const std::vector<std::string>& names();
void set_timeout(int timeout);
int get_timeout();
private: private:
@ -454,6 +458,7 @@ private:
private: private:
RefPtrI<Private> _pvt; RefPtrI<Private> _pvt;
int _timeout;
friend class ObjectAdaptor; // needed in order to register object paths for a connection friend class ObjectAdaptor; // needed in order to register object paths for a connection
}; };

View file

@ -202,6 +202,7 @@ Connection Connection::ActivationBus()
} }
Connection::Connection(const char *address, bool priv) Connection::Connection(const char *address, bool priv)
: _timeout(-1)
{ {
InternalError e; InternalError e;
DBusConnection *conn = priv DBusConnection *conn = priv
@ -218,13 +219,13 @@ Connection::Connection(const char *address, bool priv)
} }
Connection::Connection(Connection::Private *p) Connection::Connection(Connection::Private *p)
: _pvt(p) : _pvt(p), _timeout(-1)
{ {
setup(default_dispatcher); setup(default_dispatcher);
} }
Connection::Connection(const Connection &c) Connection::Connection(const Connection &c)
: _pvt(c._pvt) : _pvt(c._pvt),_timeout(c._timeout)
{ {
dbus_connection_ref(_pvt->conn); dbus_connection_ref(_pvt->conn);
} }
@ -360,7 +361,14 @@ Message Connection::send_blocking(Message &msg, int timeout)
DBusMessage *reply; DBusMessage *reply;
InternalError e; InternalError e;
reply = dbus_connection_send_with_reply_and_block(_pvt->conn, msg._pvt->msg, timeout, e); if (this->_timeout != -1)
{
reply = dbus_connection_send_with_reply_and_block(_pvt->conn, msg._pvt->msg, this->_timeout, e);
}
else
{
reply = dbus_connection_send_with_reply_and_block(_pvt->conn, msg._pvt->msg, timeout, e);
}
if (e) throw Error(e); if (e) throw Error(e);
@ -444,3 +452,13 @@ bool Connection::start_service(const char *name, unsigned long flags)
return b; return b;
} }
void Connection::set_timeout(int timeout)
{
_timeout=timeout;
}
int Connection::get_timeout()
{
return _timeout;
}