Example #1
0
 public FabricTransportActorRemotingClientFactory(ICommunicationClientFactory <IServiceRemotingClient> innerClientFactory, IServiceCommunicationLogger logger)
 {
     _innerClientFactory = innerClientFactory;
     _logger             = logger;
     _innerClientFactory.ClientConnected    += OnClientConnected;
     _innerClientFactory.ClientDisconnected += OnClientDisconnected;
 }
Example #2
0
        public static IServiceRemotingClientFactory CreateServiceRemotingClientFactory(Type actorInterfaceType, IServiceRemotingCallbackClient callbackClient, IServiceCommunicationLogger logger, string correlationId)
        {
            var fabricTransportSettings = GetDefaultFabricTransportSettings("TransportSettings");
            var exceptionHandlers       = GetExceptionHandlers(actorInterfaceType);

            return
                ((IServiceRemotingClientFactory) new CodeEffect.ServiceFabric.Actors.Remoting.FabricTransport.Client.FabricTransportActorRemotingClientFactory(
                     new FabricTransportActorRemotingClientFactory(
                         fabricTransportSettings,
                         callbackClient,
                         (IServicePartitionResolver)null,
                         exceptionHandlers,
                         traceId: correlationId), logger));
        }
Example #3
0
 internal static CustomServiceRequestHeader GetCustomServiceRequestHeader(this ServiceRemotingMessageHeaders messageHeaders, IServiceCommunicationLogger logger)
 {
     try
     {
         CustomServiceRequestHeader customServiceRequestHeader;
         if (CustomServiceRequestHeader.TryFromServiceMessageHeaders(messageHeaders, out customServiceRequestHeader))
         {
             return(customServiceRequestHeader);
         }
     }
     catch (Exception ex)
     {
         // ignored
         logger?.FailedToReadCustomServiceMessageHeader(messageHeaders, ex);
     }
     return(null);
 }
 public ServiceRemotingDispatcher(IService service, IServiceRemotingMessageHandler innerMessageHandler, IServiceCommunicationLogger logger)
 {
     _service             = service;
     _innerMessageHandler = innerMessageHandler;
     _logger = logger;
 }
 public ActorProxyFactory(IServiceCommunicationLogger logger)
 {
     Logger = logger;
 }
Example #6
0
 public static ServiceReplicaListener CreateServiceReplicaListener(this IService service, ServiceContext context, IServiceCommunicationLogger logger)
 {
     return(new ServiceReplicaListener(ctxt =>
                                       (IServiceRemotingListener) new FabricTransportServiceRemotingListener(
                                           serviceContext: ctxt,
                                           messageHandler: new ServiceRemotingDispatcher(
                                               service: service,
                                               innerMessageHandler: new Microsoft.ServiceFabric.Services.Remoting.Runtime.ServiceRemotingDispatcher(context, service),
                                               logger: logger),
                                           listenerSettings: new FabricTransportRemotingListenerSettings()
     {
         MaxConcurrentCalls = 1000,
     }
                                           )));
 }
Example #7
0
 public FabricTransportActorRemotingClient(IServiceRemotingClient innerClient, Uri serviceUri, IServiceCommunicationLogger logger)
 {
     _innerClient = innerClient;
     _serviceUri  = serviceUri;
     _logger      = logger;
 }
Example #8
0
        public static Task RunInContext(this IActorProxyFactory actorProxyFactory, Action <IActorProxyFactory> action, IServiceCommunicationLogger logger, IEnumerable <ServiceRequestHeader> headers)
        {
            Task task         = null;
            var  headersArray = headers.ToArray();

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

            task.Start();

            return(task);
        }