protected async void ButtonSayHelloSingleInstance_Click(object sender, EventArgs e) { var targetGrainKey = this.GsiGrain.Text; if (string.IsNullOrEmpty(targetGrainKey)) { this.ReplyText.Text = "Please enter a key"; return; } IHelloGrain grainRef = GrainClient.GrainFactory.GetGrain <IHelloGrain>(targetGrainKey, "HelloGeoGrains.GlobalSingleInstanceGrain"); try { string reply = await grainRef.Ping(); this.ReplyText.Text = string.Format("GlobalSingleInstance-Grain \"{0}\" answered: {1}\n\n at {2} UTC", targetGrainKey, reply, DateTime.UtcNow); } catch (Exception exc) { while (exc is AggregateException) { exc = exc.InnerException; } this.ReplyText.Text = "Error connecting to Orleans: " + exc + " at " + DateTime.UtcNow + " UTC"; } }
public async Task ReceiveAsync(IContext context) { switch (context.Message) { case Started _: { _inner = _grains._HelloGrainFactory(); context.SetReceiveTimeout(TimeSpan.FromSeconds(30)); break; } case ReceiveTimeout _: { context.Stop(context.Self); break; } case GrainRequest request: { switch (request.MethodIndex) { case 0: { var r = HelloRequest.Parser.ParseFrom(request.MessageData); try { var res = await _inner.SayHello(r); var grainResponse = new GrainResponse { MessageData = res.ToByteString(), }; context.Respond(grainResponse); } catch (Exception x) { var grainErrorResponse = new GrainErrorResponse { Err = x.ToString() }; context.Respond(grainErrorResponse); } break; } } break; } } }
public async Task ReceiveAsync(IContext context) { switch (context.Message) { case Started _: { _inner = Grains._HelloGrainFactory(); break; } case GrainRequest request: { switch (request.Method) { case "SayHello": { var r = HelloRequest.Parser.ParseFrom(request.MessageData); try { var res = await _inner.SayHello(r); var grainResponse = new GrainResponse { MessageData = res.ToByteString(), }; context.Respond(grainResponse); } catch (Exception x) { var grainErrorResponse = new GrainErrorResponse { Err = x.ToString() }; context.Respond(grainErrorResponse); } break; } } break; } } }
public async Task <String> SayHello() { IHelloGrain helloGrain = GrainClient.GrainFactory.GetGrain <IHelloGrain>(0); return(await helloGrain.SayHello()); }