Exemplo n.º 1
0
        public void AddPath(IServiceAddress root, string pathName, string pathType)
        {
            InspectNetwork();

            // Check machine is in the schema,
            MachineProfile machineProfile = CheckMachineInNetwork(root);
            if (!machineProfile.IsRoot)
                throw new NetworkAdminException("Machine '" + root + "' is not a root");

            // Get the current manager server,
            MachineProfile man = ManagerServer;
            if (man == null)
                throw new NetworkAdminException("No manager server found");

            // Check with the root server that the class instantiates,
            Message outputStream = new RequestMessage("checkPathType");
            outputStream.Arguments.Add(pathType);

            Message m = Command(root, ServiceType.Root, outputStream);
            if (m.HasError)
                throw new NetworkAdminException("Type '" + pathType + "' doesn't instantiate on the root");

            IServiceAddress managerServer = man.Address;

            // Create a new empty database,
            NetworkClient client = new NetworkClient(managerServer, connector);
            client.Connect();
            DataAddress dataAddress = client.CreateEmptyDatabase();
            client.Disconnect();

            // Perform the command,
            outputStream = new MessageStream(MessageType.Request);
            RequestMessage request = new RequestMessage("addPath");
            request.Arguments.Add(pathName);
            request.Arguments.Add(pathType);
            request.Arguments.Add(dataAddress);
            ((MessageStream)outputStream).AddMessage(request);

            request = new RequestMessage("initPath");
            request.Arguments.Add(pathName);
            ((MessageStream)outputStream).AddMessage(request);

            Message message = Command(root, ServiceType.Root, outputStream);
            if (message.HasError)
                throw new NetworkAdminException(message.ErrorMessage);

            // Tell the manager server about this path,
            outputStream = new RequestMessage("addPathRootMapping");
            outputStream.Arguments.Add(pathName);
            outputStream.Arguments.Add(root);

            message = Command(managerServer, ServiceType.Manager, outputStream);
            if (message.HasError)
                throw new NetworkAdminException(message.ErrorMessage);
        }
Exemplo n.º 2
0
        protected override void OnTearDown()
        {
            client.Disconnect();

            NetworkProfile.DeregisterBlock(LocalAddress);
            NetworkProfile.StopService(LocalAddress, ServiceType.Block);
            NetworkProfile.DeregisterRoot(LocalAddress);
            NetworkProfile.StopService(LocalAddress, ServiceType.Root);
            NetworkProfile.DeregisterManager(LocalAddress);
            NetworkProfile.StopService(LocalAddress, ServiceType.Manager);
        }
Exemplo n.º 3
0
        public void AddPath(IServiceAddress root, string pathName, string pathType)
        {
            InspectNetwork();

            // Check machine is in the schema,
            MachineProfile machineProfile = CheckMachineInNetwork(root);

            if (!machineProfile.IsRoot)
            {
                throw new NetworkAdminException("Machine '" + root + "' is not a root");
            }

            // Get the current manager server,
            MachineProfile man = ManagerServer;

            if (man == null)
            {
                throw new NetworkAdminException("No manager server found");
            }

            // Check with the root server that the class instantiates,
            Message outputStream = new RequestMessage("checkPathType");

            outputStream.Arguments.Add(pathType);

            Message m = Command(root, ServiceType.Root, outputStream);

            if (m.HasError)
            {
                throw new NetworkAdminException("Type '" + pathType + "' doesn't instantiate on the root");
            }

            IServiceAddress managerServer = man.Address;

            // Create a new empty database,
            NetworkClient client = new NetworkClient(managerServer, connector);

            client.Connect();
            DataAddress dataAddress = client.CreateEmptyDatabase();

            client.Disconnect();

            // Perform the command,
            outputStream = new MessageStream(MessageType.Request);
            RequestMessage request = new RequestMessage("addPath");

            request.Arguments.Add(pathName);
            request.Arguments.Add(pathType);
            request.Arguments.Add(dataAddress);
            ((MessageStream)outputStream).AddMessage(request);

            request = new RequestMessage("initPath");
            request.Arguments.Add(pathName);
            ((MessageStream)outputStream).AddMessage(request);

            Message message = Command(root, ServiceType.Root, outputStream);

            if (message.HasError)
            {
                throw new NetworkAdminException(message.ErrorMessage);
            }

            // Tell the manager server about this path,
            outputStream = new RequestMessage("addPathRootMapping");
            outputStream.Arguments.Add(pathName);
            outputStream.Arguments.Add(root);

            message = Command(managerServer, ServiceType.Manager, outputStream);
            if (message.HasError)
            {
                throw new NetworkAdminException(message.ErrorMessage);
            }
        }