Esempio n. 1
0
        internal Proxy(TRemote instance, bool ownsInstance)
        {
            LocalInstance = instance;

            _disposeHelper = new AsyncDisposeHelper(DisposeInternalAsync);
            _ownsInstance  = ownsInstance;
        }
Esempio n. 2
0
        public MessageRouter(ISerializedMessageHandler serializedMessageHandler,
                             ILogicalEndPoint logicalEndPoint,
                             IRouteManager routeManager,
                             ILogger <MessageRouter> logger = null)
        {
            if (serializedMessageHandler == null)
            {
                throw new ArgumentNullException(nameof(serializedMessageHandler));
            }

            if (logicalEndPoint == null)
            {
                throw new ArgumentNullException(nameof(logicalEndPoint));
            }

            if (routeManager == null)
            {
                throw new ArgumentNullException(nameof(routeManager));
            }

            _serializedMessageHandler = serializedMessageHandler;
            _logicalEndPoint          = logicalEndPoint;
            _routeManager             = routeManager;
            _logger = logger;

            _receiveProcess = new AsyncProcess(ReceiveProcedure, start: true);
            _disposeHelper  = new AsyncDisposeHelper(DisposeInternalAsync, AsyncDisposeHelperOptions.Synchronize);
        }
Esempio n. 3
0
#pragma warning restore IDE0032

        public ModuleSupervisor(DirectoryInfo directory,
                                IMetadataReader metadataReader,
                                ILogger <ModuleSupervisor> logger = null)
        {
            if (directory == null)
            {
                throw new ArgumentNullException(nameof(directory));
            }

            if (metadataReader == null)
            {
                throw new ArgumentNullException(nameof(metadataReader));
            }

            Directory       = directory;
            _metadataReader = metadataReader;
            _logger         = logger;

            // Volatile write op (Is avtually not necessary here, because the CLR enforces thread-safety.)
            _state = ModuleSupervisorState.Initializing;

            _metadataLazy = new DisposableAsyncLazy <IModuleMetadata>(
                factory: LookupMetadataAsync,
                options: DisposableAsyncLazyOptions.Autostart | DisposableAsyncLazyOptions.ExecuteOnCallingThread | DisposableAsyncLazyOptions.RetryOnFailure);

            _supervisorProcess = new AsyncProcess(SupervisorProcessRoutine, start: true);
            _disposeHelper     = new AsyncDisposeHelper(DisposeInternalAsync);
        }
Esempio n. 4
0
 internal Proxy(ProxyHost host, int id, Type objectType)
 {
     _host          = host;
     Id             = id;
     _objectType    = objectType;
     _isActivated   = true;
     _disposeHelper = new AsyncDisposeHelper(DisposeInternalAsync);
 }
Esempio n. 5
0
 internal Proxy(ProxyHost proxyHost, int id, ActivationMode activationMode, object[] activationParameters)
 {
     _host              = proxyHost;
     Id                 = id;
     ActivationMode     = activationMode;
     ActivationParamers = activationParameters;
     _isActivated       = false;
     _disposeHelper     = new AsyncDisposeHelper(DisposeInternalAsync);
 }
Esempio n. 6
0
        public Proxy(TRemote instance)
        {
            if (instance == null)
            {
                throw new ArgumentNullException(nameof(instance));
            }

            LocalInstance = instance;

            _disposeHelper = new AsyncDisposeHelper(DisposeInternalAsync);
        }
Esempio n. 7
0
        internal Proxy(ProxyHost host, int id, Type remoteType)
        {
            if (host == null)
            {
                throw new ArgumentNullException(nameof(host));
            }

            _host          = host;
            Id             = id;
            _remoteType    = remoteType;
            _disposeHelper = new AsyncDisposeHelper(DisposeInternalAsync);
        }
Esempio n. 8
0
        public ModuleServer(IRemoteMessageDispatcher messageDispatcher,
                            IMetadataAccessor metadataAccessor,
                            IModuleManager runningModules,
                            IServiceProvider serviceProvider,
                            IOptions <ModuleServerOptions> optionsAccessor,
                            ILoggerFactory loggerFactory)
        {
            if (messageDispatcher == null)
            {
                throw new ArgumentNullException(nameof(messageDispatcher));
            }

            if (metadataAccessor == null)
            {
                throw new ArgumentNullException(nameof(metadataAccessor));
            }

            if (runningModules == null)
            {
                throw new ArgumentNullException(nameof(runningModules));
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            if (optionsAccessor == null)
            {
                throw new ArgumentNullException(nameof(optionsAccessor));
            }

            var options = optionsAccessor.Value ?? new ModuleServerOptions();

            if (string.IsNullOrWhiteSpace(options.Prefix))
            {
                throw new ArgumentException("A url prefix must be specified.");
            }

            _messageDispatcher = messageDispatcher;
            _metadataAccessor  = metadataAccessor;
            _moduleManager     = runningModules;
            _serviceProvider   = serviceProvider;
            _loggerFactory     = loggerFactory;
            _logger            = _loggerFactory?.CreateLogger <ModuleServer>();

            _disposeHelper = new AsyncDisposeHelper(DiposeInternalAsync, AsyncDisposeHelperOptions.Synchronize);
            _prefix        = options.Prefix;
            Features.Set <IHttpRequestFeature>(new HttpRequestFeature());
            Features.Set <IHttpResponseFeature>(new HttpResponseFeature());
        }
Esempio n. 9
0
        public ProxyHost(Stream stream, IServiceProvider serviceProvider)
        {
            if (stream == null)
            {
                throw new ArgumentNullException(nameof(stream));
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            _stream          = stream;
            _serviceProvider = serviceProvider;

            _receiveProcess = new AsyncProcess(ReceiveProcess, start: true);
            _disposeHelper  = new AsyncDisposeHelper(DisposeInternalAsync);
        }
Esempio n. 10
0
        public DisposeAwareStream(Stream underlyingStream,
                                  Func <Task> disposeOperation,
                                  ILogger <DisposeAwareStream>?logger = null)
        {
            if (underlyingStream == null)
            {
                throw new ArgumentNullException(nameof(underlyingStream));
            }

            if (disposeOperation == null)
            {
                throw new ArgumentNullException(nameof(disposeOperation));
            }

            _underlyingStream = underlyingStream;
            _disposeOperation = disposeOperation;
            _logger           = logger;

            _disposeHelper = new AsyncDisposeHelper(DisposeInternalAsync);
        }
Esempio n. 11
0
        public DebugPort(IServiceProvider serviceProvider,
                         IAddressConversion <IPEndPoint> addressConversion,
                         IOptions <ModularityOptions> optionsAccessor,
                         IRemoteMessageDispatcher messageDispatcher,
                         ILoggerFactory loggerFactory = null)
        {
            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            if (addressConversion == null)
            {
                throw new ArgumentNullException(nameof(addressConversion));
            }

            if (optionsAccessor == null)
            {
                throw new ArgumentNullException(nameof(optionsAccessor));
            }

            if (messageDispatcher == null)
            {
                throw new ArgumentNullException(nameof(messageDispatcher));
            }

            var options = optionsAccessor.Value ?? new ModularityOptions();

            _serviceProvider   = serviceProvider;
            _messageDispatcher = messageDispatcher;
            _loggerFactory     = loggerFactory;
            _logger            = _loggerFactory?.CreateLogger <DebugPort>();

            var endPoint = addressConversion.Parse(options.DebugConnection);

            _tcpHost              = new TcpListener(endPoint);
            _connectionProcess    = new AsyncProcess(ConnectProcedure);
            _initializationHelper = new AsyncInitializationHelper <IPEndPoint>(InitializeInternalAsync);
            _disposeHelper        = new AsyncDisposeHelper(DisposeInternalAsync);
        }
Esempio n. 12
0
            public Connection(TcpEndPoint endPoint, IPEndPoint address, Stream stream)
            {
                if (endPoint == null)
                {
                    throw new ArgumentNullException(nameof(endPoint));
                }

                if (address == null)
                {
                    throw new ArgumentNullException(nameof(address));
                }

                if (stream == null)
                {
                    throw new ArgumentNullException(nameof(stream));
                }

                _endPoint       = endPoint;
                RemoteAddress   = address;
                _stream         = stream;
                _receiveProcess = new AsyncProcess(ReceiveProcedure, start: true);
                _disposeHelper  = new AsyncDisposeHelper(DisposeInternalAsync, AsyncDisposeHelperOptions.Synchronize);
            }