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); }
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)); }
private Task SetUpBatchTracker() { batchTracker = GrainFactory.GetGrain <IBatchTracker>(Constants.Tracker); return(Task.CompletedTask); }
public Task SetTracker(IBatchTracker batchTracker) { this.tracker = batchTracker; return(Task.CompletedTask); }
public override Task OnActivateAsync() { batchTracker = GrainFactory.GetGrain <IBatchTracker>(Constants.Tracker); return(base.OnActivateAsync()); }
public void SetBatchTracker(IBatchTracker batchTracker) { this.batchTracker = batchTracker; }