go-tg-screenshot-bot
107 строк · 3.8 Кб
1package dbus
2
3// Terminator allows a handler to implement a shutdown mechanism that
4// is called when the connection terminates.
5type Terminator interface {
6Terminate()
7}
8
9// Handler is the representation of a D-Bus Application.
10//
11// The Handler must have a way to lookup objects given
12// an ObjectPath. The returned object must implement the
13// ServerObject interface.
14type Handler interface {
15LookupObject(path ObjectPath) (ServerObject, bool)
16}
17
18// ServerObject is the representation of an D-Bus Object.
19//
20// Objects are registered at a path for a given Handler.
21// The Objects implement D-Bus interfaces. The semantics
22// of Interface lookup is up to the implementation of
23// the ServerObject. The ServerObject implementation may
24// choose to implement empty string as a valid interface
25// represeting all methods or not per the D-Bus specification.
26type ServerObject interface {
27LookupInterface(name string) (Interface, bool)
28}
29
30// An Interface is the representation of a D-Bus Interface.
31//
32// Interfaces are a grouping of methods implemented by the Objects.
33// Interfaces are responsible for routing method calls.
34type Interface interface {
35LookupMethod(name string) (Method, bool)
36}
37
38// A Method represents the exposed methods on D-Bus.
39type Method interface {
40// Call requires that all arguments are decoded before being passed to it.
41Call(args ...interface{}) ([]interface{}, error)
42NumArguments() int
43NumReturns() int
44// ArgumentValue returns a representative value for the argument at position
45// it should be of the proper type. reflect.Zero would be a good mechanism
46// to use for this Value.
47ArgumentValue(position int) interface{}
48// ReturnValue returns a representative value for the return at position
49// it should be of the proper type. reflect.Zero would be a good mechanism
50// to use for this Value.
51ReturnValue(position int) interface{}
52}
53
54// An Argument Decoder can decode arguments using the non-standard mechanism
55//
56// If a method implements this interface then the non-standard
57// decoder will be used.
58//
59// Method arguments must be decoded from the message.
60// The mechanism for doing this will vary based on the
61// implementation of the method. A normal approach is provided
62// as part of this library, but may be replaced with
63// any other decoding scheme.
64type ArgumentDecoder interface {
65// To decode the arguments of a method the sender and message are
66// provided in case the semantics of the implementer provides access
67// to these as part of the method invocation.
68DecodeArguments(conn *Conn, sender string, msg *Message, args []interface{}) ([]interface{}, error)
69}
70
71// A SignalHandler is responsible for delivering a signal.
72//
73// Signal delivery may be changed from the default channel
74// based approach by Handlers implementing the SignalHandler
75// interface.
76type SignalHandler interface {
77DeliverSignal(iface, name string, signal *Signal)
78}
79
80// SignalRegistrar manages signal delivery channels.
81//
82// This is an optional set of methods for `SignalHandler`.
83type SignalRegistrar interface {
84AddSignal(ch chan<- *Signal)
85RemoveSignal(ch chan<- *Signal)
86}
87
88// A DBusError is used to convert a generic object to a D-Bus error.
89//
90// Any custom error mechanism may implement this interface to provide
91// a custom encoding of the error on D-Bus. By default if a normal
92// error is returned, it will be encoded as the generic
93// "org.freedesktop.DBus.Error.Failed" error. By implementing this
94// interface as well a custom encoding may be provided.
95type DBusError interface {
96DBusError() (string, []interface{})
97}
98
99// SerialGenerator is responsible for serials generation.
100//
101// Different approaches for the serial generation can be used,
102// maintaining a map guarded with a mutex (the standard way) or
103// simply increment an atomic counter.
104type SerialGenerator interface {
105GetSerial() uint32
106RetireSerial(serial uint32)
107}
108