/// <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); }
public void removePacketListener(PacketListener listener) { foreach (KeyValuePair <String, List <PacketListener> > kvp in packetListeners) { kvp.Value.Remove(listener); } }
public PacketListener removeResultHandler(String id_code) { PacketListener result = (PacketListener)resultHandlers[id_code]; resultHandlers.Remove(id_code); return(result); }
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! } }
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"); } }
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; } }
public XBeeResponse[] CollectResponses(int timeout = -1, IPacketFilter filter = null) { var listener = new PacketListener(filter); try { AddPacketListener(listener); return(listener.GetPackets(timeout)); } finally { RemovePacketListener(listener); } }
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); } }
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; } } }
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); } }
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); } }
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; } }
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 } } }
/// <summary> /// 移除会话监听 /// </summary> /// <param name="packetListener"></param> public void removePacketListener(PacketListener packetListener) { packetListeners.Remove(packetListener); }
/// <summary> /// 注册会话监听 /// </summary> /// <param name="packetListener"></param> public void addPacketListener(PacketListener packetListener) { packetListeners.Add(packetListener); }
public void addResultHandler(String id_code, PacketListener listener) { resultHandlers.Add(id_code, listener); }
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; }
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! } }