transport_generic.go 907 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package dbus
  2. import (
  3. "encoding/binary"
  4. "errors"
  5. "io"
  6. "unsafe"
  7. )
  8. var nativeEndian binary.ByteOrder
  9. func detectEndianness() binary.ByteOrder {
  10. var x uint32 = 0x01020304
  11. if *(*byte)(unsafe.Pointer(&x)) == 0x01 {
  12. return binary.BigEndian
  13. }
  14. return binary.LittleEndian
  15. }
  16. func init() {
  17. nativeEndian = detectEndianness()
  18. }
  19. type genericTransport struct {
  20. io.ReadWriteCloser
  21. }
  22. func (t genericTransport) SendNullByte() error {
  23. _, err := t.Write([]byte{0})
  24. return err
  25. }
  26. func (t genericTransport) SupportsUnixFDs() bool {
  27. return false
  28. }
  29. func (t genericTransport) EnableUnixFDs() {}
  30. func (t genericTransport) ReadMessage() (*Message, error) {
  31. return DecodeMessage(t)
  32. }
  33. func (t genericTransport) SendMessage(msg *Message) error {
  34. for _, v := range msg.Body {
  35. if _, ok := v.(UnixFD); ok {
  36. return errors.New("dbus: unix fd passing not enabled")
  37. }
  38. }
  39. return msg.EncodeTo(t, nativeEndian)
  40. }