Exemple #1
0
        public void MulticastMsg(ViewMsg msg)
        {
            msg.Source = ThisMetaserverId;
            msg.Status = GetStatus(ThisMetaserverId);

            ViewElementsMutex.WaitOne( );
            //Contact other servers
            for (int id = 0; id < ViewElements.Length; id++)
            {
                if (id == ThisMetaserverId)
                {
                    continue;
                }
                // if ( GetStatus( id ) == ServerStatus.Off )
                //   continue;
                msg.Destination = id;
                log.Debug(DateTime.Now.Ticks + " [M] Multicast View: " + msg.Status);
                IMetaToMeta   server    = MetadataServer.ConnectToMetaserver(id);
                BullyDel      invokeDel = new BullyDel(server.BullyRequestsRetrival);
                AsyncCallback callback  = new AsyncCallback(BullyResponse);
                try
                {
                    Console.WriteLine("Multicast: " + msg + " to " + msg.Destination);
                    invokeDel.BeginInvoke(msg, callback, null);
                }
                catch (SocketException)
                {
                    UpdateViewServerState(ServerStatus.Off, id, null);
                }
            }
            ViewElementsMutex.ReleaseMutex( );
        }
Exemple #2
0
 private Boolean UpdateFromServers(List <int> serverIds)
 {
     foreach (int serverId in serverIds)
     {
         Console.WriteLine("Copy from : " + serverId);
         IMetaToMeta server = MetadataServer.ConnectToMetaserver(serverId);
         //Request copy from master
         try
         {
             CopyStructMetadata dataStruct = server.RequestUpdate(MetadataServer.GetQueueStateVector(), MetadataServer.ThisMetaserverId);
             //Update the server
             MetadataServer.UpdateServer(dataStruct);
         }
         catch (SocketException)
         {
             return(false);
         }
     }
     return(true);
 }