Ejemplo n.º 1
0
 public Request(INanoConnection c, byte interfaceId, byte commandId)
 {
     _connection  = c;
     MemoryStream = new MemoryStream();
     BinaryWriter = new BinaryWriter(MemoryStream);
     BinaryWriter.Write(interfaceId);
     BinaryWriter.Write(commandId);
 }
Ejemplo n.º 2
0
        public static void SetMessage(INanoConnection c, int message)
        {
            using (var request = new NanoNetworkCommand.Request(c, Interface.InterfaceId, (byte)CommandIds.SetNumber))
            {
                request.BinaryWriter.Write(message);
            }

            using (new NanoNetworkCommand.Response(c))
            {
            }
        }
Ejemplo n.º 3
0
        public static int GetNumber(INanoConnection c)
        {
            using (new NanoNetworkCommand.Request(c, Interface.InterfaceId, (byte)CommandIds.GetNumber))
            {
            }

            using (var response = new NanoNetworkCommand.Response(c))
            {
                return(response.BinaryReader.ReadInt32());
            }
        }
Ejemplo n.º 4
0
 public Response(INanoConnection c)
 {
     byte[] buf;
     NN.SetSockOpt(c.Socket, SocketOption.RCVTIMEO, (int)c.ConnectionTimeout.TotalMilliseconds);
     if (NN.Recv(c.Socket, out buf, SendRecvFlags.NONE) < 0)
     {
         throw new NanoNetworkCommandException("Error receiving response");
     }
     MemoryStream = new MemoryStream(buf);
     BinaryReader = new BinaryReader(MemoryStream);
 }
Ejemplo n.º 5
0
        public static double AddNumbers(INanoConnection c, double a, double b)
        {
            using (var request = new NanoNetworkCommand.Request(c, Interface.InterfaceId, (byte)CommandIds.AddNumbers))
            {
                request.BinaryWriter.Write(a);
                request.BinaryWriter.Write(b);
            }

            using (var response = new NanoNetworkCommand.Response(c))
            {
                return(response.BinaryReader.ReadDouble());
            }
        }
Ejemplo n.º 6
0
        public static T RetryUntilNoTimeout <T>(Del <T> del, INanoConnection connection, CloseOpenDelegate closeOpen)
        {
            while (true)
            {
                try
                {
                    return(del());
                }
                catch (Exception e)
                {
                    if (!(e is NanoNetworkCommandException))
                    {
                        throw e;
                    }

                    // nanomsg should really never get stuck. Arbitrarily wait a bit.
                    closeOpen(connection);
                }
            }
        }