Esempio n. 1
0
 private BlockServiceInfo[] GetServersInfo(long[] serversGuid)
 {
     List<BlockServiceInfo> reply;
     lock (blockServersMap) {
         int sz = serversGuid.Length;
         reply = new List<BlockServiceInfo>(sz);
         for (int i = 0; i < sz; ++i) {
             BlockServiceInfo blockServer;
             if (blockServersMap.TryGetValue(serversGuid[i], out blockServer)) {
                 // Copy the server information into a new object.
                 BlockServiceInfo nbs = new BlockServiceInfo(blockServer.ServerGuid, blockServer.Address);
                 reply.Add(nbs);
             }
         }
     }
     return reply.ToArray();
 }
Esempio n. 2
0
        private void RegisterBlockServer(IServiceAddress blockServerAddress)
        {
            // Get the block server uid,
            Message message = new Message("serverGUID");

            // Connect to the block server,
            IMessageProcessor processor = connector.Connect(blockServerAddress, ServiceType.Block);
            IEnumerable<Message> response = processor.Process(message.AsStream());
            Message rm = null;
            foreach (Message m in response) {
                if (m.HasError)
                    throw new ApplicationException(m.ErrorMessage);

                rm = m;
            }

            long serverGuid = (long) rm.Arguments[0].Value;

            // Add lookup for this server_guid <-> service address to the db,
            managerDb.SetValue("block.sguid." + serverGuid, blockServerAddress.ToString());
            managerDb.SetValue("block.addr." + blockServerAddress, serverGuid.ToString());

            // TODO: Block discovery on the introduced machine,

            // Set the status and guid
            BlockServiceInfo blockServer = new BlockServiceInfo(serverGuid, blockServerAddress);
            // Add it to the map
            lock (blockServersMap) {
                blockServersMap[serverGuid] = blockServer;
                blockServersList.Add(blockServer);
                PersistBlockServers(blockServersList);
            }
        }
Esempio n. 3
0
        protected void AddRegisteredBlockService(long serverGuid, IServiceAddress addr)
        {
            lock (blockServersMap) {
                BlockServiceInfo blockServer = new BlockServiceInfo(serverGuid, addr);

                // Add to the internal map/list
                blockServersMap[serverGuid] = blockServer;
                blockServersList.Add(blockServer);
            }
        }