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:
pdurante 2006-10-01 13:37:47 +00:00
parent 42ea920aeb
commit 24637001ce
9 changed files with 77 additions and 38 deletions

View file

@ -167,6 +167,8 @@ public:
~Message();
Message& operator = ( const Message& m );
Message copy();
int type() const;

View file

@ -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()

View file

@ -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;
}