public ParserActor() : base() { var collect = new Behavior <IActor, string>((a, s) => { fList.Add(s); Console.WriteLine("parsed {0}", s); } ); var connect = new Behavior <ActorTag>(t => fParserServer = t); var parse = new Behavior <IEnumerable <string> >(t => { IActor aServer = null; if (fParserServer == null) { aServer = new ParserServer(); fParserServer = aServer.Tag; } else { aServer = new ConnectActor(this, fParserServer.Host, "ParserServer"); } foreach (string s in t) { aServer.SendMessage(this, s); } } ); Become(collect); AddBehavior(connect); AddBehavior(parse); }
private void DoStart(string msg) { // find shard in directory ConnectActor connect = new ConnectActor(this, ActorServer.GetInstance().FullHost, "KnownShards"); var data = Receive(ans => { return(ans is IMessageParam <string, ActorTag, IActor>); }); var res = data.Result as IMessageParam <string, ActorTag, IActor>; var shardDir = res.Item3; Assert.IsNotNull(shardDir); ShardRequest req = ShardRequest.CastRequest(this, this); shardDir.SendMessage(req); Become(new Behavior <ShardRequest>(WaitAns)); }