HTML and CSS Reference
In-Depth Information
Listing 13-10. The revised MessageReceived() event handler
void MessageReceived(WsConnection sender, MessageReceivedEventArgs e)
{
string msg=e.Message;
if (e.DataLength>14 && (msg.Substring(0, 14) == "[Agent SignOn:"))
{
// This is an agent signing on
string name=msg.Substring(14, e.DataLength - 15);
WsAgentConnection agent=new WsAgentConnection(sender, name);
// Re-wire the event handlers
sender.Disconnected -= Disconnected;
sender.MessageReceived -= MessageReceived;
sender.Disconnected += agent.Disconnected;
sender.MessageReceived += agent.MessageReceived;
agent.AgentDisconnected +=
new WsDisconnectedAgentEventHandler(AgentDisconnected);
// Move this socket to the agent list
_unknown.Remove(sender);
_agents.Add(agent);
// Send a response
agent.SendMessage("Welcome, "+name);
}
else if (e.DataLength>15 &&
(msg.Substring(0, 15) == "[Client SignOn:"))
{
// This is a client requesting assistance
string name=msg.Substring(15, e.DataLength - 16);
// Find an agent
WsAgentConnection agent=null;
int clientID=0;
foreach (WsAgentConnection a in _agents)
{
foreach (KeyValuePair<int, WsClientConnection>d in a._clients)
{
if (d.Value == null)
{
agent=a;
clientID=d.Key;
break;
}
}
if (agent != null)
break;
}
Search WWH ::




Custom Search