mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
59b461412b
This patch adds methods for sending DBus messages to the class RawDBusConnection. There are 3 types of interfaces. - Send Sends a message over DBus. No error checking or handling of replies is performed. These methods do not block the sending thread. - SendWithReply Sends a message over DBus and runs a call-back function for the reply. This should be the default case for most scenarios. These methods do not block the sending thread. - SendWithError Sends a message over DBus and waits for the reply or an error. This interface has only been added for some existing code that can safely block the sending thread. Don't use it in new code. These 3 types of interfaces represent what is currently used of the existing send functions in DBusUtils. When all users have been converted to the new methods, the interfaces in DBusUtils can be removed.
78 lines
2.2 KiB
C++
78 lines
2.2 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/RefPtr.h>
|
|
#include <mozilla/Mutex.h>
|
|
|
|
struct DBusConnection;
|
|
struct DBusError;
|
|
struct DBusMessage;
|
|
|
|
namespace mozilla {
|
|
namespace ipc {
|
|
|
|
class RawDBusConnection : public AtomicRefCounted<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(void (*aCallback)(DBusMessage*, void*), void* aData,
|
|
int aTimeout, DBusMessage* aMessage);
|
|
|
|
bool SendWithReply(void (*aCallback)(DBusMessage*, void*), void* aData,
|
|
int aTimeout, const char* aPath, const char* aIntf,
|
|
const char *aFunc, int aFirstArgType, ...);
|
|
|
|
/* Legacy interface, don't use in new code */
|
|
bool SendWithError(DBusMessage** aReply, DBusError* aError, int aTimeout,
|
|
DBusMessage* aMessage);
|
|
|
|
/* Legacy interface, don't use in new code */
|
|
bool SendWithError(DBusMessage** aReply, DBusError* aError, 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
|