Esempio n. 1
0
 /// <summary>
 /// Disconnect callback
 /// </summary>
 /// <param name="socket">client socket</param>
 public void OnParallelSocketDisconnect(IParallelSocket socket)
 {
     DetachPair();
 }
 /// <summary>
 /// NewConnection callback
 /// </summary>
 /// <param name="socket">client socket</param>
 public void OnParallelSocketNewConnection(IParallelSocket socket)
 {
     Debug.Print("socket connected");
 }
Esempio n. 3
0
 /// <summary>
 /// Receive callback
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="receivedPacket">received packet</param>
 public void OnParallelSocketReceived(IParallelSocket socket, ParallelPacket receivedPacket)
 {
     lock (m_generalLock)
     {
         if (socket == m_socket1)
         {
             m_socket2.Send(receivedPacket.PacketRaw, receivedPacket.HeaderSize, receivedPacket.DataByteSize);
         }
         else
         {
             m_socket1.Send(receivedPacket.PacketRaw, receivedPacket.HeaderSize, receivedPacket.DataByteSize);
         }
     }
 }
Esempio n. 4
0
 /// <summary>
 /// Send callback
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="status">stend status</param>
 /// <param name="sentPacket">sent packet</param>
 public void OnParallelSocketSent(IParallelSocket socket, SendStatus status, ParallelPacket sentPacket)
 {
 }
 /// <summary>
 /// Detach the given client from the server management
 /// </summary>
 /// <param name="socket">the client to detach</param>
 /// <returns>the number of socket in the room</returns>
 public int DetachClient(IParallelSocket socket)
 {
     lock (m_listLock)
     {
         m_socketList.Remove(socket);
         
         Task t = new Task(delegate()
         {
             OnParallelRoomLeave(this, socket);
         });
         t.Start();
         
         return m_socketList.Count;
     }
 }
Esempio n. 6
0
 /// <summary>
 /// NewConnection callback
 /// </summary>
 /// <param name="socket">client socket</param>
 public void OnParallelSocketNewConnection(IParallelSocket socket)
 {
     // Will never get called
 }
 /// <summary>
 /// Receive callback
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="receivedPacket">received packet</param>
 public void OnReceived(IParallelSocket socket, ParallelPacket receivedPacket)
 {
      string recvString=ASCIIEncoding.ASCII.GetString(receivedPacket.GetData().ToArray());
      Debug.Print("[" + receivedPacket.GetPacketID() + "] " + recvString);
     socket.Send(receivedPacket.GetData().ToArray());
 }
 /// <summary>
 /// Disconnect callback
 /// </summary>
 /// <param name="socket">client socket</param>
 public void OnParallelSocketDisconnect(IParallelSocket socket)
 {
     Debug.Print("socket disconnected");
 }
 /// <summary>
 /// Join the room
 /// </summary>
 /// <param name="socket">socket</param>
 /// <param name="roomName">room name</param>
 /// <returns>the instance of the room</returns>
 public ParallelRoom Join(IParallelSocket socket, string roomName)
 {
     lock (m_roomLock)
     {
         ParallelRoom curRoom = null;
         if (m_roomMap.ContainsKey(roomName))
         {
             curRoom = m_roomMap[roomName];
         }
         else
         {
             curRoom = new ParallelRoom(roomName,RoomCallBackObj);
             m_roomMap[roomName] = curRoom;
         }
         curRoom.AddSocket(socket);
         return curRoom;
     }
 }
 /// <summary>
 /// Detach given socket from the given room
 /// </summary>
 /// <param name="socket">socket to detach</param>
 /// <param name="roomName">room name</param>
 /// <returns>number of sockets left in the room</returns>
 public int Leave(IParallelSocket socket, string roomName)
 {
     lock (m_roomLock)
     {
         if (m_roomMap.ContainsKey(roomName))
         {
             int numSocketLeft = m_roomMap[roomName].DetachClient(socket);
             if (numSocketLeft == 0)
             {
                 m_roomMap.Remove(roomName);
             }
             return numSocketLeft;
         }
         return 0;
     }
 }
        /// <summary>
        /// Broadcast given data to the server
        /// </summary>
        /// <param name="data">data in byte array</param>
        public void Broadcast(IParallelSocket sender, byte[] data)
        {
            List<ParallelSocket> socketList = GetClientSocketList();

            foreach (ParallelSocket socket in socketList)
            {
                if (socket != sender)
                    socket.Send(data);
            }
        }
Esempio n. 12
0
 /// <summary>
 /// Broadcast the given packet to all the client, connected
 /// </summary>
 /// <param name="sender">sender of the broadcast</param>
 /// <param name="data">data in byte array</param>
 public void Broadcast(IParallelSocket sender, byte[] data)
 {
     Broadcast(sender, data, 0, data.Count());
 }
Esempio n. 13
0
        /// <summary>
        /// Broadcast the given packet to all the client, connected
        /// </summary>
        /// <param name="sender">sender of the broadcast</param>
        /// <param name="data">data in byte array</param>
        /// <param name="offset">offset in bytes</param>
        /// <param name="dataSize">data size in bytes</param>
        public void Broadcast(IParallelSocket sender, byte[] data, int offset, int dataSize)
        {
            List<IParallelSocket> list = GetSocketList();
            foreach (IParallelSocket socket in list)
            {
                if(socket!=sender)
                    socket.Send(data, offset, dataSize);
            }

            Task t = new Task(delegate()
            {
                OnParallelRoomBroadcast(this,sender, data, offset, dataSize);
            });
            t.Start();

        }
 /// <summary>
 /// Receive callback
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="receivedPacket">received packet</param>
 public void OnParallelSocketReceived(IParallelSocket socket, ParallelPacket receivedPacket)
 {
     byte[] receivedData = receivedPacket.CloneData();
     string recvString = ASCIIEncoding.ASCII.GetString(receivedData);
      Debug.Print("Received [" + receivedPacket.PacketID + "] " + recvString);
      socket.Send(receivedData);
 }
Esempio n. 15
0
 /// <summary>
 /// Connect given two socket as p2p
 /// </summary>
 /// <param name="socket1">first socket</param>
 /// <param name="socket2">second socket</param>
 /// <param name="callback">callback object</param>
 /// <returns>true if paired otherwise false</returns>
 public bool ConnectPair(IParallelSocket socket1, IParallelSocket socket2, IParallelP2PCallback callBackObj)
 {
     if (!Paired)
     {
         if (socket1 != null && socket2 != null && socket1!=socket2 && socket1.IsConnectionAlive && socket2.IsConnectionAlive)
         {
             lock (m_generalLock)
             {
                 m_socket1 = socket1;
                 m_socket2 = socket2;
                 m_socket1.CallBackObj = this;
                 m_socket2.CallBackObj = this;
                 Paired = true;
                 CallBackObj = callBackObj;
                 return true;
             }
             
         }
     }
     return false;
 }
 /// <summary>
 /// Send callback
 /// </summary>
 /// <param name="socket">client socket</param>
 /// <param name="status">stend status</param>
 /// <param name="sentPacket">sent packet</param>
 public void OnParallelSocketSent(IParallelSocket socket, SendStatus status, ParallelPacket sentPacket)
 {
     string sentString = ASCIIEncoding.ASCII.GetString(sentPacket.CloneData());
     Debug.Print("Sent [" + sentPacket.PacketID + "] " + sentString);
 }
Esempio n. 17
0
 /// <summary>
 /// Detach pair
 /// </summary>
 public void DetachPair()
 {
     if (Paired)
     {
         lock (m_generalLock)
         {
             if (m_socket1 != null)
                 m_socket1.CallBackObj = null;
             if (m_socket2 != null)
                 m_socket2.CallBackObj = null;
             Paired = false;
             
             Task t = new Task(delegate()
             {
                 OnParallelP2PDetached(this, m_socket1, m_socket2);
             });
             t.Start();
             
             m_socket1 = null;
             m_socket2 = null;
         }
     }
 }
 /// <summary>
 /// Accept callback
 /// </summary>
 /// <param name="server">server</param>
 /// <param name="ipInfo">connection info</param>
 /// <returns>the socket callback interface</returns>
 public void OnParallelServerAccepted(IParallelServer server, IParallelSocket socket)
 {
 }
Esempio n. 19
0
 public void AddSocket(IParallelSocket socket)
 {
     lock (m_listLock)
     {
         m_socketList.Add(socket);
     }
     
     Task t = new Task(delegate()
     {
         OnParallelRoomJoin(this, socket);
     });
     t.Start();
     
 }