// cmd public void CmdEnter(float time, PlayerInfo info, float size, PlayerInfo[] infos, ValuePoint[] ps) { game.callId = info.id; ActorClient a = actors[info.id]; self = a; camerFollow = Camera.main.GetComponent <FollowObj>(); camerFollow.obj = a.obj; worldSize = size; for (int i = 0; i < infos.Length; i++) { CmdActorAppear(infos[i]); } for (int i = 0; i < ps.Length; i++) { CmdAddPoint(ps[i]); } }
static void Main(string[] args) { var actor = Actor.FromFunc(c => { if (c.Headers.ContainsKey("TraceID")) { Console.WriteLine($"TraceID = {c.Headers.GetOrDefault("TraceID")}"); Console.WriteLine($"SpanID = {c.Headers.GetOrDefault("SpanID")}"); Console.WriteLine($"ParentSpanID = {c.Headers.GetOrDefault("ParentSpanID")}"); } Console.WriteLine($"actor got {c.Message.GetType()}:{c.Message}"); return(Actor.Done); }) .WithReceiveMiddleware( next => async c => { Console.WriteLine($"middleware 1 enter {c.Message.GetType()}:{c.Message}"); await next(c); Console.WriteLine($"middleware 1 exit {c.Message.GetType()}:{c.Message}"); }, next => async c => { Console.WriteLine($"middleware 2 enter {c.Message.GetType()}:{c.Message}"); await next(c); Console.WriteLine($"middleware 2 exit {c.Message.GetType()}:{c.Message}"); }); var pid = Actor.Spawn(actor); //Set headers, e.g. Zipkin trace headers var headers = new MessageHeader { { "TraceID", "1000" }, { "SpanID", "2000" } }; var root = new ActorClient(headers, next => async(c, target, envelope) => { envelope.SetHeader("TraceID", c.Headers.GetOrDefault("TraceID")); envelope.SetHeader("SpanID", c.Headers.GetOrDefault("SpanID")); envelope.SetHeader("ParentSpanID", c.Headers.GetOrDefault("ParentSpanID")); Console.WriteLine($"sender middleware 1 enter {envelope.Message.GetType()}:{envelope.Message}"); await next(c, target, envelope); Console.WriteLine($"sender middleware 1 exit {envelope.Message.GetType()}:{envelope.Message}"); }, next => async(c, target, envelope) => { Console.WriteLine($"sender middleware 2 enter {envelope.Message.GetType()}:{envelope.Message}"); await next(c, target, envelope); Console.WriteLine($"sender middleware 2 exit {envelope.Message.GetType()}:{envelope.Message}"); }); //just wait for started message to be processed to make the output look less confusing Task.Delay(500).Wait(); root.Tell(pid, "hello"); Console.ReadLine(); Console.ReadLine(); }
public void CmdActorAppear(PlayerInfo info) { if (actors.ContainsKey(info.id) == false) { var a = new ActorClient(info); actors.Add(info.id, a); } }