示例#1
0
 //public int Hello(out string name, Udbus.Core.IUdbusSerialNumberManager serialManager, Udbus.Core.DbusMessageReceiverPool receiverPool)
 //{
 //    name = default(string);
 //    uint serial = serialManager.GetNext();
 //    Udbus.Serialization.UdbusMessageBuilder builder = new Udbus.Serialization.UdbusMessageBuilder();
 //    Udbus.Core.NMessageHandle.UdbusMessageHandle msgHandleSend = null;
 //    int result = -1;
 //    Udbus.Serialization.DbusConnectionParameters connectionParametersDbus = defaultConnectionParametersDbus;
 //    try
 //    {
 //        result = builder.UdbusMethodMessage(serial, connectionParametersDbus, "Hello").Result;
 //        if ((result == 0))
 //        {
 //            msgHandleSend = builder.Message;
 //            result = this.Send(msgHandleSend);
 //            if ((result != 0))
 //            {
 //                throw Udbus.Core.Exceptions.UdbusMethodSendException.Create("Hello", result, connectionParametersDbus);
 //            }
 //        }
 //    }
 //    finally
 //    {
 //        if ((msgHandleSend != null))
 //        {
 //            msgHandleSend.Dispose();
 //        }
 //    }
 //    if ((result == 0))
 //    {
 //        Udbus.Core.UdbusMessagePair msgResp = default(Udbus.Core.UdbusMessagePair);
 //        try
 //        {
 //            msgResp = receiverPool.ReceiveMessageData(this, serial, out result);
 //            if (((result == 0)
 //                        && (msgResp.QuEmpty == false)))
 //            {
 //                if ((msgResp.Data.typefield.type == Udbus.Core.dbus_msg_type.DBUS_TYPE_ERROR))
 //                {
 //                    throw Udbus.Core.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.Core.Exceptions.UdbusMessageMethodArgumentOutException.Create(1, "name", typeof(string), result, "Hello", connectionParametersDbus, msgResp.Data);
 //                        }
 //                    }
 //                    else
 //                    {
 //                        throw Udbus.Core.Exceptions.UdbusMessageMethodArgumentOutException.Create(0, "UnknownParameters", typeof(Udbus.Core.Exceptions.UdbusMessageMethodArgumentException.UnknownParameters), result, "Hello", connectionParametersDbus, msgResp.Data);
 //                    }
 //                }
 //            }
 //            else
 //            {
 //                throw Udbus.Core.Exceptions.UdbusMethodReceiveException.Create("Hello", result, connectionParametersDbus);
 //            }
 //        }
 //        finally
 //        {
 //            if ((msgResp.QuEmpty == false))
 //            {
 //                msgResp.Dispose();
 //            }
 //        }
 //    }
 //    return result;
 //}
 /// Udbus send/receive
 public int Send(NMessage.UdbusMessageHandle msg)
 {
     int result = NMessageFunctions.dbus_msg_send(ref this.dbio, msg);
     return result;
 }
示例#2
0
        /// <summary>
        /// Whichever namespace we're using as NMessage, receive one of those.
        /// </summary>
        /// <param name="recv">Received message or initialiser value on failure.</param>
        /// <returns>Zero if successful, otherwise non-zero.</returns>
        public int Receive(out NMessage.UdbusMessageHandle recv)
        {
            int result = -1;
            recv = NMessage.UdbusMessageHandle.Initialiser;

            if (this.transport.WaitForRead(XHT_DEFAULT_TIMEOUT) == WaitForReadResult.Succeeded)
            {
                result = NMessageFunctions.dbus_msg_recv(ref this.dbio, out recv);
            }

            return result;
        }