private void QueueCommand(CCBNetworkerCommandData cmd) { lock (m_commandList) { m_commandList.Enqueue(cmd); m_cmdSignal.Set(); } }
private CCBNetworkerCommandData GetCommand() { try { lock (m_commandList) { if (0 < m_commandList.Count) { CCBNetworkerCommandData cmd = m_commandList.Dequeue(); return(cmd); } } } catch (InvalidOperationException eex) { Error("Internal error: trying to get command while command list is empty." + eex.Message); } catch (Exception ex) { Error(string.Format("Error getting command: {0}", ex.Message)); } return(new CCBNetworkerCommandData(CCBNetworkerCommand.nwc_none)); }
public CCBNetworkerCommandData(CCBNetworkerCommandData rhs) { m_cmd = rhs.m_cmd; m_data = rhs.m_data; m_oSend = null; }
private void ExecuteNextCommand() { try { CCBNetworkerCommandData cmd = GetCommand(); switch (cmd.m_cmd) { case CCBNetworkerCommand.nwc_connect: Connect(); break; case CCBNetworkerCommand.nwc_disconnect: m_working = false; break; case CCBNetworkerCommand.nwc_post: if (null != m_clientChannel) { System.Diagnostics.Debug.Assert((null != cmd.m_data) && (0 < cmd.m_data.Length)); if ((null != cmd.m_data) && (0 < cmd.m_data.Length)) { m_clientChannel.ChatMessage(m_uid, cmd.m_data[0]); } else { Error("Internal error: m_data does not contain data."); } } break; case CCBNetworkerCommand.nwc_pingMesh: if (null != m_clientChannel) { m_clientChannel.PingAll(m_uid); } break; case CCBNetworkerCommand.nwc_pingRespond: if (null != m_clientChannel) { m_clientChannel.OnUserConnected(m_uid); } break; case CCBNetworkerCommand.nwc_startFileTransfer: if (null != m_clientChannel) { m_clientChannel.OnNewFile(m_uid, cmd.m_data[0], cmd.m_data[1]); } break; case CCBNetworkerCommand.nwc_requestFileTransfer: if (null != m_clientChannel) { m_clientChannel.RequestFile(cmd.m_data[0], m_uid, cmd.m_data[1]); } break; case CCBNetworkerCommand.nwc_cancelFileTransfer: if (null != m_clientChannel) { m_clientChannel.CancelFile(cmd.m_data[0], m_uid, cmd.m_data[1]); } break; case CCBNetworkerCommand.nwc_sendCharacter: if (null != m_clientChannel) { CCBCharacter characterToSend = (CCBCharacter)cmd.m_oSend; if (null != characterToSend) { m_clientChannel.SendCharacterTo(m_uid, cmd.m_data[0], characterToSend); } else { Error("P2PNetworker: No character object in nwc_sendCharacter command."); } } break; default: Error(string.Format("Networker: Ignoring {0} command.", cmd.m_cmd)); break; } } catch (NullReferenceException nex) { Error("Null reference in ExecuteNextCommand: " + nex.Message); } catch (Exception ex) { Error("Exception in ExecuteNextCommand: " + ex.Message); } }