/// <summary> /// Actualiza los parámetros del router /// </summary> /// <param name="netHandler">El manejador de la red</param> /// <param name="netUser">Los datos del usuario local</param> /// <param name="netUserList">La lista de usuarios de la red</param> public void updateRouterTable(NetHandler netHandler, NetUser netUser, NetUserList netUserList) { this.netHandler = netHandler; this.netUser = netUser; this.netUserList = netUserList; int newMessageNumber = nMessagesCounted; nMessagesCounted = 0; int neighborhoodSize = netUser.NeighborhoodIds.Length; //se incrementa el numero de iteraciones iterations++; //actualizo el promedio de cada registro messageAverage = ((messageAverage * (iterations - 1) + newMessageNumber) / iterations); if (messageAverage > 1) { //calculo el nuevo tamaño optimo de la lista, int size = 1 + (int)(((Math.Log(duplicationProbability, Math.E) / (Math.Log(messageAverage - 1, Math.E) - Math.Log(messageAverage, Math.E))))); //si el nuevo tamaño optimo es mayor, se debe aumentar el tamaño de la lista if (size > messageIdCollection.MaxSize) { messageIdCollection.MaxSize = size; } } }
/// <summary> /// Inicializa las variables locales /// </summary> private void init() { try { netUserList = new NetUserList(); router = new Router(routerMessageErrorHandler, configuration.NetData.WaitForAck, messageTypes); stopPoint = 0; timerPoint = 0; timerWaitPoint = 0; tcpThread = new Thread(new ThreadStart(processTCPMessages)); udpThread = new Thread(new ThreadStart(processUDPMessages)); messageThreads = new Thread(new ThreadStart(processNotSentMessages)); bagPoint = 0; bagWaitPoint = 0; userListLock = new Object(); } catch (ThreadAbortException e) { throw e; } catch (Exception e) { throw e; } }
/// <summary> /// Inicializa las variables locales /// </summary> private void init() { try { netUserList = new NetUserList(); router = new Router(routerMessageErrorHandler, configuration.NetData.WaitForAck, messageTypes); stopPoint = 0; timerPoint = 0; timerWaitPoint = 0; timer = new System.Timers.Timer(configuration.NetData.TimeIntervalTimer); timer.Elapsed += new ElapsedEventHandler(communicationTimer); bagPoint = 0; bagWaitPoint = 0; bag = new System.Timers.Timer(configuration.NetData.TimeIntervalTimer); bag.Elapsed += new ElapsedEventHandler(communicationBag); tcpThread = new Thread(new ThreadStart(processTCPMessages)); udpThreads = new Thread(new ThreadStart(processUDPMessages)); messageThreads = new Thread(new ThreadStart(processNotSentMessages)); userListLock = new Object(); } catch (ThreadAbortException e) { throw e; } catch (Exception e) { throw e; } }