[XPCOM] Keep the JS context with the Service/Method objects, we
[browser-dbus-bridge.git] / xpcom-dbusservice / DBusSignal.h
1 /**
2  * Browser D-Bus Bridge, XPCOM version
3  *
4  * Copyright © 2008 Movial Creative Technologies Inc
5  *  Contact: Movial Creative Technologies Inc, <info@movial.com>
6  *  Authors: Lauri Mylläri, <lauri.myllari@movial.fi>
7  *
8  * The contents of this file are subject to the Mozilla Public License
9  * Version 1.1 (the "License"); you may not use this file except in
10  * compliance with the License. You may obtain a copy of the License at
11  * http://www.mozilla.org/MPL/
12  *
13  * Software distributed under the License is distributed on an "AS IS"
14  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
15  * License for the specific language governing rights and limitations
16  * under the License.
17  *
18  * The Original Code is the Browser D-Bus Bridge, XPCOM version.
19  *
20  * The Initial Developer of the Original Code is Movial Creative Technologies
21  * Inc. Portions created by Initial Developer are Copyright (C) 2008
22  * Movial Creative Technologies Inc. All Rights Reserved.
23  *
24  */
25
26 #ifndef __DBUSSIGNAL_H__
27 #define __DBUSSIGNAL_H__
28
29 #include "nsEmbedString.h"
30 #include "nsWeakReference.h"
31 #include "nsIXPConnect.h"
32
33 #include "DBusService.h"
34
35 //
36 // DBusSignal declarations
37 //
38
39 #define DBUSSIGNAL_CID \
40 { \
41     0xde515b88, \
42     0xb8a0, \
43     0x416e, \
44     0xb4, 0x38, 0x52, 0x4e, 0xf7, 0x96, 0xfb, 0x13 \
45 }
46
47 class DBusSignal : public IDBusSignal, public nsSupportsWeakReference
48 {
49 public:
50     NS_DECL_ISUPPORTS
51     NS_DECL_IDBUSSIGNAL
52
53     DBusSignal(DBusService *aDBusService,
54                PRUint32 aBusType,
55                const nsACString& aInterface,
56                const nsACString& aSignal,
57                const nsACString& aSender,
58                const nsACString& aObject,
59                JSContext *cx);
60
61 private:
62     ~DBusSignal();
63
64     void filterEnable();
65     void filterDisable();
66
67 protected:
68     DBusService *mDBusService;
69     PRUint32 mBusType;
70     const nsCString mInterface;
71     const nsCString mSignal;
72     const nsCString mSender;
73     const nsCString mObject;
74     IDBusSignalObserver *mCallback;
75     PRBool mEnabled;
76     PRBool mFilterActive;
77     JSContext *mJScx;
78 };
79
80
81 #endif /* __DBUSSIGNAL_H__ */
82
83 /* vim: set cindent ts=4 et sw=4: */