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; }
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(); } }
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(); }
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; } }
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(); } }
private void PostInternalMessage(short msgType, byte[] content) { InternalMsg msg = new InternalMsg(); msg.msgType = (ushort)msgType; msg.content = content; m_InternalMsgs.Add(msg); }
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); }
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); }
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; }
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; }
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(); }
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); }