OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef DBUS_BUS_H_ | 5 #ifndef DBUS_BUS_H_ |
6 #define DBUS_BUS_H_ | 6 #define DBUS_BUS_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
11 #include <utility> | 11 #include <utility> |
12 #include <dbus/dbus.h> | 12 #include <dbus/dbus.h> |
13 | 13 |
14 #include "base/callback.h" | 14 #include "base/callback.h" |
15 #include "base/memory/ref_counted.h" | 15 #include "base/memory/ref_counted.h" |
16 #include "base/synchronization/waitable_event.h" | 16 #include "base/synchronization/waitable_event.h" |
17 #include "base/threading/platform_thread.h" | 17 #include "base/threading/platform_thread.h" |
18 #include "base/tracked_objects.h" | 18 #include "base/tracked_objects.h" |
| 19 #include "dbus/dbus_export.h" |
19 #include "dbus/object_path.h" | 20 #include "dbus/object_path.h" |
20 | 21 |
21 class MessageLoop; | 22 class MessageLoop; |
22 | 23 |
23 namespace base { | 24 namespace base { |
24 class Thread; | 25 class Thread; |
25 class MessageLoopProxy; | 26 class MessageLoopProxy; |
26 } | 27 } |
27 | 28 |
28 namespace dbus { | 29 namespace dbus { |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 // exported_object.ExportMethod(interface_name, method_name, | 124 // exported_object.ExportMethod(interface_name, method_name, |
124 // base::Bind(&Echo), | 125 // base::Bind(&Echo), |
125 // base::Bind(&OnExported)); | 126 // base::Bind(&OnExported)); |
126 // | 127 // |
127 // WHY IS THIS A REF COUNTED OBJECT? | 128 // WHY IS THIS A REF COUNTED OBJECT? |
128 // | 129 // |
129 // Bus is a ref counted object, to ensure that |this| of the object is | 130 // Bus is a ref counted object, to ensure that |this| of the object is |
130 // alive when callbacks referencing |this| are called. However, after the | 131 // alive when callbacks referencing |this| are called. However, after the |
131 // bus is shut down, |connection_| can be NULL. Hence, callbacks should | 132 // bus is shut down, |connection_| can be NULL. Hence, callbacks should |
132 // not rely on that |connection_| is alive. | 133 // not rely on that |connection_| is alive. |
133 class Bus : public base::RefCountedThreadSafe<Bus> { | 134 class CHROME_DBUS_EXPORT Bus : public base::RefCountedThreadSafe<Bus> { |
134 public: | 135 public: |
135 // Specifies the bus type. SESSION is used to communicate with per-user | 136 // Specifies the bus type. SESSION is used to communicate with per-user |
136 // services like GNOME applications. SYSTEM is used to communicate with | 137 // services like GNOME applications. SYSTEM is used to communicate with |
137 // system-wide services like NetworkManager. CUSTOM_ADDRESS is used to | 138 // system-wide services like NetworkManager. CUSTOM_ADDRESS is used to |
138 // communicate with an user specified address. | 139 // communicate with an user specified address. |
139 enum BusType { | 140 enum BusType { |
140 SESSION = DBUS_BUS_SESSION, | 141 SESSION = DBUS_BUS_SESSION, |
141 SYSTEM = DBUS_BUS_SYSTEM, | 142 SYSTEM = DBUS_BUS_SYSTEM, |
142 CUSTOM_ADDRESS, | 143 CUSTOM_ADDRESS, |
143 }; | 144 }; |
144 | 145 |
145 // Specifies the connection type. PRIVATE should usually be used unless | 146 // Specifies the connection type. PRIVATE should usually be used unless |
146 // you are sure that SHARED is safe for you, which is unlikely the case | 147 // you are sure that SHARED is safe for you, which is unlikely the case |
147 // in Chrome. | 148 // in Chrome. |
148 // | 149 // |
149 // PRIVATE gives you a private connection, that won't be shared with | 150 // PRIVATE gives you a private connection, that won't be shared with |
150 // other Bus objects. | 151 // other Bus objects. |
151 // | 152 // |
152 // SHARED gives you a connection shared among other Bus objects, which | 153 // SHARED gives you a connection shared among other Bus objects, which |
153 // is unsafe if the connection is shared with multiple threads. | 154 // is unsafe if the connection is shared with multiple threads. |
154 enum ConnectionType { | 155 enum ConnectionType { |
155 PRIVATE, | 156 PRIVATE, |
156 SHARED, | 157 SHARED, |
157 }; | 158 }; |
158 | 159 |
159 // Options used to create a Bus object. | 160 // Options used to create a Bus object. |
160 struct Options { | 161 struct CHROME_DBUS_EXPORT Options { |
161 Options(); | 162 Options(); |
162 ~Options(); | 163 ~Options(); |
163 | 164 |
164 BusType bus_type; // SESSION by default. | 165 BusType bus_type; // SESSION by default. |
165 ConnectionType connection_type; // PRIVATE by default. | 166 ConnectionType connection_type; // PRIVATE by default. |
166 // If dbus_thread_message_loop_proxy is set, the bus object will use that | 167 // If dbus_thread_message_loop_proxy is set, the bus object will use that |
167 // message loop to process asynchronous operations. | 168 // message loop to process asynchronous operations. |
168 // | 169 // |
169 // The thread servicing the message loop proxy should meet the following | 170 // The thread servicing the message loop proxy should meet the following |
170 // requirements: | 171 // requirements: |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
546 int num_pending_timeouts_; | 547 int num_pending_timeouts_; |
547 | 548 |
548 std::string address_; | 549 std::string address_; |
549 | 550 |
550 DISALLOW_COPY_AND_ASSIGN(Bus); | 551 DISALLOW_COPY_AND_ASSIGN(Bus); |
551 }; | 552 }; |
552 | 553 |
553 } // namespace dbus | 554 } // namespace dbus |
554 | 555 |
555 #endif // DBUS_BUS_H_ | 556 #endif // DBUS_BUS_H_ |
OLD | NEW |