private void ServerThread(object data) { ServerStartInfo info = data as ServerStartInfo; NetworkStream networkStream = info.ClientSocket.GetStream(); while (!serverClosed) { try { byte[] bytesFrom = new byte[1048576]; networkStream.Read(bytesFrom, 0, info.ClientSocket.ReceiveBufferSize); if (bytesFrom.Length > 0) { OnDataRecieved?.Invoke(this, new DataRecievedEventArgs(bytesFrom, info.ClientSocket.ReceiveBufferSize, (byte)StringTerminator)); } } catch (System.IO.IOException) { info.ClientSocket.Close(); return; } catch (Exception ex) { info.ClientSocket.Close(); StopListening(ex.Message + Environment.NewLine + ex.StackTrace); return; } } }
private async void ProcessMasterMessages(object obj) { ProcessArgs props = obj as ProcessArgs; TcpClient client = props.Client; var stream = client.GetStream(); while (client.Connected) { if (props.Token.IsCancellationRequested) { return; } while (!stream.DataAvailable) { if (props.Token.IsCancellationRequested) { return; } } // read data into dataframe byte[] data = new byte[client.Available]; await stream.ReadAsync(data, 0, client.Available); // event! OnDataRecieved?.Invoke(Encoding.UTF8.GetString(data)); } var constr = client.Client.RemoteEndPoint.ToString(); var addr = constr.Split(':')[0]; client.Close(); OnConnectionFromMaster(addr, false); }
private async void ProcessClient(object obj) { TcpClient client = obj as TcpClient; var stream = client.GetStream(); while (client.Connected) { while (!stream.DataAvailable) { ; } // read data into dataframe byte[] data = new byte[client.Available]; await stream.ReadAsync(data, 0, client.Available); // event! OnDataRecieved?.Invoke(Encoding.UTF8.GetString(data)); } var constr = client.Client.RemoteEndPoint.ToString(); var addr = constr.Split(':')[0]; client.Close(); OnConnectionFromClient(addr, false); }
private void XmppOnOnRosterEnd(object sender) { foreach (var n in Friends) { var email = DatabaseHandler.GetUser(n.User.Bare); if (String.IsNullOrWhiteSpace(email)) { /* * var viq = new VcardIq * { * Type = IqType.get , * To = n.User.Bare * }; * viq.From = Me.User.Bare; * viq.Vcard.JabberId = n.User.Bare; * viq.GenerateId(); * Xmpp.Send(viq); */ } else { n.Email = email; } } if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.FriendList, Friends); } if (Chatting.Rooms.Count(x => x.IsGroupChat && x.GroupUser.User.Bare == "lobby@conference." + Host) == 0) { Xmpp.RosterManager.AddRosterItem(new Jid("lobby@conference." + Host)); } }
private void createThread(string Name, int Port, Socket socket, bool silent = false) { new Thread(() => { print("[Thread] Listening for incoming data on port {0}", Port); while (true) { try { Thread.Sleep(25); lock (mutex) { if (socket.Available > 0) { byte[] buffer = new byte[socket.Available]; socket.Receive(buffer); //print("[{0}] Recieved\n: {1}", Name,Encoding.ASCII.GetString(buffer)); string decodedBuffer = Encoding.ASCII.GetString(buffer); int ftpResponseId = 0; int.TryParse(decodedBuffer.Substring(0, 3), out ftpResponseId); OnDataRecieved?.Invoke(socket, new DataEventArgs(Name, ftpResponseId, decodedBuffer)); } } } catch (Exception) { break; } } }).Start(); }
public void RemoveFriend(NewUser user) { Xmpp.PresenceManager.Unsubscribe(user.User); RosterManager.RemoveRosterItem(user.User); Friends.Remove(user); OnDataRecieved.Invoke(this, DataRecType.FriendList, this); }
public void AcceptFriendship(Jid user) { Xmpp.PresenceManager.ApproveSubscriptionRequest(user); Xmpp.PresenceManager.Subscribe(user); Xmpp.SendMyPresence(); if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.FriendList, Friends); } //Xmpp.RequestRoster(); }
/// <summary> /// Starts listening to messages. /// </summary> /// <returns></returns> public bool Start() { new Task(() => { try { while (true) { OnDataRecieved?.Invoke(this, GetData()); } } catch { Close(); } }).Start(); return(true); }
/// <summary> /// Starts listening to messages. /// </summary> /// <returns></returns> public bool Start() { new Task(() => { try { while (true) { string data = m_reader.ReadString(); if (data.ToString() != "") { OnDataRecieved?.Invoke(this, new DataReceivedEventArgs(data.ToString())); } } } catch { Close(); } }).Start(); return(true); }
private void XmppOnOnIq(object sender, IQ iq) { if (iq.Error != null && iq.Error.Code == ErrorCode.NotAllowed) { if (OnLoginComplete != null) { OnLoginComplete.Invoke(this, LoginResults.Failure); } } if (iq.Type == IqType.result) { if (iq.Vcard != null) { var f = Friends.AsParallel().SingleOrDefault(x => x.User.Bare == iq.From.Bare); if (f != null) { var email = DatabaseHandler.GetUser(f.User.Bare); if (String.IsNullOrWhiteSpace(email)) { var s = iq.Vcard.GetEmailAddresses().SingleOrDefault(x => !String.IsNullOrWhiteSpace(x.UserId)); if (s != null) { f.Email = s.UserId; DatabaseHandler.AddUser(f.User.Bare, f.Email); } } else { f.Email = email; } } if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.FriendList, Friends); } } } }
private void WaitForReply(object data) { while (true) { try { NetworkStream serverStream = data as NetworkStream; byte[] bytesToRecieve = new byte[sizeof(int)]; serverStream.Read(bytesToRecieve, 0, sizeof(int)); serverStream.Write(new byte[] { (byte)'o', (byte)'k' }, 0, 2); int byt = BitConverter.ToInt32(bytesToRecieve, 0); byte[] inStream = new byte[byt]; serverStream.Read(inStream, 0, byt); OnDataRecieved?.Invoke(this, new DataRecievedEventArgs(inStream, client.ReceiveBufferSize, (byte)StringTerminator)); // WARNING : cross thread errors may occur from here } catch { } } }
public static void Run() { TcpListener ServerSocket = new TcpListener(IPAddress.Any, Port); OnDataRecieved.Invoke("[SERVER] Started"); ServerSocket.Start(); Socket conn = ServerSocket.AcceptSocket(); OnDataRecieved.Invoke("[SERVER] Connected"); Connected = true; while (conn.Connected) { if (ShouldDisconnect) { conn.Disconnect(false); break; } try { //Check to see if we have any data in the socket if (conn.Available > 0) { //create a buffer and consume it byte[] Buffer = new byte[conn.Available]; conn.Receive(Buffer); //Convert it to a string string data = Encoding.ASCII.GetString(Buffer); if (OnDataRecieved != null) { OnDataRecieved.Invoke(data); } } lock (Commands) { if (Commands.Count > 0) { string command = Commands.Dequeue(); OnDataRecieved("[SERVER] => " + command); List <byte> cmd = new List <byte>(); cmd.AddRange(Encoding.ASCII.GetBytes(command)); cmd.Add(0); conn.Send(cmd.ToArray()); } } } catch (Exception e) { OnDataRecieved("[SERVER] Error: " + e.ToString()); conn.Disconnect(false); break; } Thread.Sleep(100); } Connected = false; OnDataRecieved("[SERVER] Disconnected"); }
private void ServerThread_ProgressChanged(object sender, ProgressChangedEventArgs e) { ServerThreadState state = e.UserState as ServerThreadState; OnDataRecieved?.Invoke(this, new DataRecievedEventArgs(state.Data.Clone() as byte[], state.Length, state.RecievedTime, (byte)StringTerminator)); }
private void DataRecieved(object sender, DataRecievedEventArgs args) { OnDataRecieved?.Invoke(sender, args); }
/// <summary> /// virtual handler for any action to be taken when data is received. Override to use. /// </summary> /// <param name="data">The input report that was received</param> protected virtual void HandleDataReceived(HIDReport report) { // Fire the event handler if assigned OnDataRecieved?.Invoke(this, report); }
private void XmppOnOnMessage(object sender, Message msg) { if (msg.Type == MessageType.normal) { if (msg.Subject == "gameready") { var port = -1; if (Int32.TryParse(msg.Body, out port) && port != -1) { if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.HostedGameReady, port); } CurrentHostedGamePort = port; } } else if (msg.Subject == "gamelist") { var list = new List <HostedGameData>(); foreach (var a in msg.ChildNodes) { var gi = a as HostedGameData; if (gi != null) { list.Add(gi); } var el = a as Element; gi = el as HostedGameData; if (el == null) { continue; } } _games = list; if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.GameList, list); } } else if (msg.Subject == "refresh") { if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.GamesNeedRefresh, null); } } else if (msg.From.Bare.ToLower() == Xmpp.MyJID.Server.ToLower()) { if (msg.Subject == null) { msg.Subject = ""; } if (msg.Body == null) { msg.Body = ""; } var d = new Dictionary <string, string>(); d["Message"] = msg.Body; d["Subject"] = msg.Subject; if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.Announcement, d); } } } }
private void XmppOnOnPresence(object sender, Presence pres) { //if (pres.From.User != "lobby") Debugger.Break(); if (pres.From.User == Xmpp.MyJID.User) { if (pres.Type == PresenceType.subscribe) { Xmpp.PresenceManager.ApproveSubscriptionRequest(pres.From); } else { myPresence = pres; myPresence.Type = PresenceType.available; if (pres.Show != ShowType.NONE) { myPresence.Show = pres.Show; } Xmpp.Status = myPresence.Status ?? Xmpp.Status; if (OnDataRecieved != null) { OnDataRecieved.Invoke(this, DataRecType.MyInfo, pres); } } return; } switch (pres.Type) { case PresenceType.available: if (pres.From.Server == "conference." + Host) { var rm = Chatting.GetRoom(new NewUser(pres.From), true); rm.AddUser(new NewUser(pres.MucUser.Item.Jid), false); } break; case PresenceType.unavailable: { if (pres.From.Server == "conference." + Host) { if (pres.MucUser.Item.Jid == null) { break; } if (pres.MucUser.Item.Jid.Bare == Me.User.Bare) { break; } var rm = Chatting.GetRoom(new NewUser(pres.From), true); rm.UserLeft(new NewUser(pres.MucUser.Item.Jid)); } break; } case PresenceType.subscribe: if (!Friends.Contains(new NewUser(pres.From.Bare))) { Notifications.Add(new FriendRequestNotification(pres.From.Bare, this, _noteId)); _noteId++; if (OnFriendRequest != null) { OnFriendRequest.Invoke(this, pres.From.Bare); } } else { AcceptFriendship(pres.From.Bare); } break; case PresenceType.subscribed: break; case PresenceType.unsubscribe: break; case PresenceType.unsubscribed: break; case PresenceType.error: break; case PresenceType.probe: break; } for (int i = 0; i < Friends.Count; i++) { if (Friends[i].User.User == pres.From.User) { Friends[i].CustomStatus = pres.Status ?? ""; Friends[i].SetStatus(pres); break; } } XmppOnOnRosterEnd(this); }
private void WebSocket_DataReceived(object sender, WebSocket4Net.DataReceivedEventArgs e) { OnDataRecieved?.Invoke(sender, e); }