summaryrefslogtreecommitdiff
path: root/mobile_src/Messaging/DBus/Message.h
diff options
context:
space:
mode:
Diffstat (limited to 'mobile_src/Messaging/DBus/Message.h')
-rwxr-xr-xmobile_src/Messaging/DBus/Message.h86
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_