Example #1
0
        public void AddValueToPath(string path, string tableName, string key, string value)
        {
            if (!BasePathWrapper.IsSupported)
                throw new ApplicationException("Base path is not supported.");

            MachineProfile[] managers = netProfile.GetManagerServers();
            if (managers.Length == 0)
                throw new ApplicationException();

            IServiceAddress[] managerAddresses = new IServiceAddress[managers.Length];
            for (int i = 0; i < managers.Length; i++) {
                managerAddresses[i] = managers[i].ServiceAddress;
            }

            NetworkClient client = new NetworkClient(managerAddresses, netProfile.Connector);
            BasePathWrapper wrapper = new BasePathWrapper();
            object session = wrapper.CreateDbSession(client, path);

            using (IDisposable transaction = wrapper.CreateDbTransaction(session) as IDisposable) {
                if (!wrapper.TableExists(transaction, tableName))
                    throw new ApplicationException();

                wrapper.Insert(transaction, tableName, key, value);
                wrapper.Commit(transaction);
            }
        }
Example #2
0
        public object CreateDbSession(NetworkClient client, string pathName)
        {
            if (assembly == null)
                throw new ApplicationException("The base path is not supported.");

            Type dbSessionType = assembly.GetType("Deveel.Data.DbSession");
            return Activator.CreateInstance(dbSessionType, new object[] {client, pathName});
        }
Example #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);
        }
Example #4
0
        protected override void OnSetUp()
        {
            SetupAppDomain();
            NetworkProfile.StartService(LocalAddress, ServiceType.Manager);
            NetworkProfile.RegisterManager(LocalAddress);
            NetworkProfile.StartService(LocalAddress, ServiceType.Root);
            NetworkProfile.RegisterRoot(LocalAddress);
            NetworkProfile.StartService(LocalAddress, ServiceType.Block);
            NetworkProfile.RegisterBlock(LocalAddress);

            NetworkProfile.AddPathToNetwork(PathName, PathType, LocalAddress, new IServiceAddress[] {LocalAddress});

            client = new NetworkClient(LocalAddress, new FakeServiceConnector((FakeAdminService)AdminService));
            client.ConnectNetwork();
        }
Example #5
0
        public void AddValueToPath(string path, string tableName, string key, string value)
        {
            if (!BasePathWrapper.IsSupported)
                throw new ApplicationException("Base path is not supported.");

            MachineProfile manager = netProfile.ManagerServer;
            if (manager == null)
                throw new ApplicationException();

            NetworkClient client = new NetworkClient(manager.Address, netProfile.Connector);
            BasePathWrapper wrapper = new BasePathWrapper();
            object session = wrapper.CreateDbSession(client, path);

            using (IDisposable transaction = wrapper.CreateDbTransaction(session) as IDisposable) {
                if (!wrapper.TableExists(transaction, tableName))
                    throw new ApplicationException();

                wrapper.Insert(transaction, tableName, key, value);
                wrapper.Commit(transaction);
            }
        }
Example #6
0
 public DbSession(NetworkClient client, string pathName)
 {
     this.client = client;
     this.pathName = pathName;
 }