moved the D-Bus component into its own thread.
various API changes and fixes. git-svn-id: http://dev.openwengo.org/svn/openwengo/wengophone-ng/branches/wengophone-dbus-api/libs/dbus@7852 30a43799-04e7-0310-8b2b-ea0d24f86d0e
This commit is contained in:
parent
42ea920aeb
commit
24637001ce
9 changed files with 77 additions and 38 deletions
|
@ -167,6 +167,8 @@ public:
|
|||
|
||||
~Message();
|
||||
|
||||
Message& operator = ( const Message& m );
|
||||
|
||||
Message copy();
|
||||
|
||||
int type() const;
|
||||
|
|
|
@ -85,6 +85,17 @@ const std::string& Object::service() const
|
|||
/*
|
||||
*/
|
||||
|
||||
class Tag
|
||||
{
|
||||
public:
|
||||
|
||||
virtual ~Tag()
|
||||
{}
|
||||
};
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
class ObjectAdaptor;
|
||||
|
||||
typedef std::list<ObjectAdaptor*> ObjectAdaptorPList;
|
||||
|
@ -113,28 +124,28 @@ protected:
|
|||
|
||||
inline MessageIter& writer();
|
||||
|
||||
inline void* tag();
|
||||
inline Tag* tag();
|
||||
|
||||
private:
|
||||
|
||||
Continuation( Connection& conn, const CallMessage& call, const void* tag );
|
||||
Continuation( Connection& conn, const CallMessage& call, const Tag* tag );
|
||||
|
||||
Connection _conn;
|
||||
CallMessage _call;
|
||||
MessageIter _writer;
|
||||
ReturnMessage _return;
|
||||
const void* _tag;
|
||||
const Tag* _tag;
|
||||
|
||||
friend class ObjectAdaptor;
|
||||
};
|
||||
|
||||
void return_later( const void* tag );
|
||||
void return_later( const Tag* tag );
|
||||
|
||||
void return_now( Continuation* ret );
|
||||
|
||||
void return_error( Continuation* ret, const Error error );
|
||||
|
||||
Continuation* find_continuation( const void* tag );
|
||||
Continuation* find_continuation( const Tag* tag );
|
||||
|
||||
private:
|
||||
|
||||
|
@ -145,7 +156,7 @@ private:
|
|||
void register_obj();
|
||||
void unregister_obj();
|
||||
|
||||
typedef std::map<const void*, Continuation*> ContinuationMap;
|
||||
typedef std::map<const Tag*, Continuation*> ContinuationMap;
|
||||
ContinuationMap _continuations;
|
||||
|
||||
friend struct Private;
|
||||
|
@ -156,9 +167,9 @@ const ObjectAdaptor* ObjectAdaptor::object() const
|
|||
return this;
|
||||
}
|
||||
|
||||
void* ObjectAdaptor::Continuation::tag()
|
||||
Tag* ObjectAdaptor::Continuation::tag()
|
||||
{
|
||||
return const_cast<void*>(_tag);
|
||||
return const_cast<Tag*>(_tag);
|
||||
}
|
||||
|
||||
MessageIter& ObjectAdaptor::Continuation::writer()
|
||||
|
|
|
@ -242,7 +242,6 @@ inline DBus::MessageIter& operator << ( DBus::MessageIter& iter, const DBus::Str
|
|||
return iter;
|
||||
}
|
||||
|
||||
|
||||
inline DBus::MessageIter& operator << ( DBus::MessageIter& iter, const DBus::Path& val )
|
||||
{
|
||||
iter.append_path(val.c_str());
|
||||
|
@ -393,6 +392,18 @@ inline DBus::MessageIter& operator >> ( DBus::MessageIter& iter, DBus::String& v
|
|||
return ++iter;
|
||||
}
|
||||
|
||||
inline DBus::MessageIter& operator >> ( DBus::MessageIter& iter, DBus::Path& val )
|
||||
{
|
||||
val = iter.get_path();
|
||||
return ++iter;
|
||||
}
|
||||
|
||||
inline DBus::MessageIter& operator >> ( DBus::MessageIter& iter, DBus::Signature& val )
|
||||
{
|
||||
val = iter.get_signature();
|
||||
return ++iter;
|
||||
}
|
||||
|
||||
template<typename E>
|
||||
inline DBus::MessageIter& operator >> ( DBus::MessageIter& iter, std::vector<E>& val )
|
||||
{
|
||||
|
@ -408,8 +419,6 @@ inline DBus::MessageIter& operator >> ( DBus::MessageIter& iter, std::vector<E>&
|
|||
ait >> elem;
|
||||
|
||||
val.push_back(elem);
|
||||
|
||||
++ait;
|
||||
}
|
||||
return ++iter;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue