Example #1
0
        /// <summary>
        /// Receive a message handle.
        /// </summary>
        /// <param name="result">Zero if successful, otherwise non-zero.</param>
        /// <returns>Message handle if successful, otherwise null.</returns>
        public NMessageHandle.UdbusMessageHandle ReceiveHandle(out int result)
        {
            result = -1;
            NMessage.UdbusMessageHandle recv = NMessageHandle.UdbusMessageHandle.Initialiser;

            if (this.transport.WaitForRead(XHT_DEFAULT_TIMEOUT) == WaitForReadResult.Succeeded) // If there's something to read
            {
                result = UdbusMsgHandleFunctions.dbus_msg_recv(ref this.dbio, out recv);
            } // Ends if there's something to read

            return(recv);
        }
Example #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);
        }
Example #3
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);
        }