Example #1
0
        public override void Send(byte[] buffer, int index, int length, INode destination)
        {
            var clientSocket = SocketMap[destination];

            try
            {
                if (clientSocket.WasDisposed)
                {
                    CloseConnection(clientSocket);
                    return;
                }

                var buf = Allocator.Buffer(length);
                buf.WriteBytes(buffer, index, length);
                List <IByteBuf> encodedMessages;
                Encoder.Encode(ConnectionAdapter, buf, out encodedMessages);
                foreach (var message in encodedMessages)
                {
                    var state = CreateNetworkState(clientSocket.Socket, destination, message, 0);
                    clientSocket.Socket.BeginSendTo(message.ToArray(), 0, message.ReadableBytes, SocketFlags.None,
                                                    destination.ToEndPoint(),
                                                    SendCallback, state);
                }
            }
            catch (SocketException ex)
            {
                CloseConnection(ex, clientSocket);
            }
            catch (Exception ex)
            {
                OnErrorIfNotNull(ex, clientSocket);
            }
        }
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="buffer"></param>
        /// <param name="index"></param>
        /// <param name="length"></param>
        /// <param name="destination"></param>
        public override void Send(byte[] buffer, int index, int length, INode destination)
        {
            var clientSocket = SocketMap[destination.nodeConfig.ToString()];

            try
            {
                if (clientSocket.WasDisposed)
                {
                    CloseConnection(clientSocket);
                    return;
                }

                var buf = Allocator.Buffer(length);
                buf.WriteBytes(buffer, index, length);
                List <IByteBuf> encodedMessages;
                Encoder.Encode(ConnectionAdapter, buf, out encodedMessages);
                foreach (var message in encodedMessages)
                {
                    ListenerSocket.Write(message.ToArray(), message.ReaderIndex, message.ReadableBytes);
                    string log = String.Format("{0}:串口发送数据-->>{1}", DateTime.Now.ToString("hh:mm:ss"), this.Encoder.ByteEncode(message.ToArray()));
                    Console.WriteLine(log);
                    clientSocket.Receiving = true;
                }
            }
            catch (Exception ex)
            {
                CloseConnection(ex, clientSocket);
            }
        }
Example #3
0
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="buffer"></param>
        /// <param name="index"></param>
        /// <param name="length"></param>
        /// <param name="destination"></param>
        public override void Send(byte[] buffer, int index, int length, INode destination)
        {
            var clientSocket = SocketMap[destination.nodeConfig.ToString()];

            try
            {
                if (clientSocket.WasDisposed)
                {
                    CloseConnection(clientSocket);
                    return;
                }
                var buf = Allocator.Buffer(length);
                buf.WriteBytes(buffer, index, length);
                Encoder.Encode(ConnectionAdapter, buf, out List <IByteBuf> encodedMessages);
                foreach (var message in encodedMessages)
                {
                    var state = CreateNetworkState(clientSocket.Local, destination, message, 0);
                    ListenerSocket.BeginSendTo(message.ToArray(), 0, message.ReadableBytes, SocketFlags.None,
                                               destination.ToEndPoint <EndPoint>(), SendCallback, state);
                    LogAgent.Info(String.Format("发送数据-{0}-->>{1}", this.Listener.reactorType, this.Encoder.ByteEncode(message.ToArray())));
                    clientSocket.Receiving = true;
                }
            }
            catch (Exception ex)
            {
                LogAgent.Error(ex.ToString());
                CloseConnection(ex, clientSocket);
            }
        }
Example #4
0
        protected override void SendInternal(byte[] buffer, int index, int length, INode destination)
        {
            try
            {
                if (WasDisposed || !_client.Connected)
                {
                    Close();
                    return;
                }

                var buf = Allocator.Buffer(length);
                buf.WriteBytes(buffer, index, length);
                List <IByteBuf> encodedMessages;
                Encoder.Encode(this, buf, out encodedMessages);
                foreach (var message in encodedMessages)
                {
                    var bytesToSend = message.ToArray();
                    var bytesSent   = 0;
                    while (bytesSent < bytesToSend.Length)
                    {
                        bytesSent += _client.Client.Send(bytesToSend, bytesSent, bytesToSend.Length - bytesSent,
                                                         SocketFlags.None);
                    }
                }
            }
            catch (SocketException ex)
            {
                Close(ex);
            }
            catch (Exception ex)
            {
                InvokeErrorIfNotNull(ex);
            }
        }
Example #5
0
        public override void Send(byte[] buffer, int index, int length, INode destination)
        {
            if (!SocketMap.TryGetValue(destination, out var clientSocket))
            {
                return;
            }
            try
            {
                if (clientSocket.WasDisposed || !clientSocket.Socket.Connected)
                {
                    CloseConnection(clientSocket);
                    return;
                }

                var buf = Allocator.Buffer(length);
                buf.WriteBytes(buffer, index, length);
                List <IByteBuf> encodedMessages;
                clientSocket.Encoder.Encode(ConnectionAdapter, buf, out encodedMessages);
                foreach (var message in encodedMessages)
                {
                    var bytesToSend = message.ToArray();
                    var bytesSent   = 0;
                    while (bytesSent < bytesToSend.Length)
                    {
                        bytesSent += clientSocket.Socket.Send(bytesToSend, bytesSent, bytesToSend.Length - bytesSent,
                                                              SocketFlags.None);
                    }
                    HeliosTrace.Instance.TcpInboundClientSend(bytesSent);
                    HeliosTrace.Instance.TcpInboundSendSuccess();
                }
            }
            catch (SocketException ex)
            {
                HeliosTrace.Instance.TcpClientSendFailure();
                CloseConnection(ex, clientSocket);
            }
            catch (Exception ex)
            {
                HeliosTrace.Instance.TcpClientSendFailure();
                OnErrorIfNotNull(ex, clientSocket);
            }
        }
Example #6
0
        protected override void SendInternal(byte[] buffer, int index, int length, INode destination)
        {
            try
            {
                if (Client == null || WasDisposed)
                {
                    HeliosTrace.Instance.UdpClientSendFailure();
                    Close();
                    return;
                }

                var buf = Allocator.Buffer(length);
                buf.WriteBytes(buffer, index, length);
                List <IByteBuf> encodedMessages;
                Encoder.Encode(this, buf, out encodedMessages);
                foreach (var message in encodedMessages)
                {
                    var bytesToSend = message.ToArray();
                    var bytesSent   = 0;
                    while (bytesSent < bytesToSend.Length)
                    {
                        bytesSent += Client.SendTo(bytesToSend, bytesSent, bytesToSend.Length - bytesSent,
                                                   SocketFlags.None, destination.ToEndPoint());
                    }
                    HeliosTrace.Instance.UdpClientSend(bytesSent);
                    HeliosTrace.Instance.UdpClientSendSuccess();
                }
            }
            catch (SocketException ex)
            {
                HeliosTrace.Instance.UdpClientSendFailure();
                Close(ex);
            }
            catch (Exception ex)
            {
                HeliosTrace.Instance.UdpClientSendFailure();
                InvokeErrorIfNotNull(ex);
            }
        }
Example #7
0
        private void SendInternal(byte[] buffer, int index, int length, INode remoteHost)
        {
            try
            {
                if (WasDisposed || Socket == null || !Socket.Connected)
                {
                    Close();
                    return;
                }

                var buf = Allocator.Buffer(length);
                buf.WriteBytes(buffer, index, length);
                List <IByteBuf> encodedMessages;
                Encoder.Encode(this, buf, out encodedMessages);
                foreach (var message in encodedMessages)
                {
                    var bytesToSend = message.ToArray();
                    var bytesSent   = 0;
                    while (bytesSent < bytesToSend.Length)
                    {
                        bytesSent += Socket.Send(bytesToSend, bytesSent, bytesToSend.Length - bytesSent,
                                                 SocketFlags.None);
                    }
                    HeliosTrace.Instance.TcpInboundClientSend(bytesSent);
                    HeliosTrace.Instance.TcpInboundSendSuccess();
                }
            }
            catch (SocketException ex)
            {
                HeliosTrace.Instance.TcpClientSendFailure();
                Close();
            }
            catch (Exception ex)
            {
                HeliosTrace.Instance.TcpClientSendFailure();
                InvokeErrorIfNotNull(ex);
            }
        }
Example #8
0
 protected NetworkState CreateNetworkState(Socket socket, INode remotehost)
 {
     return(CreateNetworkState(socket, remotehost, Allocator.Buffer(), BufferSize));
 }
Example #9
0
        protected NetworkState CreateNetworkState(SerialPort socket, INode remotehost)
        {
            IByteBuf byteBuf = Allocator == null ? null : Allocator.Buffer();

            return(CreateNetworkState(socket, remotehost, byteBuf, BufferSize));
        }
Example #10
0
 public IByteBuf ReadBytes(IByteBuf destination)
 {
     return(Allocator.Buffer());
 }