示例#1
0
 public FabricTransportServiceRemotingClient(IServiceRemotingClient innerClient, Uri serviceUri, IServiceClientLogger logger,
                                             MethodDispatcherBase serviceMethodDispatcher)
 {
     InnerClient = innerClient;
     ServiceUri  = serviceUri;
     Logger      = logger;
     _serviceMethodDispatcher = serviceMethodDispatcher;
 }
 public FabricTransportServiceRemotingClientFactory(
     ICommunicationClientFactory <IServiceRemotingClient> innerClientFactory,
     IServiceClientLogger logger,
     MethodDispatcherBase serviceMethodDispatcher
     )
 {
     _innerClientFactory                     = innerClientFactory;
     _logger                                 = logger;
     _serviceMethodDispatcher                = serviceMethodDispatcher;
     _innerClientFactory.ClientConnected    += OnClientConnected;
     _innerClientFactory.ClientDisconnected += OnClientDisconnected;
 }
        public static IServiceRemotingClientFactory CreateServiceRemotingClientFactory(
            Type serviceInterfaceType,
            IServiceRemotingCallbackClient callbackClient,
            IServiceClientLogger logger,
            string correlationId,
            MethodDispatcherBase serviceMethodDispatcher)
        {
            var fabricTransportSettings = GetDefaultFabricTransportSettings("TransportSettings");
            var exceptionHandlers       = GetExceptionHandlers(serviceInterfaceType);

            return
                ((IServiceRemotingClientFactory) new Client.FabricTransportServiceRemotingClientFactory(
                     new FabricTransportServiceRemotingClientFactory(
                         fabricTransportSettings,
                         callbackClient,
                         (IServicePartitionResolver)null,
                         exceptionHandlers,
                         traceId: correlationId),
                     logger,
                     serviceMethodDispatcher));
        }
 public ServiceProxyFactory(IServiceClientLogger logger)
 {
     Logger = logger;
 }
示例#5
0
 public FabricTransportActorRemotingClient(IServiceRemotingClient innerClient, Uri serviceUri, IServiceClientLogger logger,
                                           MethodDispatcherBase actorMethodDispatcher, MethodDispatcherBase serviceMethodDispatcher)
     : base(innerClient, serviceUri, logger, serviceMethodDispatcher)
 {
     _actorMethodDispatcher = actorMethodDispatcher;
 }
示例#6
0
        public static Task RunInContext(this IServiceProxyFactory actorProxyFactory, Action <IServiceProxyFactory> action, IServiceClientLogger logger, params ServiceRequestHeader[] headers)
        {
            Task task         = null;
            var  headersArray = headers.ToArray();

            task = new Task(() =>
            {
                logger?.StartRequestContext(headersArray);
                Debug.Assert(ServiceRequestContext.Current == null);
                ServiceRequestContext.Current = new ServiceRequestContext(headers);
                try
                {
                    action(actorProxyFactory);
                }
                catch (Exception ex)
                {
                    logger?.FailedRequestContext(headers, ex);
                    throw ex;
                }
                finally
                {
                    ServiceRequestContext.Current = null;
                    logger?.StopRequestContext(headersArray);
                }
            });

            task.Start();

            return(task);
        }