public StatelessStreamObserver(ILogger logger, IStatelessOperator statelessStreamOperator, IBatchTracker tracker)
 {
     this.statelessStreamOperator = statelessStreamOperator;
     this.logger         = logger;
     this.tracker        = tracker;
     this.messagesBuffer = new List <StreamMessage>();
 }
 public override Task OnActivateAsync()
 {
     batchTracker = GrainFactory.GetGrain <IBatchTracker>(Constants.Tracker);
     operatorSettings.operatorType = OperatorType.Stateless;
     topologyManager = GrainFactory.GetGrain <ITopology>(Constants.Topology_Manager);
     topologyUnit    = new TopologyUnit(OperatorType.Stateless, this.GetPrimaryKey());
     topologyManager.AddUnit(topologyUnit);
     return(base.OnActivateAsync());
 }
        public override Task OnActivateAsync()
        {
            currentBatchID  = 0;
            committedID     = -1;
            tracker         = GrainFactory.GetGrain <IBatchTracker>(Utils.Constants.Tracker);
            topologyManager = GrainFactory.GetGrain <ITopology>(Constants.Topology_Manager);
            PrettyConsole.Line("Register Timer");
            var streamProvider = GetStreamProvider(Constants.FaultTolerantStreamProvider);

            return(base.OnActivateAsync());
        }
        public override Task OnActivateAsync()
        {
            //Add a initial state for testing usage
            currentBatchID = 0;
            //Generate random file name
            var name = @"D:\grainStates\grain" + Guid.NewGuid().ToString() + ".dat";

            batchTracker     = GrainFactory.GetGrain <IBatchTracker>(Constants.Tracker);
            batchCoordinator = GrainFactory.GetGrain <IBatchCoordinator>(Constants.Coordinator);
            operatorSettings.incrementalLogAddress = name;
            operatorSettings.operatorType          = OperatorType.Stateful;
            topologyManager = GrainFactory.GetGrain <ITopology>(Constants.Topology_Manager);
            topologyUnit    = new TopologyUnit(OperatorType.Stateful, this.GetPrimaryKey());
            topologyManager.AddUnit(topologyUnit);
            topologyManager.UpdateOperatorSettings(topologyUnit.PrimaryKey, operatorSettings);
            return(Task.CompletedTask);
        }
Пример #5
0
        private static async Task JoinChannel(IClusterClient client, string channelName)
        {
            if (joinedChannel == channelName)
            {
                PrettyConsole.Line($"You already joined channel {channelName}. Double joining a channel, which is implemented as a stream, would result in double subscription to the same stream, " +
                                   $"which would result in receiving duplicated messages. For more information, please refer to Orleans streaming documentation.");
                return;
            }
            PrettyConsole.Line($"Joining to channel {channelName}");
            joinedChannel = channelName;
            var room     = client.GetGrain <IStreamSource>(joinedChannel);
            var streamId = await room.Join(userName);

            var stream = client.GetStreamProvider(Constants.ChatRoomStreamProvider)
                         .GetStream <StreamMessage>(streamId, Constants.CharRoomStreamNameSpace);

            //subscribe to the stream to receiver furthur messages sent to the chatroom
            statelessOperator = client.GetGrain <IStatelessOperator>("Stateless");
            tracker           = await room.GetBatchTracker();

            await stream.SubscribeAsync(new StatelessStreamObserver(client.ServiceProvider.GetService <ILoggerFactory>()
                                                                    .CreateLogger($"{joinedChannel} channel"), statelessOperator, tracker));
        }
Пример #6
0
 private Task SetUpBatchTracker()
 {
     batchTracker = GrainFactory.GetGrain <IBatchTracker>(Constants.Tracker);
     return(Task.CompletedTask);
 }
 public Task SetTracker(IBatchTracker batchTracker)
 {
     this.tracker = batchTracker;
     return(Task.CompletedTask);
 }
Пример #8
0
 public override Task OnActivateAsync()
 {
     batchTracker = GrainFactory.GetGrain <IBatchTracker>(Constants.Tracker);
     return(base.OnActivateAsync());
 }
Пример #9
0
 public void SetBatchTracker(IBatchTracker batchTracker)
 {
     this.batchTracker = batchTracker;
 }