Example #1
0
        public static Horizon CreateWithDefaultFsConfig(HorizonConfiguration config, IFileSystem rootFileSystem,
                                                        KeySet keySet)
        {
            var horizon = new Horizon(config);

            HorizonClient fsServerClient = horizon.CreatePrivilegedHorizonClient();
            var           fsServer       = new FileSystemServer(fsServerClient);

            var defaultObjects = DefaultFsServerObjects.GetDefaultEmulatedCreators(rootFileSystem, keySet, fsServer);

            var fsServerConfig = new FileSystemServerConfig
            {
                DeviceOperator = defaultObjects.DeviceOperator,
                ExternalKeySet = keySet.ExternalKeySet,
                FsCreators     = defaultObjects.FsCreators,
            };

            FileSystemServerInitializer.InitializeWithConfig(fsServerClient, fsServer, fsServerConfig);

            HorizonClient bcatServerClient = horizon.CreateHorizonClient();

            _ = new BcatServer(bcatServerClient);

            return(horizon);
        }
Example #2
0
        public Horizon(HorizonConfiguration config)
        {
            _currentProcessId = InitialProcessCountMax;

            TickGenerator  = config.TickGenerator ?? new DefaultTickGenerator();
            ServiceManager = new ServiceManager();

            LoaderClient = CreatePrivilegedHorizonClient();
        }
Example #3
0
        private HorizonClient CreateHorizonClientImpl(ProgramLocation location, ReadOnlySpan <byte> accessControlData,
                                                      ReadOnlySpan <byte> accessControlDescriptor)
        {
            HorizonClient client = CreateHorizonClient();

            LoaderClient.Fs.RegisterProgram(client.ProcessId.Value, location.ProgramId, location.StorageId,
                                            accessControlData, accessControlDescriptor).ThrowIfFailure();

            return(client);
        }
Example #4
0
        public Result CreateHorizonClient(out HorizonClient client)
        {
            Result rc = OpenFileSystemClient(out FileSystemClient fsClient);

            if (rc.IsFailure())
            {
                client = default;
                return(rc);
            }

            client = new HorizonClient(this, fsClient);
            return(Result.Success);
        }
Example #5
0
        public Horizon(ITimeSpanGenerator timer, FileSystemServerConfig fsServerConfig)
        {
            _currentProcessId = InitialProcessCountMax;

            Time           = timer ?? new StopWatchTimeSpanGenerator();
            ServiceManager = new ServiceManager();

            // ReSharper disable ObjectCreationAsStatement
            new FileSystemServer(CreatePrivilegedHorizonClient(), fsServerConfig);
            new BcatServer(CreateHorizonClient());
            // ReSharper restore ObjectCreationAsStatement

            LoaderClient = CreatePrivilegedHorizonClient();
        }
        public static Horizon CreateWithFsConfig(HorizonConfiguration config, FileSystemServerConfig fsServerConfig)
        {
            var horizon = new Horizon(config);

            HorizonClient fsServerClient = horizon.CreatePrivilegedHorizonClient();
            var           fsServer       = new FileSystemServer(fsServerClient);

            FileSystemServerInitializer.InitializeWithConfig(fsServerClient, fsServer, fsServerConfig);

            HorizonClient bcatServerClient = horizon.CreateHorizonClient();

            _ = new BcatServer(bcatServerClient);

            return(horizon);
        }
Example #7
0
        public HorizonClient CreateHorizonClient(ProgramId programId, AccessControlBits.Bits fsPermissions)
        {
            HorizonClient client = CreateHorizonClient();

            var dataHeader = new AccessControlDataHeader();
            var descriptor = new AccessControlDescriptor();

            descriptor.Version = 1;
            dataHeader.Version = 1;

            descriptor.AccessFlags = (ulong)fsPermissions;
            dataHeader.AccessFlags = (ulong)fsPermissions;

            LoaderClient.Fs.RegisterProgram(client.ProcessId.Value, programId, StorageId.BuiltInUser,
                                            SpanHelpers.AsReadOnlyByteSpan(in dataHeader), SpanHelpers.AsReadOnlyByteSpan(in descriptor))
            .ThrowIfFailure();

            return(client);
        }