Beispiel #1
0
        private DuplexCallback(string name, IQbservableProtocol protocol, Func <int, object[], object> invoke)
        {
            Contract.Requires(!string.IsNullOrEmpty(name));
            Contract.Requires(protocol != null);
            Contract.Requires(invoke != null);

            Name        = name;
            this.invoke = invoke;
            ClientId    = protocol.ClientId;
            Id          = protocol.GetOrAddSink(protocol.CreateClientDuplexSink)
                          .RegisterInvokeCallback(this);
        }
Beispiel #2
0
        private static object CreateRemoteObservable(string name, IQbservableProtocol protocol, object instance, Type dataType)
        {
            Contract.Requires(!string.IsNullOrEmpty(name));
            Contract.Requires(protocol != null);
            Contract.Requires(instance != null);
            Contract.Requires(dataType != null);
            Contract.Ensures(Contract.Result <object>() != null);

            var sink = protocol.GetOrAddSink(protocol.CreateClientDuplexSink);

            return(sink.RegisterObservableCallback(clientId => (IObservableDuplexCallback)Activator.CreateInstance(typeof(DuplexCallbackObservable <>).MakeGenericType(dataType), name, clientId, protocol.ClientId, instance)));
        }