예제 #1
0
 public ClientMessageCenter(
     IOptions <GatewayOptions> gatewayOptions,
     IOptions <ClientMessagingOptions> clientMessagingOptions,
     IPAddress localAddress,
     int gen,
     GrainId clientId,
     IGatewayListProvider gatewayListProvider,
     SerializationManager serializationManager,
     IRuntimeClient runtimeClient,
     MessageFactory messageFactory,
     IClusterConnectionStatusListener connectionStatusListener,
     ExecutorService executorService,
     ILoggerFactory loggerFactory,
     IOptions <NetworkingOptions> networkingOptions,
     IOptions <StatisticsOptions> statisticsOptions)
 {
     this.loggerFactory         = loggerFactory;
     this.openConnectionTimeout = networkingOptions.Value.OpenConnectionTimeout;
     this.SerializationManager  = serializationManager;
     this.executorService       = executorService;
     lockable                      = new object();
     MyAddress                     = SiloAddress.New(new IPEndPoint(localAddress, 0), gen);
     ClientId                      = clientId;
     this.RuntimeClient            = runtimeClient;
     this.messageFactory           = messageFactory;
     this.connectionStatusListener = connectionStatusListener;
     Running                = false;
     GatewayManager         = new GatewayManager(gatewayOptions.Value, gatewayListProvider, loggerFactory);
     PendingInboundMessages = new BlockingCollection <Message>();
     gatewayConnections     = new Dictionary <Uri, GatewayConnection>();
     numMessages            = 0;
     grainBuckets           = new WeakReference[clientMessagingOptions.Value.ClientSenderBuckets];
     logger = loggerFactory.CreateLogger <ClientMessageCenter>();
     if (logger.IsEnabled(LogLevel.Debug))
     {
         logger.Debug("Proxy grain client constructed");
     }
     IntValueStatistic.FindOrCreate(
         StatisticNames.CLIENT_CONNECTED_GATEWAY_COUNT,
         () =>
     {
         lock (gatewayConnections)
         {
             return(gatewayConnections.Values.Count(conn => conn.IsLive));
         }
     });
     statisticsLevel = statisticsOptions.Value.CollectionLevel;
     if (statisticsLevel.CollectQueueStats())
     {
         queueTracking = new QueueTrackingStatistic("ClientReceiver", statisticsOptions);
     }
 }
예제 #2
0
 public ClientMessageCenter(
     IOptions <ClientMessagingOptions> clientMessagingOptions,
     IPAddress localAddress,
     int gen,
     GrainId clientId,
     SerializationManager serializationManager,
     IRuntimeClient runtimeClient,
     MessageFactory messageFactory,
     IClusterConnectionStatusListener connectionStatusListener,
     ILoggerFactory loggerFactory,
     IOptions <StatisticsOptions> statisticsOptions,
     ConnectionManager connectionManager,
     GatewayManager gatewayManager)
 {
     this.messageHandlers      = new Action <Message> [Enum.GetValues(typeof(Message.Categories)).Length];
     this.connectionManager    = connectionManager;
     this.SerializationManager = serializationManager;
     MyAddress                     = SiloAddress.New(new IPEndPoint(localAddress, 0), gen);
     ClientId                      = clientId;
     this.RuntimeClient            = runtimeClient;
     this.messageFactory           = messageFactory;
     this.connectionStatusListener = connectionStatusListener;
     Running                = false;
     this.gatewayManager    = gatewayManager;
     PendingInboundMessages = Channel.CreateUnbounded <Message>(new UnboundedChannelOptions
     {
         SingleReader = true,
         SingleWriter = false,
         AllowSynchronousContinuations = false
     });
     numMessages       = 0;
     this.grainBuckets = new WeakReference <Connection> [clientMessagingOptions.Value.ClientSenderBuckets];
     logger            = loggerFactory.CreateLogger <ClientMessageCenter>();
     if (logger.IsEnabled(LogLevel.Debug))
     {
         logger.Debug("Proxy grain client constructed");
     }
     IntValueStatistic.FindOrCreate(
         StatisticNames.CLIENT_CONNECTED_GATEWAY_COUNT,
         () =>
     {
         return(connectionManager.ConnectionCount);
     });
     statisticsLevel = statisticsOptions.Value.CollectionLevel;
     if (statisticsLevel.CollectQueueStats())
     {
         queueTracking = new QueueTrackingStatistic("ClientReceiver", statisticsOptions);
     }
 }
예제 #3
0
 public ProxiedMessageCenter(
     ClientConfiguration config,
     IPAddress localAddress,
     int gen,
     GrainId clientId,
     IGatewayListProvider gatewayListProvider,
     SerializationManager serializationManager,
     IRuntimeClient runtimeClient,
     MessageFactory messageFactory,
     IClusterConnectionStatusListener connectionStatusListener,
     ILoggerFactory loggerFactory,
     IOptions <ClientMessagingOptions> messagingOptions)
 {
     this.loggerFactory         = loggerFactory;
     this.openConnectionTimeout = messagingOptions.Value.OpenConnectionTimeout;
     this.SerializationManager  = serializationManager;
     lockable                      = new object();
     MyAddress                     = SiloAddress.New(new IPEndPoint(localAddress, 0), gen);
     ClientId                      = clientId;
     this.RuntimeClient            = runtimeClient;
     this.messageFactory           = messageFactory;
     this.connectionStatusListener = connectionStatusListener;
     Running                = false;
     GatewayManager         = new GatewayManager(config, gatewayListProvider, loggerFactory);
     PendingInboundMessages = new BlockingCollection <Message>();
     gatewayConnections     = new Dictionary <Uri, GatewayConnection>();
     numMessages            = 0;
     grainBuckets           = new WeakReference[config.ClientSenderBuckets];
     logger = new LoggerWrapper <ProxiedMessageCenter>(loggerFactory);
     if (logger.IsVerbose)
     {
         logger.Verbose("Proxy grain client constructed");
     }
     IntValueStatistic.FindOrCreate(
         StatisticNames.CLIENT_CONNECTED_GATEWAY_COUNT,
         () =>
     {
         lock (gatewayConnections)
         {
             return(gatewayConnections.Values.Count(conn => conn.IsLive));
         }
     });
     if (StatisticsCollector.CollectQueueStats)
     {
         queueTracking = new QueueTrackingStatistic("ClientReceiver");
     }
 }
예제 #4
0
 public ClientMessageCenter(
     IOptions <ClientMessagingOptions> clientMessagingOptions,
     IPAddress localAddress,
     int gen,
     ClientGrainId clientId,
     SerializationManager serializationManager,
     IRuntimeClient runtimeClient,
     MessageFactory messageFactory,
     IClusterConnectionStatusListener connectionStatusListener,
     ILoggerFactory loggerFactory,
     IOptions <StatisticsOptions> statisticsOptions,
     ConnectionManager connectionManager,
     GatewayManager gatewayManager)
 {
     this.connectionManager    = connectionManager;
     this.SerializationManager = serializationManager;
     MyAddress                     = SiloAddress.New(new IPEndPoint(localAddress, 0), gen);
     ClientId                      = clientId;
     this.RuntimeClient            = runtimeClient;
     this.messageFactory           = messageFactory;
     this.connectionStatusListener = connectionStatusListener;
     Running             = false;
     this.gatewayManager = gatewayManager;
     numMessages         = 0;
     this.grainBuckets   = new WeakReference <Connection> [clientMessagingOptions.Value.ClientSenderBuckets];
     logger = loggerFactory.CreateLogger <ClientMessageCenter>();
     if (logger.IsEnabled(LogLevel.Debug))
     {
         logger.Debug("Proxy grain client constructed");
     }
     IntValueStatistic.FindOrCreate(
         StatisticNames.CLIENT_CONNECTED_GATEWAY_COUNT,
         () =>
     {
         return(connectionManager.ConnectionCount);
     });
     statisticsLevel = statisticsOptions.Value.CollectionLevel;
     if (statisticsLevel.CollectQueueStats())
     {
         queueTracking = new QueueTrackingStatistic("ClientReceiver", statisticsOptions);
     }
 }