Exemplo n.º 1
0
            static public NMessageHandle.UdbusMessageHandle StructureToHandle(NMessageStruct.UdbusMessageHandle msgStruct)
            {
                UdbusMessageBuilder builder = new UdbusMessageBuilder();

                builder.UdbusMessage(msgStruct.serial);

                string path        = msgStruct.path;
                string destination = msgStruct.destination;
                string interface_  = msgStruct.interface_;
                string error_name  = msgStruct.error_name;
                string method      = msgStruct.method;
                string sender      = msgStruct.sender;

                msgStruct.path = msgStruct.destination = msgStruct.interface_ = msgStruct.error_name = msgStruct.method = msgStruct.sender = null;

                Marshal.StructureToPtr(msgStruct, builder.Message.handle, false);

                builder
                .SetPath(path)
                .SetDestination(destination)
                .SetInterface(interface_)
                .SetErrorName(error_name)
                .SetMethod(method)
                .SetSender(sender)
                ;

                return(builder.Message);
            }
Exemplo n.º 2
0
        /// <summary>
        /// Receive a message structure.
        /// </summary>
        /// <param name="recv">Structure being received.</param>
        /// <returns>Zero if successful, otherwise non-zero.</returns>
        public int ReceiveStruct(out NMessageStruct.UdbusMessageHandle recv)
        {
            int result;

            using (NMessageHandle.UdbusMessageHandle recvHandle = this.ReceiveHandle(out result))
            {
                if (result == 0 && !recvHandle.IsInvalid) // If successfully got handle
                {
                    recv = recvHandle.HandleToStructure();
                }    // Ends if successfully got handle
                else // Else failed to get handle
                {
                    if (result == 0) // If appeared to get handle
                    {
                        result = -1;
                    } // Ends if appeared to get handle

                    recv = NMessageStruct.UdbusMessageHandle.Initialiser;
                } // Ends else failed to get handle
            }     // Ends using handle

            return(result);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Marshal a handle of this type into a structure.
 /// The IntPtr is supposed to be hidden from sight so this seems to be the only way forward.
 /// Not sure that referencing this.handle anywhere but "ReleaseHandle()" is permitted,
 /// but seriously how else is this supposed to get accomplished ?
 /// </summary>
 /// <param name="message"></param>
 public void HandleToStructure(out NMessageStruct.UdbusMessageHandle message)
 {
     message = this.HandleToStructure();
 }
Exemplo n.º 4
0
 internal extern static int dbus_msg_recv(ref Udbus.Serialization.ManagedDbusIo dbus_io, out NMessageStruct.UdbusMessageHandle msg);