private void SendCallback(IAsyncResult _AsyncResult) { try { int bytesSent = m_Socket.EndSend(_AsyncResult); if (bytesSent == m_CurrentOutgoingMessage._GetBufferSize()) { //Packet sent successfully if (m_Messages.TryDequeue(out m_CurrentOutgoingMessage) == true) { m_Socket.BeginSend(m_CurrentOutgoingMessage._GetBuffer(), 0, m_CurrentOutgoingMessage._GetBufferSize() , SocketFlags.None, new AsyncCallback(SendCallback), this); } else { m_CurrentOutgoingMessage = null; m_CurrentlySending = false; } } else { m_Exceptions.Enqueue(new Exception("Not all bytes were sent! only " + bytesSent + " out of " + m_CurrentOutgoingMessage._GetBufferSize())); m_CurrentOutgoingMessage = null; m_CurrentlySending = false; } } catch (Exception ex) { m_Exceptions.Enqueue(ex); m_CurrentlySending = false; } }
public void SendMessage(NetworkOutgoingMessage _Message) { var client = m_Clients.FirstOrDefault((_Value) => _Value.Socket == _Message._GetSocket()); if (client == null) { throw new Exception("Client was not Connected"); } client.SendMessage(_Message); }
private void _StartSending() { if (IsConnected()) { if (m_CurrentlySending == false) { if (m_OutgoingMessages.TryDequeue(out m_CurrentOutgoingMessage) == true) { m_CurrentlySending = true; m_Socket.BeginSend(m_CurrentOutgoingMessage._GetBuffer(), 0, m_CurrentOutgoingMessage._GetBufferSize() , SocketFlags.None, new AsyncCallback(SendCallback), this); } else { m_CurrentOutgoingMessage = null; } } } }
internal void _StartSending() { try { if (m_CurrentlySending == false) { if (m_Messages.TryDequeue(out m_CurrentOutgoingMessage) == true) { m_CurrentlySending = true; m_Socket.BeginSend(m_CurrentOutgoingMessage._GetBuffer(), 0, m_CurrentOutgoingMessage._GetBufferSize() , SocketFlags.None, new AsyncCallback(SendCallback), this); } else { m_CurrentOutgoingMessage = null; } } } catch (Exception ex) { m_Exceptions.Enqueue(ex); m_CurrentlySending = false; } }
internal void SendMessage(NetworkOutgoingMessage _Message) { _Message._CompilePacket(); m_Messages.Enqueue(_Message); _StartSending(); }
internal NetworkOutgoingMessage _CreateOutgoingMessage(NetworkServerClient _ServerClient, int _InitialSize = -1) { NetworkOutgoingMessage newMessage = new NetworkOutgoingMessage(_ServerClient.Socket, NetworkMessageType.RawData, _InitialSize); return(newMessage); }
public NetworkOutgoingMessage CreateMessage(int _InitialSize = -1) { NetworkOutgoingMessage newMessage = new NetworkOutgoingMessage(m_Socket, NetworkMessageType.RawData, _InitialSize); return(newMessage); }