private static GAISWriter HandleReader(GAISReader gr) { OPCODE op = (OPCODE)gr.ReadInt32(); switch (op) { case OPCODE.REGISTER: HandleRegister(gr); return(null); case OPCODE.REMOVE: HandleRemove(gr); return(null); case OPCODE.VIDEO_START: return(HandleVideoStart(gr)); case OPCODE.VIDEO_END: return(HandleVideoEnd(gr)); case OPCODE.VIDEO_UPDATE: return(HandleVideoUpdate(gr)); default: return(null); } }
private static GAISWriter HandleVideoEnd(GAISReader gr) { GAISWriter gw = new GAISWriter(); gw.Write((Int32)OPCODE.VIDEO_END); gw.Write(gr.ReadString()); return(gw); }
private static void HandleRemove(GAISReader gr) { /*RESPONSE id = (RESPONSE)gr.ReadInt32(); * if (id == RESPONSE.NICKNAME_TAKEN) * { * tcpClient.Close(); * MessageBox.Show("Nickname Taken!"); * pForm.SetVisibility(true); * }*/ }
private void startFirst() { while (!connected) { try { if (client.Available > 0) { gr = new GAISReader(client.GetStream()); Int32 id = gr.ReadInt32(); nickName = gr.ReadString(); foreach (ConnectionInfo c in Server.connections) { if (c.nickName == nickName) { GAISWriter gw = new GAISWriter(); gw.Write((Int32)OPCODE.RESPONSE); gw.Write((Int32)RESPONSE.NICKNAME_TAKEN); GAISWriter gwSend = new GAISWriter(client.GetStream()); gwSend.Write(gw.ToArray()); gwSend.Flush(); return; } } ConnectionInfo ci = new ConnectionInfo(); ci.nickName = nickName; ci.cl = client; Server.connections.Add(ci); //create a new thread for this user chatThread = new Thread(new ThreadStart(Run)); //start the thread chatThread.Start(); connected = true; } } catch { client.Close(); connected = true; } Thread.Sleep(100); } }
private static GAISWriter HandleVideoUpdate(GAISReader gr) { GAISWriter gw = new GAISWriter(); gw.Write((Int32)OPCODE.VIDEO_UPDATE); gw.Write(gr.ReadString()); Int32 size = gr.ReadInt32(); Byte[] arr = gr.ReadBytes(size); if (arr.Length > 0) { gw.Write(size); gw.Write(arr); return(gw); } return(null); }
public static void SendMsgToAll(String nickName, GAISReader gr) { List <ConnectionInfo> ToRemove = new List <ConnectionInfo>(); GAISWriter gw = HandleReader(gr); foreach (ConnectionInfo c in connections) { if (c.nickName == nickName) { if (gw == null) { ToRemove.Add(c); } else { continue; } } if (gw != null) { try { GAISWriter sendGW = new GAISWriter(c.cl.GetStream()); sendGW.Write(gw.ToArray()); sendGW.Flush(); } catch { ToRemove.Add(c); } } } foreach (ConnectionInfo c in ToRemove) { connections.Remove(c); } ToRemove.Clear(); }