public int RegisterInvokeCallback(IInvokeDuplexCallback invoke)
        {
            var id = Interlocked.Increment(ref lastCallbackId);

            if (!invokeCallbacks.TryAdd(id, invoke))
            {
                throw new InvalidOperationException(Errors.ProtocolDuplicateDuplexId);
            }

            return(id);
        }
 public int RegisterInvokeCallback(IInvokeDuplexCallback invoke)
 {
     Contract.Requires(invoke != null);
     return(0);
 }