示例#1
0
 public ServiceBaseConnectionParams(Udbus.Serialization.IUdbusTransport connection,
                                    Udbus.Serialization.UdbusConnector connector)
     : this(connection, connector, null, null)
 {
     //this.Connection = connection;
     //this.Connector = connector;
 }
示例#2
0
 private ServiceConnectionParams(Udbus.Serialization.IUdbusTransport connection,
                                 Udbus.Serialization.UdbusConnector connector,
                                 string name,
                                 ConstructorPoolArgs poolArgs,
                                 Udbus.Core.IUdbusSerialNumberManager serialManager)
     : this(connection, connector, name, poolArgs.signalVisitor, poolArgs.signalVisitor, poolArgs.receiverPool, serialManager)
 {
 }
示例#3
0
 private ServiceBaseConnectionParams(Udbus.Serialization.IUdbusTransport connection
                                     , Udbus.Serialization.UdbusConnector connector
                                     , Udbus.Serialization.IUdbusTransport signalConnection
                                     )
     : this(connection, connector
            , signalConnection, InitializeSignalConnector(connection, connector, signalConnection))
 {
 }
示例#4
0
 public ServiceBaseConnectionParams(Udbus.Serialization.IUdbusTransport connection,
                                    Udbus.Serialization.UdbusConnector connector,
                                    Udbus.Serialization.IUdbusTransport signalConnection,
                                    Udbus.Serialization.UdbusConnector signalConnector)
 {
     this.Connection       = connection;
     this.Connector        = connector;
     this.signalConnection = signalConnection;
     this.signalConnector  = signalConnector;
 }
示例#5
0
 public VisitorThreadInfo(Udbus.Serialization.UdbusConnector connector,
                          Udbus.Core.IUdbusMessageVisitor visitor,
                          Udbus.Core.DbusMessageReceiverPool pool,
                          System.Threading.EventWaitHandle stop,
                          System.IO.TextWriter output)
 {
     this.connector = connector;
     this.visitor   = visitor;
     this.pool      = pool;
     this.stop      = stop;
     this.output    = output;
 }
示例#6
0
 public ServiceConnectionParams(Udbus.Serialization.IUdbusTransport connection,
                                Udbus.Serialization.UdbusConnector connector,
                                string name,
                                Udbus.Serialization.IUdbusTransport signalConnection,
                                Udbus.Core.IRegisterSignalHandlers registerSignalHandlers,
                                Udbus.Core.IStoppableUdbusMessageVisitor signalVisitor,
                                Udbus.Core.DbusMessageReceiverPool receiverPool,
                                Udbus.Core.IUdbusSerialNumberManager serialManager)
     : this(connection, new ConstructorConnectorArgs(connector, name)
            , signalConnection, registerSignalHandlers, signalVisitor, receiverPool, serialManager)
 {
 }
示例#7
0
        static private ConstructorConnectorArgs InitializeConnectorFromConnection(Udbus.Serialization.IUdbusTransport connection
                                                                                  , Udbus.Core.IUdbusSerialNumberManager serialManager
                                                                                  , Udbus.Core.DbusMessageReceiverPool receiverPool)
        {
            // We're going to throw away the name.
            string name;

            Udbus.Serialization.UdbusConnector createConnector = Udbus.Serialization.UdbusConnector.CreateHelloed(connection, serialManager.GetNext(), out name,
                                                                                                                  MakeHelloRecvDelegate(receiverPool)
                                                                                                                  );
            //Udbus.Serialization.UdbusConnector createConnector = Udbus.Serialization.UdbusConnector.CreateHelloed(out name, connection, serialManager, receiverPool);
            return(new ConstructorConnectorArgs(createConnector, name));
        }
示例#8
0
        static private Udbus.Serialization.UdbusConnector InitializeSignalConnector(Udbus.Serialization.IUdbusTransport connection, Udbus.Serialization.UdbusConnector connector,
                                                                                    Udbus.Serialization.IUdbusTransport connectionSignal)
        {
            Udbus.Serialization.UdbusConnector connectorSignal;
            if (object.ReferenceEquals(connection, connectionSignal))
            {
                connectorSignal = connector;
            }
            else
            {
                connectorSignal = InitializeConnectorFromConnection(connectionSignal);
            }

            return(connectorSignal);
        }
示例#9
0
 public ServiceConnectionParams(Udbus.Serialization.IUdbusTransport connection,
                                Udbus.Serialization.UdbusConnector connector,
                                string name,
                                Udbus.Core.IRegisterSignalHandlers registerSignalHandlers,
                                Udbus.Core.IStoppableUdbusMessageVisitor signalVisitor,
                                Udbus.Core.DbusMessageReceiverPool receiverPool,
                                Udbus.Core.IUdbusSerialNumberManager serialManager)
     : base(connection, connector)
 {
     this.Name                   = name;
     this.SignalName             = this.Name;
     this.RegisterSignalHandlers = registerSignalHandlers;
     this.SignalVisitor          = signalVisitor;
     this.ReceiverPool           = receiverPool;
     this.SerialManager          = serialManager;
 }
        public static void LoopUdbus(Udbus.Serialization.UdbusConnector connector, IUdbusMessageVisitor visitor, System.IO.TextWriter output, System.Threading.WaitHandle stop)
        {
            output.WriteLine("Looping...");
            int r = 0;

            while (r == 0 && stop.WaitOne(0) == false)
            {
                using (var msg = connector.ReceiveHandle(out r))
                {
                    Visit(r, msg, visitor);
                } // Ends using received message
            }     // Ends loop while getting results and not told to stop

            visitor.Reset();

            output.WriteLine("Finished looping...");
        }
示例#11
0
 public VisitorThreadInfo(Udbus.Serialization.UdbusConnector connector,
     Udbus.Core.IUdbusMessageVisitor visitor,
     Udbus.Core.DbusMessageReceiverPool pool,
     System.Threading.EventWaitHandle stop,
     System.IO.TextWriter output)
 {
     this.connector = connector;
     this.visitor = visitor;
     this.pool = pool;
     this.stop = stop;
     this.output = output;
 }
        static void TestReadWriteVariantStruct()
        {
            using (Udbus.Core.MockStoreUdbusTransport transport = new Udbus.Core.MockStoreUdbusTransport())
            {
                //Udbus.Serialization.UdbusConnector connector = Udbus.Serialization.UdbusConnector.CreateAuthorised(transport);
                Udbus.Serialization.UdbusConnector connector = new Udbus.Serialization.UdbusConnector(transport);
                Udbus.Serialization.UdbusMessageBuilderTracker builder = new Udbus.Serialization.UdbusMessageBuilderTracker();

                Udbus.Core.IUdbusMessageVisitor visitor = new Udbus.Core.UdbusMessageVisitorDumpXen();
                Udbus.Core.IUdbusMessageVisitor visitorTrack = new Udbus.Core.UdbusMessageVisitorFind(builder);
                Udbus.Core.IUdbusMessageVisitor visitors = new Udbus.Core.UdbusMessageVisitorMulti(visitor, visitorTrack);

                int result;
                using (var msg = builder.UdbusMethodMessage(
                                    "org.freedesktop.DBus", "/org/freedesktop/DBus",
                                    "org.freedesktop.DBus", "VariantStructMessage").Message)
                {
                    Udbus.Types.dbus_sig signature = Udbus.Types.dbus_sig.Initialiser;
                    signature.a[0] = Udbus.Types.dbus_type.DBUS_SIGNATURE;
                    signature.a[1] = Udbus.Types.dbus_type.DBUS_INVALID;
                    // As it happens these struct fields will double as dictionary entries...
                    object[] structFields = new object[] { 1, new object[] {"one", true } };

                    Udbus.Containers.dbus_union variantStruct = Udbus.Containers.dbus_union.CreateStruct(structFields,
                        new Udbus.Types.dbus_type[] {
                            Udbus.Types.dbus_type.DBUS_STRUCT_BEGIN,
                            Udbus.Types.dbus_type.DBUS_INT32,
                            Udbus.Types.dbus_type.DBUS_STRUCT_BEGIN,
                            Udbus.Types.dbus_type.DBUS_STRING,
                            Udbus.Types.dbus_type.DBUS_BOOLEAN,
                            Udbus.Types.dbus_type.DBUS_STRUCT_END,
                            Udbus.Types.dbus_type.DBUS_STRUCT_END,
                            Udbus.Types.dbus_type.DBUS_INVALID
                        }
                    );

                    builder.SetSignature(ref signature)
                        .BodyAdd(4096);
                    builder
                        .BodyAdd_Variant(variantStruct)
                    ;
                    result = connector.Send(msg);
                    Console.WriteLine("VariantStructMessage send result: {0}", result);
                }

                using (var msg = connector.ReceiveHandle(out result))
                {
                    Console.WriteLine("VariantStructMessage recv result: {0}. msg: {1}", result, msg);
                    if (result == 0) // If got message ok
                    {
                        Udbus.Core.UdbusMessagePair messageData = new Udbus.Core.UdbusMessagePair(msg);
                        Udbus.Serialization.UdbusMessageReader reader = new Udbus.Serialization.UdbusMessageReader(msg);

                        Udbus.Core.UdbusVisitorFunctions.Visit(result, msg, visitor);
                        Udbus.Containers.dbus_union variantReadStruct = reader.ReadVariant();
                        Console.WriteLine(string.Format("variantReadStruct: {0}", variantReadStruct.ToString()));

                    } // Ends if message ok
                } // Ends using receive message
            } // Ends using transport
        }
        static void TestReadWriteString()
        {
            using (Udbus.Core.MockStoreUdbusTransport transport = new Udbus.Core.MockStoreUdbusTransport())
            {
                //Udbus.Serialization.UdbusConnector connector = Udbus.Serialization.UdbusConnector.CreateAuthorised(transport);
                Udbus.Serialization.UdbusConnector connector = new Udbus.Serialization.UdbusConnector(transport);
                Udbus.Serialization.UdbusMessageBuilderTracker builder = new Udbus.Serialization.UdbusMessageBuilderTracker();

                Udbus.Core.IUdbusMessageVisitor visitor = new Udbus.Core.UdbusMessageVisitorDumpXen();
                Udbus.Core.IUdbusMessageVisitor visitorTrack = new Udbus.Core.UdbusMessageVisitorFind(builder);
                Udbus.Core.IUdbusMessageVisitor visitors = new Udbus.Core.UdbusMessageVisitorMulti(visitor, visitorTrack);

                int result;
                using (var msg = builder.UdbusMethodMessage(
                                    "org.freedesktop.DBus", "/org/freedesktop/DBus",
                                    "org.freedesktop.DBus", "NotARealMessage").Message)
                {
                    Udbus.Types.dbus_sig signature = Udbus.Types.dbus_sig.Initialiser;
                    signature.a[0] = Udbus.Types.dbus_type.DBUS_STRING;
                    signature.a[1] = Udbus.Types.dbus_type.DBUS_INVALID;
                    builder.SetSignature(ref signature)
                        .BodyAdd(4096)
                        .BodyAdd_String("param1")
                    ;
                    result = connector.Send(msg);
                    Console.WriteLine("NotARealMessagesend result: {0}", result);
                }

                using (var msg = connector.ReceiveHandle(out result))
                {
                    Console.WriteLine("NotARealMessage recv result: {0}. msg: {1}", result, msg);
                    if (result == 0) // If got message ok
                    {
                        Udbus.Core.UdbusMessagePair messageData = new Udbus.Core.UdbusMessagePair(msg);
                        Udbus.Serialization.UdbusMessageReader reader = new Udbus.Serialization.UdbusMessageReader(msg);

                        Udbus.Core.UdbusVisitorFunctions.Visit(result, msg, visitor);
                        //Udbus.Core.UdbusVisitorFunctions.Visit(result, msg, visitor);
                        string param1 = reader.ReadString();
                        Console.WriteLine(string.Format("Param1: {0}", param1));

                    } // Ends if message ok
                } // Ends using receive message
            } // Ends using transport
        }
示例#14
0
 // WAXME
 public ServiceBase(Udbus.Serialization.IUdbusTransport connection, Udbus.Serialization.UdbusConnector connector)
     : this(new ServiceBaseConnectionParams(connection, connector))
 {
 }
示例#15
0
 public ServiceConnectionParams(Udbus.Serialization.IUdbusTransport connection,
                                Udbus.Serialization.UdbusConnector connector,
                                string name)
     : this(connection, connector, name, DefaultPoolArgs(), DefaultSerialManager())
 {
 }
示例#16
0
 internal ConstructorConnectorArgs(Udbus.Serialization.UdbusConnector connector, string name)
 {
     this.connector = connector;
     this.name      = name;
 }