summaryrefslogtreecommitdiffstats
path: root/ipc/dbus/DBusUtils.h
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/dbus/DBusUtils.h')
-rw-r--r--ipc/dbus/DBusUtils.h105
1 files changed, 105 insertions, 0 deletions
diff --git a/ipc/dbus/DBusUtils.h b/ipc/dbus/DBusUtils.h
new file mode 100644
index 000000000..8d80f1f87
--- /dev/null
+++ b/ipc/dbus/DBusUtils.h
@@ -0,0 +1,105 @@
+/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
+/* vim: set ts=2 et sw=2 tw=80: */
+/*
+** Copyright 2006, The Android Open Source Project
+**
+** 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 mozilla_ipc_dbus_dbusutils_h__
+#define mozilla_ipc_dbus_dbusutils_h__
+
+#include <dbus/dbus.h>
+#include "mozilla/RefPtr.h"
+#include "nsISupportsImpl.h"
+
+// LOGE and free a D-Bus error
+// Using #define so that __FUNCTION__ resolves usefully
+#define LOG_AND_FREE_DBUS_ERROR_WITH_MSG(err, msg) log_and_free_dbus_error(err, __FUNCTION__, msg);
+#define LOG_AND_FREE_DBUS_ERROR(err) log_and_free_dbus_error(err, __FUNCTION__);
+
+namespace mozilla {
+namespace ipc {
+
+class DBusMessageRefPtr
+{
+public:
+ explicit DBusMessageRefPtr(DBusMessage* aMsg);
+ ~DBusMessageRefPtr();
+
+ operator DBusMessage* ()
+ {
+ return mMsg;
+ }
+
+ DBusMessage* get()
+ {
+ return mMsg;
+ }
+
+private:
+ DBusMessage* mMsg;
+};
+
+/**
+ * DBusReplyHandler represents a handler for DBus reply messages. Inherit
+ * from this class and implement the Handle method. The method Callback
+ * should be passed to the DBus send function, with the class instance as
+ * user-data argument.
+ */
+class DBusReplyHandler
+{
+public:
+ NS_INLINE_DECL_THREADSAFE_REFCOUNTING(DBusReplyHandler)
+
+ /**
+ * Implements a call-back function for DBus. The supplied value for
+ * aData must be a pointer to an instance of DBusReplyHandler.
+ */
+ static void Callback(DBusMessage* aReply, void* aData);
+
+ /**
+ * Call-back method for handling the reply message from DBus.
+ */
+ virtual void Handle(DBusMessage* aReply) = 0;
+
+protected:
+ DBusReplyHandler()
+ {
+ }
+
+ DBusReplyHandler(const DBusReplyHandler& aHandler)
+ {
+ }
+
+ DBusReplyHandler& operator = (const DBusReplyHandler& aRhs)
+ {
+ return *this;
+ }
+
+ virtual ~DBusReplyHandler()
+ {
+ }
+};
+
+void log_and_free_dbus_error(DBusError* err,
+ const char* function,
+ DBusMessage* msg = nullptr);
+
+int dbus_returns_int32(DBusMessage *reply);
+
+}
+}
+
+#endif
+