// Tests

    IEnumerator ProcessGreeter(IChannel channel, IGreeterWithObserver greeter)
    {
        WriteLine("*** Greeter ***");

        var observer = channel.CreateObserver <IGreetObserver>(this);

        yield return(greeter.Subscribe(observer).WaitHandle);

        var t1 = greeter.Greet("World");

        yield return(t1.WaitHandle);

        ShowResult(t1, "Greet(Hello)");

        var t2 = greeter.Greet("Actor");

        yield return(t2.WaitHandle);

        ShowResult(t2, "Greet(Actor)");

        var t3 = greeter.GetCount();

        yield return(t3.WaitHandle);

        ShowResult(t3, "GetCount()");

        yield return(greeter.Unsubscribe(observer).WaitHandle);

        channel.RemoveObserver(observer);

        WriteLine("");
    }
 public static SurrogateForIGreeterWithObserver Convert(IGreeterWithObserver value)
 {
     if (value == null)
     {
         return(null);
     }
     return(new SurrogateForIGreeterWithObserver {
         Target = ((GreeterWithObserverRef)value).Target
     });
 }
    IEnumerator ProcessGreeterOnAnotherChannel(IGreeterWithObserver greeter)
    {
        WriteLine("*** ProcessGreeterOnAnotherChannel ***");

        // Connect to secondary gateway

        var actorRef = (InterfacedActorRef)greeter;

        if (actorRef.IsChannelConnected() == false)
        {
            yield return(actorRef.ConnectChannelAsync().WaitHandle);
        }

        var channel = (IChannel)actorRef.RequestWaiter;

        yield return(ProcessGreeter(channel, greeter));

        channel.Close();
    }
 public static SurrogateForIGreeterWithObserver Convert(IGreeterWithObserver value)
 {
     if (value == null) return null;
     return new SurrogateForIGreeterWithObserver { Target = ((GreeterWithObserverRef)value).Target };
 }