Пример #1
0
        /// <summary>
        /// Attempt to connect to the server.
        /// </summary>
        /// <returns><c>true</c> if connection succeeded, <c>false</c> otherwise.</returns>
        public bool Connect()
        {
            // We need to create a connection thread
            _log.Info("Connecting to " + _server.Address + ":" + _server.Port + "...");
            _protocol.SendPacket(new HandshakePacketCS(string.Format(Networking.Constants.HandshakeFormat, _player.Name, _server.Address, _server.Port)));
            _log.Info("Waiting for handshake response...");
            Packet response = _protocol.GetPacket();

            if (!(response is HandshakePacketSC))
            {
                _log.Warn("Incorrect packet type sent as response! Expected HandshakePacketSC, got " + response.GetType());
                if (response is DisconnectKickPacket)
                {
                    _log.Warn("Kick message: " + ((DisconnectKickPacket)response).Reason);
                }
                return(false);
            }
            _log.Info("Server responded to Handshake with " + ((HandshakePacketSC)response).ConnectionHash);
            _log.Info("Sending login request...");
            _protocol.SendPacket(new LoginRequestPacketCS(Networking.Constants.ProtocolVersion, _player.Name));
            _log.Info("Waiting for login response...");
            response = _protocol.GetPacket();
            if (!(response is LoginRequestPacketSC))
            {
                _log.Warn("Incorrect packet type sent as response! Expected LoginRequestPacketSC, got " + response.GetType());
                return(false);
            }
            ParseLoginRequestSC((LoginRequestPacketSC)response);
            _log.Info("Creating packet listener...");
            _listener = new PacketListener(_protocol);
            _listener.OnPacketReceived += PacketReceived;
            _log.Info("Further connection methods not yet implemented, halting Connect!");
            return(true);
        }
Пример #2
0
 public void removePacketListener(PacketListener listener)
 {
     foreach (KeyValuePair <String, List <PacketListener> > kvp in packetListeners)
     {
         kvp.Value.Remove(listener);
     }
 }
Пример #3
0
        public PacketListener removeResultHandler(String id_code)
        {
            PacketListener result = (PacketListener)resultHandlers[id_code];

            resultHandlers.Remove(id_code);
            return(result);
        }
Пример #4
0
        public bool Send(EnOceanPacket packet, IReceiveHandler handler, int retries = 3, int timeout = 1000)
        {
            var rawPacket = packet.BuildPacket();
            var pl        = new PacketListener(handler);

            PacketListeners.Add(pl);
AGAIN:
            // TESTING
            SendFrame(rawPacket);
            pl.waitHandle.WaitOne(timeout);
            if (pl.succeeded)
            {
                PacketListeners.Remove(pl);
                return(true);
            }
            else
            {
                if (retries-- > 0)
                {
                    goto AGAIN;
                }
                PacketListeners.Remove(pl);
                return(false);
                // Packet not what he wanted.. wait for next!
            }
        }
Пример #5
0
        public AsyncSendResult BeginSend(XBeeRequest request, IPacketFilter filter = null, int timeout = 5000)
        {
            var responseListener = new PacketListener(filter, timeout);

            AddPacketListener(responseListener);
            SendRequest(request);
            return(new AsyncSendResult(this, responseListener));
        }
        public void onPacketReceived(Packet packet)
        {
            if (Listeners.ContainsKey(packet.GetType()))
            {
                PacketListener listener = Listeners[packet.GetType()];
                listener.handle(packet);
            }

            else
            {
                Console.WriteLine("[ERROR] Unknown packet");
            }
        }
Пример #7
0
		public bool addPacketListener(PacketListener listener, String element) {
			if (listener == null || element == null) {
				return false;
			} else {
				try {
					packetListeners[element].Add(listener);
				} catch (Exception ex) {
					packetListeners[element] = new List<PacketListener>();
					packetListeners[element].Add(listener);
				}
				return true;
			}

		}
Пример #8
0
        public XBeeResponse[] CollectResponses(int timeout = -1, IPacketFilter filter = null)
        {
            var listener = new PacketListener(filter);

            try
            {
                AddPacketListener(listener);
                return(listener.GetPackets(timeout));
            }
            finally
            {
                RemovePacketListener(listener);
            }
        }
Пример #9
0
 public bool addPacketListener(PacketListener listener, String element)
 {
     if (listener == null || element == null)
     {
         return(false);
     }
     else
     {
         try {
             packetListeners[element].Add(listener);
         } catch (Exception ex) {
             packetListeners[element] = new List <PacketListener>();
             packetListeners[element].Add(listener);
         }
         return(true);
     }
 }
Пример #10
0
 public void notify(Packet packet)
 {
     if (jabberModel == null)
     {
         Console.WriteLine("IQHandler Error - jabberModel==null");
         /// TODO Не постои ваков метод!?
         /// jabberModel = JabberModel.getModel();
     }
     if (packet.ID != null)
     {
         PacketListener listener = jabberModel.removeResultHandler(packet.ID);
         if (listener != null)
         {
             listener.notify(packet);
             return;
         }
     }
 }
Пример #11
0
        private void button_mc_Click(object sender, EventArgs e)
        {
            if (button_mc.Text == TB.L.Phrase["Form_PrintMaster.Disconnect"])
            {
                combobox_bdrate.Enabled = true;
                combobox_com.Enabled    = true;
                master?.CloseConnection();
                button_mc.Text = TB.L.Phrase["Form_PrintMaster.Connect"];
                return;
            }
            try
            {
                var port = new SerialPort(combobox_com.Text, int.Parse(combobox_bdrate.Text.Remove(0, 2)));
                port.Open();
                var Listener = new PacketListener(new SerialPacketReader(port, 3000), new SerialPacketWriter(port));
                master        = new DTPMaster(new Sender("Coestar"), Listener);
                Pens          = master.PlotterConfig().Pens;
                movingControl = master.PlotterMovingControl();
                comboBox1.Items.Clear();
                comboBox1.Items.AddRange(Pens.Select(p => p.Name).ToArray());
                comboBox1.SelectedIndex = 0;
                //Control.Enabled = true;
                combobox_bdrate.Enabled = false;
                combobox_com.Enabled    = false;
                button_mc.Text          = TB.L.Phrase["Form_PrintMaster.Disconnect"];

                if (master.SecurityManager.IsValidationRequired)
                {
                    if (new ValidateForm(master).ShowDialog() != DialogResult.OK)
                    {
                        combobox_bdrate.Enabled = true;
                        combobox_com.Enabled    = true;
                        master?.CloseConnection();
                        button_mc.Text = TB.L.Phrase["Form_PrintMaster.Connect"];
                    }
                }
            }
            catch { MessageBox.Show(
                        string.Format(TB.L.Phrase["Connection.UnableToOpenPort"], combobox_com.Text),
                        TB.L.Phrase["Connection.Error"],
                        MessageBoxButtons.OK, MessageBoxIcon.Error); }
        }
Пример #12
0
        public XBeeResponse Receive(Type expectedType = null, int timeout = PacketParser.DefaultParseTimeout)
        {
            var listener = new PacketListener(new PacketTypeFilter(expectedType ?? typeof(XBeeResponse)));

            try
            {
                AddPacketListener(listener);
                var responses = listener.GetPackets(timeout);

                if (responses.Length == 0)
                {
                    throw new XBeeTimeoutException();
                }

                return(responses[0]);
            }
            finally
            {
                _parser.RemovePacketListener(listener);
            }
        }
Пример #13
0
        private void button_conn_Click(object sender, EventArgs e)
        {
            if (button_conn.Text != TB.L.Phrase["Connection.Disconnect"])
            {
                try
                {
                    port = new SerialPort(comboBox_port.Text, int.Parse(comboBox_bd.Text.Remove(0, 2)));
                    port.Open();

                    Listener = new PacketListener(new SerialPacketReader(port, 3000), new SerialPacketWriter(port));

                    button_conn.Text      = TB.L.Phrase["Connection.Disconnect"];
                    button_send.Enabled   = true;
                    comboBox_bd.Enabled   = false;
                    comboBox_port.Enabled = false;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(
                        string.Format(
                            TB.L.Phrase["Form_PrintMaster.ErrorText"],
                            ex.GetType().FullName, ex.StackTrace, ex.Message),
                        TB.L.Phrase["Connection.Error"],
                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }
            }
            else
            {
                port.Close();
                button_send.Enabled   = false;
                button_conn.Text      = TB.L.Phrase["Connection.Connect"];
                comboBox_bd.Enabled   = true;
                comboBox_port.Enabled = true;
            }
        }
Пример #14
0
        private static void BeginRead(object sender, DoWorkEventArgs doWorkEventArgs)
        {
            try
            {
                // If we're not connected, stop reading //
                if (!_instanceNetworkManager.Socket.Connected)
                {
                    return;
                }

                var streamReader = _instanceNetworkManager.Client.GetStream();
                var chunky       = string.Empty;

                while (streamReader.CanRead)
                {
                    var bytes = new byte[short.MaxValue * 2];

                    var length = streamReader.Read(bytes, 0, short.MaxValue * 2);

                    var packet = Encoding.UTF8.GetString(bytes).Substring(0, length);

                    chunky += packet;

                    var chunks = chunky.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);

                    var last = chunks.Last();

                    if (!last.EndsWith("}"))
                    {
                        // If it's not a valid json, we assuming its not finished //
                        chunky = last;
                        chunks = chunks.Take(chunks.Length - 1).ToArray();
                    }
                    else
                    {
                        chunky = string.Empty;
                    }

                    try
                    {
                        PacketListener?.Invoke(chunks);
                    }
                    catch (Exception e)
                    {
                        // Ignore
                    }
                }
            }
            catch (Exception e)
            {
                Disconnect();

                try
                {
                    ServerException?.Invoke(e);
                }
                catch
                {
                    // Ignore
                }
            }
        }
Пример #15
0
 /// <summary>
 /// 移除会话监听
 /// </summary>
 /// <param name="packetListener"></param>
 public void removePacketListener(PacketListener packetListener)
 {
     packetListeners.Remove(packetListener);
 }
Пример #16
0
 /// <summary>
 /// 注册会话监听
 /// </summary>
 /// <param name="packetListener"></param>
 public void addPacketListener(PacketListener packetListener)
 {
     packetListeners.Add(packetListener);
 }
Пример #17
0
		public void addResultHandler(String id_code, PacketListener listener) {
			resultHandlers.Add(id_code, listener);
		}
Пример #18
0
 public void addResultHandler(String id_code, PacketListener listener)
 {
     resultHandlers.Add(id_code, listener);
 }
Пример #19
0
		public void removePacketListener(PacketListener listener) {
			foreach (KeyValuePair<String, List<PacketListener>> kvp in packetListeners) {
				kvp.Value.Remove(listener);
			}

		}
 public PlotterPacketHandler(Sender sender, PacketListener listener)
 {
     Listener = listener;
     Sender   = sender;
 }
Пример #21
0
 public bool Send(EnOceanPacket packet, IReceiveHandler handler, int retries = 3, int timeout = 1000)
 {
     var rawPacket = packet.BuildPacket();
     var pl = new PacketListener(handler);
     PacketListeners.Add(pl);
     AGAIN:
     // TESTING
     SendFrame(rawPacket);
     pl.waitHandle.WaitOne(timeout);
     if (pl.succeeded)
     {
         PacketListeners.Remove(pl);
         return true;
     }
     else
     {
         if (retries-- > 0)
             goto AGAIN;
         PacketListeners.Remove(pl);
         return false;
         // Packet not what he wanted.. wait for next!
     }
 }