...

Source file src/github.com/godbus/dbus/v5/server_interfaces.go

Documentation: github.com/godbus/dbus/v5

     1  package dbus
     2  
     3  // Terminator allows a handler to implement a shutdown mechanism that
     4  // is called when the connection terminates.
     5  type Terminator interface {
     6  	Terminate()
     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.
    14  type Handler interface {
    15  	LookupObject(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.
    26  type ServerObject interface {
    27  	LookupInterface(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.
    34  type Interface interface {
    35  	LookupMethod(name string) (Method, bool)
    36  }
    37  
    38  // A Method represents the exposed methods on D-Bus.
    39  type Method interface {
    40  	// Call requires that all arguments are decoded before being passed to it.
    41  	Call(args ...interface{}) ([]interface{}, error)
    42  	NumArguments() int
    43  	NumReturns() 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.
    47  	ArgumentValue(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.
    51  	ReturnValue(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.
    64  type 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.
    68  	DecodeArguments(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.
    76  type SignalHandler interface {
    77  	DeliverSignal(iface, name string, signal *Signal)
    78  }
    79  
    80  // SignalRegistrar manages signal delivery channels.
    81  //
    82  // This is an optional set of methods for `SignalHandler`.
    83  type SignalRegistrar interface {
    84  	AddSignal(ch chan<- *Signal)
    85  	RemoveSignal(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.
    95  type DBusError interface {
    96  	DBusError() (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.
   104  type SerialGenerator interface {
   105  	GetSerial() uint32
   106  	RetireSerial(serial uint32)
   107  }
   108  

View as plain text