Exemple #1
0
 public void InvokeReceiveIfNotNull(NetworkData data)
 {
     if (NetworkEventLoop.Receive != null)
     {
         NetworkEventLoop.Receive(data, this);
     }
 }
Exemple #2
0
        public static void Receive(NetworkData data, IConnection channel)
        {
            var command = Encoding.UTF8.GetString(data.Buffer);

            //Console.WriteLine("Received: {0}", command);
            if (command.ToLowerInvariant() == "gettime")
            {
                var time = Encoding.UTF8.GetBytes(DateTime.Now.ToLongTimeString());
                channel.Send(new NetworkData {
                    Buffer = time, Length = time.Length, RemoteHost = channel.RemoteHost
                });
                //Console.WriteLine("Sent time to {0}", channel.Node);
            }
            else
            {
                Console.WriteLine("Invalid command: {0}", command);
                var invalid = Encoding.UTF8.GetBytes("Unrecognized command");
                channel.Send(new NetworkData
                {
                    Buffer     = invalid,
                    Length     = invalid.Length,
                    RemoteHost = channel.RemoteHost
                });
            }
        }
Exemple #3
0
    protected virtual void onRealtimeUpdate(float deltaTime)
    {
        if (m_CurNetworkData != null)
        {
            m_CurNetworkData.Timeout -= deltaTime;

            if (m_CurNetworkData.Timeout <= 0)
            {
                m_CurNetworkData.Callback("");
                m_CurNetworkData = null;
            }
        }

        if (m_CurNetworkData == null && m_NetworkDataList.Count > 0)
        {
            m_CurNetworkData = m_NetworkDataList[0];
            m_NetworkDataList.RemoveAt(0);

            if (m_CurCoroutine != null)
            {
                C_MonoSingleton <C_GameFramework> .GetInstance().StopCoroutine(m_CurCoroutine);
            }

            //开始请求数据
            m_CurCoroutine = C_MonoSingleton <C_GameFramework> .GetInstance().StartCoroutine(GetResponse(m_CurNetworkData));
        }
    }
Exemple #4
0
 protected override void ReceivedData(NetworkData availableData, ReactorResponseChannel responseChannel)
 {
     if (EventLoop.Receive != null)
     {
         EventLoop.Receive(availableData, responseChannel);
     }
 }
Exemple #5
0
        bool ICommand.Run(string MessageText, SlackRTM.Events.Message RawMessage, bool IsTargeted, SlackRTM.Slack Instance)
        {
            /* ****
            * Select.
            * ****/
            var match = Regex.Match(
                MessageText,
                @"(Select|Pick|With) (?<name>[\w:\.]+)",
                RegexOptions.IgnoreCase);

            if (IsTargeted && match.Success)
            {
                Host        LastHost;
                NetworkData network = Singleton <NetworkData> .Instance;
                Instance.SetLastHost(LastHost = network.Find(match.Groups["name"].Value));
                if (LastHost == null)
                {
                    Instance.SendMessage(RawMessage.Channel, "I couldn't find it");
                    return(true);
                }
                Instance.SendMessage(RawMessage.Channel, string.Format("{0}: {1} [{2}] ({3})", LastHost.FriendlyName, LastHost.Owner, network.Status(LastHost), LastHost.Age.ToString()));
                return(true);
            }
            return(false);
        }
        private async void SendImageMessage()
        {
            Console.WriteLine("STATUS: Sending a picture");

            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            openFileDialog.Filter           = "Image files (*.jpg;*.jpeg)|*.jpg;*.jpeg;";
            openFileDialog.RestoreDirectory = true;

            openFileDialog.ShowDialog();
            string filePath = openFileDialog.FileName;

            if (!String.IsNullOrEmpty(filePath))
            {
                Bitmap bitmap    = new Bitmap(filePath);
                string fileName  = Path.GetFileName(filePath);
                string imagePath = await FileService.SaveImage(bitmap, fileName);

                string           bitmapString = ImageService.BitmapToString(bitmap);
                NetworkData      networkImage = new NetworkData(User, NetworkDataType.Image, fileName + " " + bitmapString);
                ImageChatMessage visibleImage = new ImageChatMessage(networkImage.User.UserName, networkImage.Date,
                                                                     imagePath);
                ImageChatMessage hiddenImage = new ImageChatMessage(networkImage.User.UserName, networkImage.Date,
                                                                    imagePath, Visibility.Hidden);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    AddMessage(visibleImage, hiddenImage);
                });

                await Connection.SendNetworkData(networkImage);
            }
        }
        private async void AddReceivedMessage(NetworkData networkMessage)
        {
            if (networkMessage.DataType == NetworkDataType.Message)
            {
                TextChatMessage visibleMessage = new TextChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                     networkMessage.Data);
                TextChatMessage hiddenMessage = new TextChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                    networkMessage.Data, Visibility.Hidden);

                Application.Current.Dispatcher.Invoke(() =>
                {
                    AddMessage(visibleMessage, hiddenMessage, true);
                });
            }
            else if (networkMessage.DataType == NetworkDataType.Image)
            {
                string fileName  = networkMessage.Data.Split(new char[] { ' ' }, 2)[0];
                string imageData = networkMessage.Data.Split(new char[] { ' ' }, 2)[1];
                Console.WriteLine(fileName);
                Console.WriteLine(imageData);
                Bitmap receivedBitmap = ImageService.StringToBitmap(imageData);

                string imagePath = await FileService.SaveImage(receivedBitmap, fileName, false);

                ImageChatMessage visibleImage = new ImageChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                     imagePath);
                ImageChatMessage hiddenImage = new ImageChatMessage(networkMessage.User.UserName, networkMessage.Date,
                                                                    imagePath, Visibility.Hidden);
                Application.Current.Dispatcher.Invoke(() =>
                {
                    AddMessage(visibleImage, hiddenImage, true);
                });
            }
        }
 /// <summary>
 /// 方法被实现直接调用,以将数据发送给它
 /// </summary>
 /// <param name="data">The data to pass directly to the recipient</param>
 public virtual void OnReceive(NetworkData data)
 {
     if (this.ReceiveList != null)
     {
         this.ReceiveList(data, this);   //发出警报
     }
 }
        protected override void OnMessage(NetworkData data, IConnection responseChannel)
        {
            var protoMessage  = _protobufDecoder.Decode(data.Buffer);
            var testkitMesage = _msgDecoder.Decode(protoMessage);

            _handler.OnMessage(testkitMesage, responseChannel);
        }
Exemple #10
0
 /// <summary>
 /// 数据接收
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void PortDataReceived(object sender, SerialDataReceivedEventArgs e)
 {
     Thread.Sleep(50);
     ////禁止接收事件时直接退出
     //if (OnReceive==null) return;
                 if (this.WasDisposed)
     {
         return;
     }
                                    //如果正在关闭,忽略操作,直接返回,尽快的完成串口监听线程的一次循环
                 try
     {
         this.IsParsing = true;  //设置标记,说明已经开始处理数据,一会儿要使用系统UI
                         int n = ListenerSocket.BytesToRead;
         byte[] buf            = new byte[n];
         this.ListenerSocket.Read(buf, 0, n);
         NetworkData networkData = NetworkData.Create(this.Listener, buf, n);
         this.ReceivedData(networkData);
     }
     catch (Exception ex)
     {
         string enmsg = string.Format("Serial Port {0} Communication Fail\r\n" + ex.ToString(), ListenerSocket.PortName);
     }
     finally
     {
         IsParsing = false;   //监听完毕, UI可关闭串口
                    
     }
 }
Exemple #11
0
    void OnNetworkDataReceived(object sender, ReceivedNetworkDataEventArgs e)
    {
        NetworkData data = e.Data;

        switch (e.Type)
        {
        case ENetDataType.ExperimentState:
        {
            ExperimentState state = (ExperimentState)data;
            ExperimentManager.Instance().SetExperimentStatus(state.Status);
            break;
        }

        case ENetDataType.UserState:
            ExperimentManager.Instance().ReceivedUserStateUpdate((UserState)data);
            break;

        case ENetDataType.RandomState:
            ExperimentManager.Instance().ReceivedRandomStateUpdate((RandomState)data);
            break;

        case ENetDataType.ResponseState:
            ExperimentManager.Instance().ReceivedResponseStateUpdate((ResponseState)data);
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }
    }
Exemple #12
0
    public void AddPlayer(NetworkData player)
    {
        var text      = playerTexts[player.NetworkID];
        var component = text.GetComponent <Text>();

        component.text = player.Username + "[" + player.NetworkID + "]";
    }
Exemple #13
0
 /// <summary>
 /// Abstract method to be filled in by a child class - data received from the
 /// network is injected into this method via the <see cref="NetworkData" /> data type.
 /// </summary>
 /// <param name="availableData">Data available from the network, including a response address</param>
 /// <param name="responseChannel">Available channel for handling network response</param>
 protected virtual void ReceivedData(NetworkData availableData)
 {
     //if (EventLoop.Receive != null)
     //{
     //    EventLoop.Receive(availableData, responseChannel);
     //}
 }
    public async Task SerializesToValidNetworkDataV2()
    {
        var serializer  = new YamlSerializer();
        var networkData = new NetworkData(new Dictionary <string, object>
        {
            { "ethernets", new
              {
                  eth0 = new
                  {
                      match = new { macaddress = "00:11:22:33:44:55" },
                      dhcp4 = true
                  }
              } }
        });

        await using var resultStream = await serializer.SerializeToYaml(networkData);

        using var streamReader = new StreamReader(resultStream);
        var act = await streamReader.ReadToEndAsync();

        Assert.Equal(@"version: 2
ethernets:
  eth0:
    match:
      macaddress: 00:11:22:33:44:55
    dhcp4: true
", act);
    }
Exemple #15
0
        public override NetworkData GetNetworkData()
        {
            try{
                NetworkInterface intf = NetworkInterface.GetAllNetworkInterfaces().First(x => x.Name.ToLower().Equals(NETWORKINTERFACE_WIFI)) as NetworkInterface;
                intf = (intf == null || (intf != null && intf.GetIPProperties().UnicastAddresses.Count == 0) ? NetworkInterface.GetAllNetworkInterfaces().First(x => x.Name.ToLower().Equals(NETWORKINTERFACE_3G)) as NetworkInterface : intf);
                if (intf != null && intf.GetIPProperties().UnicastAddresses.Count > 0)
                {
                    NetworkData returnData = new NetworkData();
                    foreach (var addrInfo in intf.GetIPProperties().UnicastAddresses)
                    {
                        switch (addrInfo.Address.AddressFamily)
                        {
                        case System.Net.Sockets.AddressFamily.InterNetwork:
                            //IPv4
                            returnData.IPv4 = addrInfo.Address.ToString();
                            break;

                        case System.Net.Sockets.AddressFamily.InterNetworkV6:
                            //IPv6
                            returnData.IPv6 = addrInfo.Address.ToString();
                            if (returnData.IPv6.Contains("%"))
                            {
                                returnData.IPv6 = returnData.IPv6.Split('%')[0];
                            }
                            break;

                        default:
                            break;
                        }
                    }
                    return(returnData);
                }
            }catch (Exception ex) { SystemLogger.Log(SystemLogger.Module.PLATFORM, "Error found while retrieving NetworkData", ex); }
            return(null);
        }
Exemple #16
0
 public void Process(NetworkData networkData)
 {
     if (processors.TryGetValue(networkData.GetType(), out Tuple <object, MethodInfo> info))
     {
         info.Item2.Invoke(info.Item1, new object[] { networkData });
     }
 }
        public dynamic GetReportData()
        {
            // Generating employee list
            var employees = Enumerable
                            .Range(0, NumberData.GetNumber(10, 50))
                            .Select(i =>
            {
                dynamic newEmployee         = new ExpandoObject();
                newEmployee.BirthDate       = DateTimeData.GetDatetime(new DateTime(1973, 1, 1), new DateTime(1997, 12, 1));
                newEmployee.FirstName       = NameData.GetFirstName();
                newEmployee.LastName        = NameData.GetSurname();
                newEmployee.Company         = NameData.GetCompanyName();
                newEmployee.Email           = NetworkData.GetEmail();
                newEmployee.PhoneNumber     = PhoneNumberData.GetInternationalPhoneNumber();
                newEmployee.Address         = string.Format("{0} {1} {2}\n{3},{4} {5}", PlaceData.GetStreetName(), PlaceData.GetStreetNumber(), PlaceData.GetAddress(), PlaceData.GetCity(), PlaceData.GetState(), PlaceData.GetZipCode());
                newEmployee.PersonalQuote   = TextData.GetSentences(5);
                newEmployee.PorfileFileName = $"{FakeData.NumberData.GetNumber(0,7)}.png";
                // NOTE: Even though ExpandoObject is compatible with IDictionary<string,object>,
                //       The template engine only accepts Dictionary<string,object>
                return(new Dictionary <string, object>(newEmployee));
            })
                            .ToList();

            dynamic reportData = new ExpandoObject();

            reportData.Employees = employees;
            return(reportData);
        }
Exemple #18
0
        protected void InitOutbound(IConnection channel, INode remoteSocketAddress, NetworkData msg)
        {
            AssociationHandle handle;

            Init(channel, remoteSocketAddress, RemoteAddress, msg, out handle);
            StatusPromise.SetResult(handle);
        }
Exemple #19
0
    public void Init(int id)
    {
        clientId    = id;
        authorityId = id + 1;
        IsTrue(clientId >= 0 && clientId < MaxClients);
        IsTrue(authorityId >= 0 && authorityId < MaxAuthority);

        if (id == 0)
        {
            client = null; //initialize as server
            server = new NetworkData[MaxClients - 1];

            for (int i = 0; i < server.Length; ++i)
            {
                server[i] = new NetworkData();
                InitPriorities(server[i]);
            }
        }
        else
        {
            client = new NetworkData(); //initialize as client
            server = null;
            InitPriorities(client);
        }
    }
Exemple #20
0
 void InitPriorities(NetworkData data)
 {
     for (int i = 0; i < MaxCubes; ++i)
     {
         data.priorities[i].cubeId = i;
     }
 }
Exemple #21
0
        public void TextChatMessageListener(NetworkData data)
        {
            TextChatMessage textChatMessage = data as TextChatMessage;
            String          Msg             = textChatMessage.MessageText;

            if (Msg.StartsWith("/"))
            {
                Player player1 = Server.GetPlayer(textChatMessage.Sender);
                textChatMessage.Name = player1.Name;

                string[] chatCommandArray = Msg.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                string   command          = chatCommandArray.First();
                //Send to COmmand Manager
                if (chatCommandArray.Length > 1)
                {
                    CommandManager.HandlePlayerCommand(chatCommandArray.First().Replace("/", ""), chatCommandArray.Skip(1).ToArray(), player1);
                }
                else
                {
                    CommandManager.HandlePlayerCommand(chatCommandArray.First().Replace("/", ""), new String[] { }, player1);
                }

                return;
            }
            Server.TextChatMessageListener(data);
        }
Exemple #22
0
 public void ResetCubePriority(NetworkData data, int count, int[] cubeIds)
 {
     for (int i = 0; i < count; ++i)
     {
         data.priorities[cubeIds[i]].value = 0.0f;
     }
 }
Exemple #23
0
    void UpdateCubePriorities(NetworkData data)
    {
        IsTrue(snapshot != null);

        for (int i = 0; i < MaxCubes; ++i)
        {
            var cube = cubes[i].GetComponent <NetworkCube>();
            if (cube.HasHolder()) //don't send state updates held cubes. they are synchronized differently.
            {
                data.priorities[i].value = DontSend;
                continue;
            }
            if (IsClient() && cube.authorityId == 0 && !cube.isPendingCommit) //only send white cubes from client -> server if they are pending commit after returning to default authority
            {
                data.priorities[i].value = DontSend;
                continue;
            }

            var priority = 1.0f; //base priority

            if (collisionFrames[i] + CollisionPriority >= simulationFrame)
            {
                priority = 10.0f; //higher priority for cubes that were recently in a high energy collision
            }
            if (cube.heldFrame + ThrownObjectPriority >= (long)simulationFrame)
            {
                priority = 1000000.0f; //*extremely* high priority for cubes that were just thrown by a player
            }
            data.priorities[i].value += priority;
        }
    }
Exemple #24
0
 public void Shutdown()
 {
     clientId    = 0;
     authorityId = 0;
     client      = null;
     server      = null;
 }
Exemple #25
0
        private async Task Queue(NetworkData nd)
        {
            if (nd == null)
            {
                return;
            }
            if (nd is NetworkDataKeepAlive keepAlive)
            {
                return;
            }

            using (var messages = await messageQueue.WaitAsync())
            {
                if (waitMessage.IsWaiting())
                {
                    messages.Value.Enqueue(nd);
                    waitMessage.Signal();
                }
                else
                {
                    var onMessageReceived = OnMessageReceived;
                    if (onMessageReceived != null)
                    {
                        _ = onMessageReceived(this, nd, cancel.Token);
                    }
                    else
                    {
                        messages.Value.Enqueue(nd);
                    }
                }
            }
        }
Exemple #26
0
 protected override void OnMessage(NetworkData data, IConnection responseChannel)
 {
     if (data.Length > 0)
     {
         ChannelLocalActor.Notify(responseChannel, new InboundPayload(FromData(data)));
     }
 }
        protected virtual void ReceiveCallback(IAsyncResult ar)
        {
            var receiveState = (NetworkState)ar.AsyncState;

            try
            {
                var received = receiveState.Socket.EndReceive(ar);

                if (!receiveState.Socket.Connected || received == 0)
                {
                    Receiving = false;
                    Close(new HeliosConnectionException(ExceptionType.Closed));
                    return;
                }

                receiveState.Buffer.WriteBytes(receiveState.RawBuffer, 0, received);

                List <IByteBuf> decoded;
                Decoder.Decode(this, receiveState.Buffer, out decoded);

                foreach (var message in decoded)
                {
                    var networkData = NetworkData.Create(receiveState.RemoteHost, message);
                    InvokeReceiveIfNotNull(networkData);
                }

                //reuse the buffer
                if (receiveState.Buffer.ReadableBytes == 0)
                {
                    receiveState.Buffer.SetIndex(0, 0);
                }
                else
                {
                    receiveState.Buffer.CompactIfNecessary();
                }

                //continue receiving in a loop
                if (Receiving)
                {
                    receiveState.Socket.BeginReceive(receiveState.RawBuffer, 0, receiveState.RawBuffer.Length,
                                                     SocketFlags.None, ReceiveCallback, receiveState);
                }
            }
            catch (SocketException ex) //typically means that the socket is now closed
            {
                Receiving = false;
                Close(new HeliosConnectionException(ExceptionType.Closed, ex));
            }
            catch (ObjectDisposedException ex) //socket was already disposed
            {
                Receiving = false;
                InvokeDisconnectIfNotNull(RemoteHost,
                                          new HeliosConnectionException(ExceptionType.Closed, ex));
            }
            catch (Exception ex)
            {
                InvokeErrorIfNotNull(ex);
            }
        }
        public void Encode(NetworkData data, out List <NetworkData> encoded)
        {
            var length = data.Length + _lengthAdjustment;

            if (_lengthIncludesLenghtFieldLength)
            {
                length += _lengthFieldLength;
            }

            encoded = new List <NetworkData>();
            if (length < 0)
            {
                throw new ArgumentException(string.Format("Adjusted frame length ({0}) is less than zero", length));
            }

            var newData = new byte[0];

            using (var memoryStream = new MemoryStream())
            {
                switch (_lengthFieldLength)
                {
                case 1:
                    if (length >= 256)
                    {
                        throw new ArgumentException("length of object does not fit into one byte: " + length);
                    }
                    memoryStream.Write(BitConverter.GetBytes((byte)length), 0, 1);
                    break;

                case 2:
                    if (length >= 65536)
                    {
                        throw new ArgumentException("length of object does not fit into a short integer: " + length);
                    }
                    memoryStream.Write(BitConverter.GetBytes((ushort)length), 0, 2);
                    break;

                case 4:
                    memoryStream.Write(BitConverter.GetBytes((uint)length), 0, 4);
                    break;

                case 8:
                    memoryStream.Write(BitConverter.GetBytes((long)length), 0, 8);
                    break;

                default:
                    throw new Exception("Unknown lenght field length");
                }

                memoryStream.Write(data.Buffer, 0, data.Length);
                newData = memoryStream.GetBuffer();
            }

            var networkData = NetworkData.Create(data.RemoteHost, newData,
                                                 _lengthIncludesLenghtFieldLength ? length : length + _lengthFieldLength);

            encoded.Add(networkData);
            HeliosTrace.Instance.EncodeSuccess();
        }
Exemple #29
0
 public virtual ResultOfParsingFrame ParseToFrame(NetworkData data)
 {
     if (data == null)
     {
         return(ResultOfParsingFrame.FormatNotMatched);
     }
     return(ParseToFrame(data.Buffer));
 }
        public void CreateNetworkData(int probeDataId, NetworkData data)
        {
            data.ProbeDataId = probeDataId;
            data.CreatedOn   = DateTime.UtcNow;

            _Context.NetworkData.Add(data);
            _Context.SaveChanges();
        }
 public void SerializeNetworkData()
 {
     NetworkData networkData = GetNetworkTestData();
     byte[] serializedData = networkData.ToByte();
     var deserializedNetworkData = new NetworkData(serializedData);
     // TODO: implement IEquatable<>
     AssertThatDataAreEqual(GetNetworkTestData(), deserializedNetworkData);
 }
 private void AssertThatDataAreEqual(NetworkData expectedData, NetworkData actualData)
 {
     Assert.AreEqual(expectedData.Command, actualData.Command);
     Assert.AreEqual(expectedData.UserId, actualData.UserId);
     Assert.AreEqual(expectedData.AppName, actualData.AppName);
     Assert.AreEqual(expectedData.Platform, actualData.Platform);
     Assert.AreEqual(expectedData.CommandDetails, actualData.CommandDetails);
     Assert.AreEqual(expectedData.BinaryData, actualData.BinaryData);
 }
        public void Send(NetworkData data)
        {
			HeliosTrace.Instance.TcpClientSendQueued ();
            SendInternal(data.Buffer, 0, data.Length, data.RemoteHost);
        }
 public void InvokeReceiveIfNotNull(NetworkData data)
 {
     if (NetworkEventLoop.Receive != null)
     {
         NetworkEventLoop.Receive(data, this);
     }
 }