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); } }
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}); }
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); }
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(); }
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); } }
public DbSession(NetworkClient client, string pathName) { this.client = client; this.pathName = pathName; }