コード例 #1
0
        //su ogni rete (possono essere multiple o unica) possono esserci N listener che con un alg distrib si assegnano numeri progressivi unici
        //per ogni segnale ricevuto viene calcolato un hash [su (int32)(sender.roboid)%maxnum] che stabilisce quale listener dovrà processare il messaggio
        //se una dash non riceve un segnale da un listener manda una richiesta di resend al listener inadempiente. dopo 3 timeout  la dash invia in broadcast un segnale di ListenerDown con il numero del listener, tutti i listener lo ricevono e ricalcolano il loro numero e il maxnum di conseguenza modificando la funzione hash e assorbendo i robot scoperti, il modello attuale però fa mandare dati errati per una intera finestra temporale perchè un robot può essere spostato da un listener funzionante ad un altro listener funzionante e ogni listener ha solo una parte dei segnali di quel robot, quindi è tragico come un riavvio completo...
        //invece potrei tenere tutti i listnernum uguali e ri-hashare solo per quelli con listener down, ma questo implica altri problemi, tipo sull'aggiunta di un listener si ripete lo stesso problema.

        public static List <ReceiverTool> staticInit()
        {
            ReceiverTool.all          = new List <ReceiverTool>();
            ReceiverTool.udpClients   = new List <UdpClient>();
            ReceiverTool.threads      = new List <Thread>();
            ReceiverTool.messageQueue = new MessageQueue();
            return(ReceiverTool.all);
        }
コード例 #2
0
 //private UdpClient udpSender { };
 public static List <SlaveReceiver> staticInit()
 {
     //IPEP_SlaveBroadcast_Receive = new IPEndPoint(IPAddress.Broadcast, Program.args.broadcastPort_Slaves);
     //IPEP_SlaveBroadcast_Send = new IPEndPoint(IPAddress.Broadcast, Program.args.broadcastPort_Slaves);
     SlaveReceiver.all               = new List <SlaveReceiver>();
     SlaveReceiver.udpClients        = new List <UdpClient>();
     SlaveReceiver.threads           = new List <Thread>();
     SlaveReceiver.SlaveMessageQueue = new MessageQueue();
     return(SlaveReceiver.all);
 }