Exemplo n.º 1
0
 protected void DoConnect(string order, string host)
 {
     // find in directory
     DirectoryActor.GetDirectory().Find(this, host);
     ReceiveAsync(ask => (ask is IMessageParam <DirectoryActor.DirectoryRequest, IActor>)).ContinueWith(
         r =>
     {
         IMessageParam <DirectoryActor.DirectoryRequest, IActor> ans = (IMessageParam <DirectoryActor.DirectoryRequest, IActor>)(r.Result);
         if (ans.Item2 != null)
         {
             SendByName.Send("Server found", "Console");
             ans.Item2.SendMessage(new ServerMessage <string>(this, ServerRequest.Connect, default));
             ReceiveAsync(m =>
             {
                 ServerMessage <string> sm = m as ServerMessage <string>;
                 return(m != null && (sm.Request.Equals(ServerRequest.Accept)));
             }).ContinueWith(
                 (c) =>
             {
                 SendByName.Send("Client connected", "Console");
                 aClient.Connect(ans.Item2);
                 Become(aClient);
             }, TaskScheduler.Default);
         }
         else
         {
             // Console.WriteLine("Retry");
             this.SendMessage(order, host);
             // Become(null);
         }
     }, TaskScheduler.Default);
     // repeat message
 }
Exemplo n.º 2
0
        public IDisposable Subscribe(IObserver <T> observer)
        {
            Task <object> res = ReceiveAsync(t => t is IMessageParam <IActor, IDisposable>);

            SendMessage(observer);
            IMessageParam <IActor, IDisposable> resi = res.Result as IMessageParam <IActor, IDisposable>;

            return(resi.Item2);
        }
Exemplo n.º 3
0
        private async void button2_Click(object sender, EventArgs e)
        {
            if (resultActor != null)
            {
                IMessageParam <long, long> data = await resultActor.GetResult().ResultAsync();

                textBox1.AppendText(string.Format("Somme {0} Quantité {1} \n", data.Item1, data.Item2));
            }
        }
Exemplo n.º 4
0
 public static async Task <Object> Receive <T1, T2, T3, T4>(this BaseActor anActor, Func <T1, T2, T3, T4, bool> aPattern)
 {
     CheckArg.Actor(anActor);
     return(await anActor.Receive((o) =>
     {
         IMessageParam <T1, T2, T3, T4> t = o as IMessageParam <T1, T2, T3, T4>;
         return t != null ? aPattern(t.Item1, t.Item2, t.Item3, t.Item4) : false;
     }));
 }