Ejemplo n.º 1
0
        //public delegate int HelloRecvDelegate(out string name, uint serial, Udbus.Serialization.DbusConnectionParameters connectionParametersDbus);

        public static Udbus.Serialization.UdbusConnector.HelloRecvDelegate MakeHelloRecvDelegate(DbusMessageReceiverPool receiverPool)
        {
            return((out string name, Udbus.Serialization.UdbusConnector connector, uint serial, Udbus.Serialization.DbusConnectionParameters connectionParametersDbus) =>
            {
                name = default(string);

                int result;
                Udbus.Core.UdbusMessagePair msgResp = default(Udbus.Core.UdbusMessagePair);
                try
                {
                    msgResp = receiverPool.ReceiveMessageData(connector, serial, out result);
                    if (((result == 0) &&
                         (msgResp.QuEmpty == false)))
                    {
                        if ((msgResp.Data.typefield.type == Udbus.Types.dbus_msg_type.DBUS_TYPE_ERROR))
                        {
                            throw Udbus.Serialization.Exceptions.UdbusMessageMethodErrorException.Create("Hello", connectionParametersDbus, msgResp.Data);
                        }
                        else
                        {
                            Udbus.Serialization.UdbusMessageReader reader = new Udbus.Serialization.UdbusMessageReader(msgResp.Handle);
                            if ((result == 0))
                            {
                                string nameResult;
                                result = Udbus.Serialization.UdbusMessageReader.ReadString(reader, out nameResult);
                                if ((result == 0))
                                {
                                    name = nameResult;
                                }
                                else
                                {
                                    throw Udbus.Serialization.Exceptions.UdbusMessageMethodArgumentOutException.Create(1, "name", typeof(string), result, "Hello", connectionParametersDbus, msgResp.Data);
                                }
                            }
                            else
                            {
                                throw Udbus.Serialization.Exceptions.UdbusMessageMethodArgumentOutException.Create(0, "UnknownParameters", typeof(Udbus.Serialization.Exceptions.UdbusMessageMethodArgumentException.UnknownParameters), result, "Hello", connectionParametersDbus, msgResp.Data);
                            }
                        }
                    }
                    else
                    {
                        throw Udbus.Serialization.Exceptions.UdbusMethodReceiveException.Create("Hello", result, connectionParametersDbus);
                    }
                }
                finally
                {
                    if ((msgResp.QuEmpty == false))
                    {
                        msgResp.Dispose();
                    }
                }

                return result;
            });
        }
Ejemplo n.º 2
0
        public void onSignal(Udbus.Core.UdbusMessagePair messageData)
        {
            Udbus.Core.SignalKey key = new Udbus.Core.SignalKey(messageData.Data.path, messageData.Data.interface_, messageData.Data.method);

            //Console.WriteLine("Whoop !");
            //Console.WriteLine("Signal Registry...");
            //foreach (Udbus.Core.SignalKey keyIter in this.signals.Keys)
            //{
            //    Console.WriteLine(keyIter.Key);
            //}
            //Console.WriteLine("Message key...");
            //Console.WriteLine(key.Key);

            SignalEntry.HandleSignalMessageDelegate handler;

            if (this.signals.TryGetValue(key, out handler))
            {
                handler(messageData);
            }
        }
Ejemplo n.º 3
0
        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
        }
Ejemplo n.º 4
0
        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
        }
Ejemplo n.º 5
0
 public void onMethodReturn(Udbus.Core.UdbusMessagePair messageData)
 {
 }
Ejemplo n.º 6
0
 public void onError(Udbus.Core.UdbusMessagePair messageData)
 {
 }
Ejemplo n.º 7
0
 public void onDefault(Udbus.Core.UdbusMessagePair messageData)
 {
 }