diff options
Diffstat (limited to 'mobile_src/Messaging/DBus/Message.h')
-rwxr-xr-x | mobile_src/Messaging/DBus/Message.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/mobile_src/Messaging/DBus/Message.h b/mobile_src/Messaging/DBus/Message.h new file mode 100755 index 0000000..743905e --- /dev/null +++ b/mobile_src/Messaging/DBus/Message.h @@ -0,0 +1,86 @@ +// +// Tizen Web Device API +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef WRTPLUGINS_DBUS_MESSAGE_H_ +#define WRTPLUGINS_DBUS_MESSAGE_H_ + +#include <string> +#include <dbus/dbus.h> +#include <dpl/shared_ptr.h> +#include <dpl/optional.h> +#include <dpl/noncopyable.h> + +namespace DeviceAPI { +namespace Messaging { +namespace DBus { +class Message : private DPL::Noncopyable +{ + private: + class ReadIterator_; + + public: + typedef DPL::SharedPtr<ReadIterator_> ReadIterator; + + public: + explicit Message(DBusMessage* message); + explicit Message(int type); + ~Message(); + + int getType() const; + std::string getInterface() const; + std::string getPath() const; + bool isSignal(const std::string& name) const; + ReadIterator getReadIterator() const; + + private: + // It doesn't need to be non-copyable - DBusMessageIter doesn't require it. + class ReadIterator_ + { + public: + explicit ReadIterator_(DBusMessage* message); + + bool next(); + bool isValid() const; + + int getArgType() const; + + int getInt() const; + std::string getString() const; + + private: + template<typename T> + T getArgBasic(int type) const; + + private: + mutable DBusMessageIter m_iterator; + bool m_valid; + }; + + private: + inline void addRef(); + inline void unref(); + + private: + DBusMessage* m_message; +}; + +typedef DPL::SharedPtr<Message> MessagePtr; +} // DBus +} // Platform +} // DeviceAPI + +#endif // WRTPLUGINS_DBUS_MESSAGE_H_ |