/// <summary>
 /// The listeners, accepters and connecters events are routed to this method.
 /// </summary>
 /// <param name="worker">The worker that raised an event.</param>
 /// <param name="data">relvant event data</param>
 void BasicServers_OnServerNotifyEvent(BasicWorker worker, object data)
 {
     NetworkServerClientWorker.NetworkClientNotification incommingEvent = null;
     if (data.GetType() == typeof(NetworkServerClientWorker.NetworkClientNotification))
     {
         incommingEvent = (NetworkServerClientWorker.NetworkClientNotification)data;
         switch (incommingEvent.EventType)
         {
             case NetworkClientBase.ClientEventTypeEnum.None:
                 break;
             case NetworkClientBase.ClientEventTypeEnum.Connected:
                 break;
             case NetworkClientBase.ClientEventTypeEnum.Accepted:
                 NetworkServerClientAccepter accepter =
                     (NetworkServerClientAccepter)incommingEvent.EventData;
                 accepter.RequiredLatency = newAcceptersLatency;
                 accepters.Workers.Add(accepter);
                 break;
             case NetworkClientBase.ClientEventTypeEnum.MessageSent:
                 break;
             case NetworkClientBase.ClientEventTypeEnum.RawDataRecieved:
                 break;
             case NetworkClientBase.ClientEventTypeEnum.MessageRecieved:
                 break;
             case NetworkClientBase.ClientEventTypeEnum.Disconnected:
                 switch (worker.GetType().Name)
                 {
                     case "NetworkServerClientListener": //Controlled by user of this class.
                         break;
                     case "NetworkServerClientAccepter": //This class add it so it should remove it.
                         accepters.Workers.Remove(worker);
                         break;
                     case "NetworkServerClientConnecter"://Controlled by user of this class.
                         break;
                 }
                 break;
             case NetworkClientBase.ClientEventTypeEnum.Error:
                 break;
         }
     }
     OnServerNotify((NetworkServerClientWorker)worker, incommingEvent);
 }