Methods
Offer | (a{sv}: parameters, u: access_control) | → | s: address | |
Accept | (u: access_control) | → | s: address |
Signals
DBusNamesChanged | (a{us}: Added, au: Removed) |
Properties
ServiceName | s | Read only | Immutable, Requestable | |
DBusNames | a{us} ( DBus_Tube_Participants) | Read only | ||
SupportedAccessControls | au ( Socket_Access_Control_List) | Read only | Immutable |
Types
DBus_Tube_Participants | Mapping | a{us} |
Description
A D-Bus tube is an ordered reliable transport, for transporting D-Bus traffic.
For each D-Bus tube, the connection manager listens on a D-Bus server address, as detailed in the D-Bus specification. On this address, it emulates a bus upon which each tube participant appears as an endpoint.
The objects and interfaces which are expected to exist on the emulated bus depend on the well-known name; typically, either the participant who initiated the tube is expected to export the same objects/interfaces that would be exported by a service of that name on a bus, or all participants are expected to export those objects/interfaces.
In a multi-user context (Handle_Type_Room) the tube behaves like the D-Bus bus daemon, so participants can send each other private messages, or can send broadcast messages which are received by everyone in the tube (including themselves). Each participant has a D-Bus unique name; connection managers MUST prevent participants from sending messages with the wrong sender unique name, and SHOULD attempt to avoid participants receiving messages not intended for them.
In a 1-1 context (Handle_Type_Contact) the tube behaves like a peer-to-peer D-Bus connection - arbitrary D-Bus messages with any sender and/or destination can be sent by each participant, and each participant receives all messages sent by the other participant.
Methods
Offer (a{sv}: parameters, u: access_control) → s: address
Parameters
- parameters — a{sv} (String_Variant_Map)
- access_control — u (Socket_Access_Control)
Returns
- address — s
Possible Errors
- Network Error
- Not Available
Accept (u: access_control) → s: address
Parameters
- access_control — u (Socket_Access_Control)
Returns
- address — s
Signals
DBusNamesChanged (a{us}: Added, au: Removed)
Parameters
- Added — a{us} (DBus_Tube_Participants)
- Removed — au (Contact_Handle_List)
Properties
ServiceName — s
A string representing the service name that will be used over the tube. It SHOULD be a well-known D-Bus service name, of the form com.example.ServiceName.
When the tube is offered, the service name is transmitted to the other end.
When requesting a channel with CreateChannel, this property MUST be included in the request.
DBusNames — a{us} (DBus_Tube_Participants)
SupportedAccessControls — au (Socket_Access_Control_List)
A list of the access control types that are supported with this channel. Note that only Socket_Access_Control_Localhost and Socket_Access_Control_Credentials can be used with D-Bus tubes. Using Socket_Access_Control_Credentials is recommended.
Rationale:
Socket_Access_Control_Credentials is easy to implement for a D-Bus tube, because typical D-Bus library implementations like libdbus and GDBus already have to support it to be able to connect to the system or session bus, and usually enable it by default; so there's typically no good reason to relax access control to Localhost.
When requesting a channel with Connection.Interface.Requests.CreateChannel, this property MUST NOT be included in the request.
Types
DBus_Tube_Participants — a{us}
- Handle — u (Contact_Handle)
- Unique_Name — s (DBus_Unique_Name)