gecko/ipc/dbus/RawDBusConnection.h
Thomas Zimmermann ea7e350a24 Bug 932728: Open only one connection to DBus, r=echou,qdot
Bluetooth maintains two connections to the DBus server and the DBus
system itself maintains a third one. This implies some overhead and
makes the code more difficult to understand.

This patch changes the Bluetooth code to use the connection that is
established by the DBus system.
2013-12-12 12:56:00 +01:00

70 lines
1.7 KiB
C++

/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#ifndef mozilla_ipc_dbus_gonk_rawdbusconnection_h__
#define mozilla_ipc_dbus_gonk_rawdbusconnection_h__
#include <stdarg.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include "nscore.h"
#include "mozilla/Scoped.h"
#include <mozilla/Mutex.h>
struct DBusConnection;
struct DBusError;
struct DBusMessage;
namespace mozilla {
namespace ipc {
typedef void (*DBusReplyCallback)(DBusMessage*, void*);
class RawDBusConnection
{
struct ScopedDBusConnectionPtrTraits : ScopedFreePtrTraits<DBusConnection>
{
static void release(DBusConnection* ptr);
};
public:
RawDBusConnection();
virtual ~RawDBusConnection();
nsresult EstablishDBusConnection();
DBusConnection* GetConnection()
{
return mConnection;
}
bool Send(DBusMessage* aMessage);
bool SendWithReply(DBusReplyCallback aCallback, void* aData,
int aTimeout, DBusMessage* aMessage);
bool SendWithReply(DBusReplyCallback aCallback, void* aData,
int aTimeout, const char* aPath, const char* aIntf,
const char *aFunc, int aFirstArgType, ...);
protected:
DBusMessage* BuildDBusMessage(const char* aPath, const char* aIntf,
const char* aFunc, int aFirstArgType,
va_list args);
Scoped<ScopedDBusConnectionPtrTraits> mConnection;
private:
static bool sDBusIsInit;
};
}
}
#endif