internal void InternalConnectLocalServer(bool generateConnectMsg)
        {
            if (m_FreeMessages == null)
            {
                m_FreeMessages = new Stack <InternalMsg>();
                for (int i = 0; i < k_InitialFreeMessagePoolSize; i++)
                {
                    InternalMsg msg = new InternalMsg();
                    m_FreeMessages.Push(msg);
                }
            }

            m_LocalServer = NetworkServer.instance;
            m_Connection  = new ULocalConnectionToServer(m_LocalServer);
            SetHandlers(m_Connection);
            m_Connection.connectionId = m_LocalServer.AddLocalClient(this);
            m_AsyncConnect            = ConnectState.Connected;

            SetActive(true);
            RegisterSystemHandlers(true);

            if (generateConnectMsg)
            {
                PostInternalMessage(MsgType.Connect);
            }
            m_Connected = true;
        }
Beispiel #2
0
 private void ProcessInternalMessages()
 {
     if (this.m_InternalMsgs.Count != 0)
     {
         List <InternalMsg> internalMsgs = this.m_InternalMsgs;
         this.m_InternalMsgs = this.m_InternalMsgs2;
         for (int i = 0; i < internalMsgs.Count; i++)
         {
             InternalMsg item = internalMsgs[i];
             if (this.s_InternalMessage.reader == null)
             {
                 this.s_InternalMessage.reader = new NetworkReader(item.buffer);
             }
             else
             {
                 this.s_InternalMessage.reader.Replace(item.buffer);
             }
             this.s_InternalMessage.reader.ReadInt16();
             this.s_InternalMessage.channelId = item.channelId;
             this.s_InternalMessage.conn      = base.connection;
             this.s_InternalMessage.msgType   = this.s_InternalMessage.reader.ReadInt16();
             base.m_Connection.InvokeHandler(this.s_InternalMessage);
             this.m_FreeMessages.Push(item);
             base.connection.lastMessageTime = Time.time;
         }
         this.m_InternalMsgs = internalMsgs;
         this.m_InternalMsgs.Clear();
         for (int j = 0; j < this.m_InternalMsgs2.Count; j++)
         {
             this.m_InternalMsgs.Add(this.m_InternalMsgs2[j]);
         }
         this.m_InternalMsgs2.Clear();
     }
 }
Beispiel #3
0
        private void ProcessInternalMessages()
        {
            if (m_InternalMsgs.Count == 0)
            {
                return;
            }

            // new msgs will get put in m_InternalMsgs2
            List <InternalMsg> tmp = m_InternalMsgs;

            m_InternalMsgs = m_InternalMsgs2;

            // iterate through existing set
            for (int i = 0; i < tmp.Count; i++)
            {
                InternalMsg msg = tmp[i];

                NetworkMessage internalMessage = new NetworkMessage();
                internalMessage.msgType = (short)msg.msgType;
                internalMessage.reader  = new NetworkReader(msg.content);
                internalMessage.conn    = connection;

                m_Connection.InvokeHandler(internalMessage);
                connection.lastMessageTime = Time.time;
            }

            // put m_InternalMsgs back and clear it
            m_InternalMsgs = tmp;
            m_InternalMsgs.Clear();

            // add any newly generated msgs in m_InternalMsgs2 and clear it
            m_InternalMsgs.AddRange(m_InternalMsgs2);
            m_InternalMsgs2.Clear();
        }
Beispiel #4
0
        private void ProcessInternalMessages()
        {
            if (m_InternalMsgs.Count == 0)
            {
                return;
            }

            // we will process all existing messages,
            // but new messages might be added in the process because host mode
            // local client messages don't go over the network. they are added
            // here directly. (probably...)
            // so we make a copy of the list first
            List <InternalMsg> tmp = new List <InternalMsg>(m_InternalMsgs);

            m_InternalMsgs.Clear();

            // iterate through existing set
            for (int i = 0; i < tmp.Count; i++)
            {
                InternalMsg msg = tmp[i];

                NetworkMessage internalMessage = new NetworkMessage();
                internalMessage.msgType = (short)msg.msgType;
                internalMessage.reader  = new NetworkReader(msg.content);
                internalMessage.conn    = connection;

                m_Connection.InvokeHandler(internalMessage);
                connection.lastMessageTime = Time.time;
            }
        }
Beispiel #5
0
 private void ProcessInternalMessages()
 {
     if (m_InternalMsgs.Count != 0)
     {
         List <InternalMsg> internalMsgs = m_InternalMsgs;
         m_InternalMsgs = m_InternalMsgs2;
         foreach (InternalMsg item in internalMsgs)
         {
             InternalMsg current = item;
             if (s_InternalMessage.reader == null)
             {
                 s_InternalMessage.reader = new NetworkReader(current.buffer);
             }
             else
             {
                 s_InternalMessage.reader.Replace(current.buffer);
             }
             s_InternalMessage.reader.ReadInt16();
             s_InternalMessage.channelId = current.channelId;
             s_InternalMessage.conn      = base.connection;
             s_InternalMessage.msgType   = s_InternalMessage.reader.ReadInt16();
             m_Connection.InvokeHandler(s_InternalMessage);
             m_FreeMessages.Push(current);
             base.connection.lastMessageTime = Time.time;
         }
         m_InternalMsgs = internalMsgs;
         m_InternalMsgs.Clear();
         foreach (InternalMsg item2 in m_InternalMsgs2)
         {
             m_InternalMsgs.Add(item2);
         }
         m_InternalMsgs2.Clear();
     }
 }
Beispiel #6
0
        private void PostInternalMessage(short msgType, byte[] content)
        {
            InternalMsg msg = new InternalMsg();

            msg.msgType = (ushort)msgType;
            msg.content = content;
            m_InternalMsgs.Add(msg);
        }
Beispiel #7
0
        private void PostInternalMessage(byte[] buffer, int channelId)
        {
            InternalMsg item = (m_FreeMessages.Count != 0) ? m_FreeMessages.Pop() : default(InternalMsg);

            item.buffer    = buffer;
            item.channelId = channelId;
            m_InternalMsgs.Add(item);
        }
Beispiel #8
0
        private void PostInternalMessage(byte[] buffer, int channelId)
        {
            InternalMsg msg;

            if (this.m_FreeMessages.Count == 0)
            {
                msg = new InternalMsg();
            }
            else
            {
                msg = this.m_FreeMessages.Pop();
            }
            msg.buffer    = buffer;
            msg.channelId = channelId;
            this.m_InternalMsgs.Add(msg);
        }
Beispiel #9
0
 internal void InternalConnectLocalServer()
 {
     if (this.m_FreeMessages == null)
     {
         this.m_FreeMessages = new Stack <InternalMsg>();
         for (int i = 0; i < 0x40; i++)
         {
             InternalMsg item = new InternalMsg();
             this.m_FreeMessages.Push(item);
         }
     }
     this.m_LocalServer = NetworkServer.instance;
     base.m_Connection  = new ULocalConnectionToServer(this.m_LocalServer);
     base.SetHandlers(base.m_Connection);
     base.m_Connection.connectionId = this.m_LocalServer.AddLocalClient(this);
     base.m_AsyncConnect            = NetworkClient.ConnectState.Connected;
     NetworkClient.SetActive(true);
     base.RegisterSystemHandlers(true);
     this.PostInternalMessage(0x20);
     this.m_Connected = true;
 }
Beispiel #10
0
 internal void InternalConnectLocalServer()
 {
     if (this.m_FreeMessages == null)
     {
         this.m_FreeMessages = new Stack<InternalMsg>();
         for (int i = 0; i < 0x40; i++)
         {
             InternalMsg item = new InternalMsg();
             this.m_FreeMessages.Push(item);
         }
     }
     this.m_LocalServer = NetworkServer.instance;
     base.m_Connection = new ULocalConnectionToServer(this.m_LocalServer);
     base.SetHandlers(base.m_Connection);
     base.m_Connection.connectionId = this.m_LocalServer.AddLocalClient(this);
     base.m_AsyncConnect = NetworkClient.ConnectState.Connected;
     NetworkClient.SetActive(true);
     base.RegisterSystemHandlers(true);
     this.PostInternalMessage(0x20);
     this.m_Connected = true;
 }
Beispiel #11
0
        private void ProcessInternalMessages()
        {
            if (m_InternalMsgs.Count == 0)
            {
                return;
            }
            List <InternalMsg> internalMsgs = m_InternalMsgs;

            m_InternalMsgs = m_InternalMsgs2;
            for (int i = 0; i < internalMsgs.Count; i++)
            {
                InternalMsg t = internalMsgs[i];
                if (s_InternalMessage.reader == null)
                {
                    s_InternalMessage.reader = new NetworkReader(t.buffer);
                }
                else
                {
                    s_InternalMessage.reader.Replace(t.buffer);
                }
                s_InternalMessage.reader.ReadInt16();
                s_InternalMessage.channelId = t.channelId;
                s_InternalMessage.conn      = base.connection;
                s_InternalMessage.msgType   = s_InternalMessage.reader.ReadInt16();
                m_Connection.InvokeHandler(s_InternalMessage);
                m_FreeMessages.Push(t);
                base.connection.lastMessageTime = Time.time;
            }
            m_InternalMsgs = internalMsgs;
            m_InternalMsgs.Clear();
            for (int j = 0; j < m_InternalMsgs2.Count; j++)
            {
                m_InternalMsgs.Add(m_InternalMsgs2[j]);
            }
            m_InternalMsgs2.Clear();
        }
Beispiel #12
0
 private void PostInternalMessage(byte[] buffer, int channelId)
 {
     InternalMsg msg;
     if (this.m_FreeMessages.Count == 0)
     {
         msg = new InternalMsg();
     }
     else
     {
         msg = this.m_FreeMessages.Pop();
     }
     msg.buffer = buffer;
     msg.channelId = channelId;
     this.m_InternalMsgs.Add(msg);
 }