コード例 #1
0
 public static IDirectoryClient Instance(Stage stage, IServiceDiscoveryInterest interest, Group directoryPublisherGroup) =>
 Instance(
     stage,
     interest,
     directoryPublisherGroup,
     DefaultMaxMessageSize,
     DefaultProcessingInterval,
     DefaultProcessingTimeout);
コード例 #2
0
 public static IDirectoryClient Instance(
     Stage stage,
     IServiceDiscoveryInterest interest,
     Group directoryPublisherGroup,
     int maxMessageSize,
     long processingInterval,
     int processingTimeout) =>
 stage.ActorFor <IDirectoryClient>(
     () => new DirectoryClientActor(interest, directoryPublisherGroup, maxMessageSize, processingInterval, processingTimeout), ClientName);
コード例 #3
0
        public static IDirectoryClient Instance(
            Stage stage,
            IServiceDiscoveryInterest interest,
            Group directoryPublisherGroup,
            int maxMessageSize,
            long processingInterval,
            int processingTimeout)
        {
            var definition =
                Definition.Has <DirectoryClientActor>(
                    Definition.Parameters(interest, directoryPublisherGroup, maxMessageSize, processingInterval, processingTimeout),
                    ClientName);

            return(stage.ActorFor <IDirectoryClient>(definition));
        }
コード例 #4
0
 public DirectoryClientActor(
     IServiceDiscoveryInterest interest,
     Group directoryPublisherGroup,
     int maxMessageSize,
     long processingInterval,
     int processingTimeout)
 {
     _interest   = interest;
     _buffer     = new MemoryStream(maxMessageSize);
     _subscriber = new MulticastSubscriber(
         DirectoryClientFactory.ClientName,
         directoryPublisherGroup,
         maxMessageSize,
         processingTimeout,
         Logger);
     _subscriber.OpenFor(SelfAs <IChannelReaderConsumer>());
     _cancellable = Stage.Scheduler.Schedule(
         SelfAs <IScheduled <object?> >(), null, TimeSpan.FromMilliseconds(1000L), TimeSpan.FromMilliseconds(processingInterval));
 }