コード例 #1
0
ファイル: Broker.cs プロジェクト: lijielife/plexus-interop
        public Broker(string metadataDir = null, IRegistryProvider registryProvider = null)
        {
            _workingDir = Directory.GetCurrentDirectory();
            var binDir    = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            var studioDir = Path.Combine(binDir, "studio");

            Log.Info("Studio dir: {0}", studioDir);
            metadataDir = Path.GetFullPath(metadataDir ?? Path.Combine(_workingDir, "metadata"));
            Log.Info("Metadata dir: {0}", metadataDir);
            var metadataFile = Path.Combine(metadataDir, "interop.json");

            _transportServers = new[]
            {
                TransportServerFactory.Instance.Create(
                    PipeTransmissionServerFactory.Instance.Create(_workingDir), DefaultTransportSerializationProvider),
                TransportServerFactory.Instance.Create(
                    WebSocketTransmissionServerFactory.Instance.Create(
                        _workingDir,
                        new Dictionary <string, string> {
                    { "/metadata/interop", metadataFile }, { "/studio", studioDir }
                }),
                    DefaultTransportSerializationProvider)
            };
            _connectionListener  = new ServerConnectionListener(_transportServers);
            registryProvider     = registryProvider ?? JsonRegistryProvider.Initialize(Path.Combine(metadataDir, "interop.json"));
            _appLifecycleManager = AppLifecycleManagerFactory.Instance.Create(metadataDir);
            _brokerProcessor     = BrokerProcessorFactory.Instance.Create(
                _connectionListener.In,
                registryProvider,
                DefaultProtocolSerializationProvider,
                _appLifecycleManager);
            OnStop(_connectionListener.Stop);
        }
コード例 #2
0
 public Context(IAppLifecycleManager appLifecycleManager, string kind, UniqueId ownerAppInstanceId)
 {
     _appLifecycleManager = appLifecycleManager;
     Kind = string.IsNullOrEmpty(kind)
         ? Guid.NewGuid().ToString()
         : kind;
     OwnerAppInstanceId = ownerAppInstanceId;
 }
コード例 #3
0
 public DiscoveryRequestHandler(
     IAppLifecycleManager connectionTracker,
     IProtocolImplementation protocol,
     IRegistryService registryService)
 {
     _connectionTracker = connectionTracker;
     _protocol          = protocol;
     _registryService   = registryService;
 }
コード例 #4
0
        public ContextLinkageServiceImpl(IRegistryProvider appRegistryProvider, IAppLifecycleManager appLifecycleManager, IAppLaunchedEventProvider appLaunchedEventProvider)
        {
            _appRegistryProvider = appRegistryProvider;
            _appLifecycleManager = appLifecycleManager;
            _contextsSet         = new ContextsSet(appLifecycleManager);

            appLaunchedEventProvider.AppLaunchedStream.Subscribe(OnAppLaunched);
            appLifecycleManager.ConnectionEventsStream.Subscribe(OnAppConnectedOrDisconnected);
        }
コード例 #5
0
 public AppLaunchedEventSubscriber(IAppLifecycleManager appConnectedEventProvider, IRegistryProvider registryProvider, IAppLaunchedEventConsumer appLaunchedEventConsumer, Lazy <IClient> client)
 {
     _registryProvider         = registryProvider;
     _appLaunchedEventConsumer = appLaunchedEventConsumer;
     _client = client;
     appConnectedEventProvider.ConnectionEventsStream
     .Where(ev => ev.Type == ConnectionEventType.AppConnected)
     .Select(ev => ev.Connection)
     .Subscribe(OnAppConnected);
 }
コード例 #6
0
ファイル: BrokerRunner.cs プロジェクト: yatsan/plexus-interop
 public BrokerRunner(string metadataDir = null, IRegistryProvider registryProvider = null)
 {
     _workingDir       = Path.GetFullPath(Directory.GetCurrentDirectory());
     metadataDir       = metadataDir ?? _workingDir;
     _registryProvider = registryProvider ??
                         JsonRegistryProvider.Initialize(Path.Combine(metadataDir, "interop.json"));
     _instanceSemaphore   = new Semaphore(1, 1, $"Global{Path.DirectorySeparatorChar}plexus-interop-broker-semaphore-{_workingDir.Replace(Path.DirectorySeparatorChar, ':')}");
     _transportServer     = new CompositeTransportServer(new[] { CreateNamedPipeServer(), CreateWebSocketServer() });
     _appLifecycleManager = new AppLifecycleManager(metadataDir, _workingDir);
 }
コード例 #7
0
 public AuthenticationHandler(
     IAppLifecycleManager connectionTracker,
     IProtocolImplementation protocol,
     IRegistryService registryService)
 {
     _messageFactory    = protocol.MessageFactory;
     _serializer        = protocol.Serializer;
     _connectionTracker = connectionTracker;
     _registryService   = registryService;
 }
コード例 #8
0
 public DiscoveryRequestHandler(
     IAppLifecycleManager appLifecycleManager,
     IProtocolImplementation protocol,
     IRegistryService registryService,
     IContextLinkageManager contextLinkageManager)
 {
     _appLifecycleManager   = appLifecycleManager;
     _protocol              = protocol;
     _registryService       = registryService;
     _contextLinkageManager = contextLinkageManager;
 }
コード例 #9
0
 public InvocationRequestHandler(
     IAppLifecycleManager appLifecycleManager,
     IProtocolImplementation protocol,
     IRegistryService registryService)
 {
     _appLifecycleManager            = appLifecycleManager;
     _protocolMessageFactory         = protocol.MessageFactory;
     _protocolSerializer             = protocol.Serializer;
     _registryService                = registryService;
     _createRequestHandler           = new InvocationTargetHandler <IInvocationStartRequested, IAppConnection>(CreateInvocationTarget, CreateInvocationTarget);
     _resolveTargetConnectionHandler = new InvocationTargetHandler <ValueTask <IAppConnection>, IAppConnection>(ResolveTargetConnectionAsync, ResolveTargetConnectionAsync);
 }
コード例 #10
0
 public IBrokerProcessor Create(
     IReadableChannel <ITransportConnection> incomingConnections,
     IRegistryProvider registryProvider,
     IProtocolSerializerFactory protocolSerializerFactory,
     IAppLifecycleManager appLifecycleManager)
 {
     return(new BrokerProcessor(
                incomingConnections,
                registryProvider,
                protocolSerializerFactory,
                appLifecycleManager));
 }
コード例 #11
0
        private async Task InitializeAppAsync(LaunchActivatedEventArgs e)
        {
            _log = Startup.ServiceProvider.GetService <ILogger>();
            _lifecycleManager = Startup.ServiceProvider.GetService <IAppLifecycleManager>();

            if (await _lifecycleManager.IsFirstRun())
            {
                await _lifecycleManager.InitializeAppForFirstRun();
            }

            InitializeShell(e);
        }
コード例 #12
0
        public BrokerProcessor(
            IReadableChannel <ITransportConnection> incomingConnections,
            IRegistryProvider registryProvider,
            IProtocolSerializerFactory serializerFactory,
            IAppLifecycleManager connectionTracker)
        {
            _incomingConnections = incomingConnections;
            var registryService = new RegistryService(registryProvider);
            var protocol        = new ProtocolImplementation(DefaultProtocolMessageFactory, serializerFactory);

            _authenticationHandler = new AuthenticationHandler(connectionTracker, protocol, registryService);
            _clientRequestHandler  = new ClientRequestHandler(connectionTracker, protocol, registryService);
        }
コード例 #13
0
        public BrokerProcessor(
            IReadableChannel <ITransportConnection> incomingConnections,
            IProtocolSerializerFactory serializerFactory,
            IInteropContext interopContext)
        {
            _incomingConnections = incomingConnections;
            var registryService = new RegistryService(interopContext.RegistryProvider);
            var protocol        = new ProtocolImplementation(DefaultProtocolMessageFactory, serializerFactory);

            _appLifecycleManager   = interopContext.AppLifecycleManager;
            _authenticationHandler = new AuthenticationHandler(interopContext.AppLifecycleManager, protocol, registryService);
            _clientRequestHandler  = new ClientRequestHandler(interopContext.AppLifecycleManager, protocol, registryService, interopContext.InvocationEventProvider, interopContext.ContextLinkageManager);
        }
コード例 #14
0
        private async Task InitializeAppAsync(LaunchActivatedEventArgs e)
        {
            var ioc = new IocBootstrapper();

            _log = ServiceLocator.Current.GetInstance <ILogger>();
            _lifecycleManager = ServiceLocator.Current.GetInstance <IAppLifecycleManager>();

            if (await _lifecycleManager.IsFirstRun())
            {
                await _lifecycleManager.InitializeAppForFirstRun();
            }

            InitializeShell(e);
        }
コード例 #15
0
 public AppLaunchedEventSubscriber(
     IAppLifecycleManager appConnectedEventProvider,
     IRegistryProvider registryProvider,
     IAppLaunchedEventConsumer appLaunchedEventConsumer,
     IAppLifecycleManagerClientClientRepository lifecycleManagerClientRepo)
 {
     _registryProvider           = registryProvider;
     _appLaunchedEventConsumer   = appLaunchedEventConsumer;
     _lifecycleManagerClientRepo = lifecycleManagerClientRepo;
     appConnectedEventProvider.ConnectionEventsStream
     .Where(ev => ev.Type == ConnectionEventType.AppConnected)
     .Select(ev => ev.Connection)
     .Subscribe(OnAppConnected);
 }
コード例 #16
0
        public BrokerProcessor(
            IReadableChannel <ITransportConnection> incomingConnections,
            IRegistryProvider registryProvider,
            IProtocolSerializerFactory serializerFactory,
            IAppLifecycleManager appLifecycleManager = null)
        {
            _incomingConnections = incomingConnections;
            var registryService = new RegistryService(registryProvider);
            var protocol        = new ProtocolImplementation(DefaultProtocolMessageFactory, serializerFactory);

            _appLifecycleManager = appLifecycleManager ?? new NoopAppLifecycleManager();
            var connectionTracker = new ClientConnectionTracker(_appLifecycleManager);

            _authenticationHandler = new AuthenticationHandler(connectionTracker, protocol, registryService);
            _clientRequestHandler  = new ClientRequestHandler(connectionTracker, protocol, registryService);
            Completion             = TaskRunner.RunInBackground(ProcessAsync);
        }
コード例 #17
0
 public InvocationRequestHandler(
     IAppLifecycleManager appLifecycleManager,
     IProtocolImplementation protocol,
     IRegistryService registryService,
     IInvocationEventProvider invocationEventProvider,
     IContextLinkageManager contextLinkageManager)
 {
     _appLifecycleManager            = appLifecycleManager;
     _protocolMessageFactory         = protocol.MessageFactory;
     _protocolSerializer             = protocol.Serializer;
     _registryService                = registryService;
     _invocationEventProvider        = invocationEventProvider;
     _contextLinkageManager          = contextLinkageManager;
     _createRequestHandler           = new InvocationTargetHandler <IInvocationStartRequested, IAppConnection>(CreateInvocationTarget, CreateInvocationTarget);
     _resolveTargetConnectionHandler = new InvocationTargetHandler <ValueTask <IAppConnection>, IAppConnection, IContextLinkageOptions>(ResolveTargetConnectionAsync, ResolveTargetConnectionAsync);
     _stopwatch.Start();
 }
コード例 #18
0
 public AppLifecycleServiceImpl(IAppLifecycleManager appLifecycleManager)
 {
     _appLifecycleManager = appLifecycleManager;
     _appLifecycleManager.ConnectionEventsStream.Subscribe(BroadcastConnectionEvents);
 }
コード例 #19
0
 public Context(IAppLifecycleManager appLifecycleManager)
 {
     _appLifecycleManager      = appLifecycleManager;
     AppContextBindings        = _bindingSubject;
     ContextUpdatedEventStream = _contextUpdatedSubject;
 }
コード例 #20
0
 public ContextsSet(IAppLifecycleManager appLifecycleManager)
 {
     _appLifecycleManager    = appLifecycleManager;
     AppContextBindingEvents = _appContextBindingSubject.ObserveOn(TaskPoolScheduler.Default);
 }
コード例 #21
0
 public AppRegistrationServiceImpl(IAppLifecycleManager appLifecycleManager)
 {
     _appLifecycleManager = appLifecycleManager;
 }