Example #1
0
        /// <exception cref="System.Exception"/>
        public override void MessageReceived(ChannelHandlerContext ctx, MessageEvent e)
        {
            RpcInfo  info          = (RpcInfo)e.GetMessage();
            RpcCall  call          = (RpcCall)info.Header();
            EndPoint remoteAddress = info.RemoteAddress();

            if (Log.IsTraceEnabled())
            {
                Log.Trace(program + " procedure #" + call.GetProcedure());
            }
            if (this.progNumber != call.GetProgram())
            {
                Log.Warn("Invalid RPC call program " + call.GetProgram());
                SendAcceptedReply(call, remoteAddress, RpcAcceptedReply.AcceptState.ProgUnavail,
                                  ctx);
                return;
            }
            int ver = call.GetVersion();

            if (ver < lowProgVersion || ver > highProgVersion)
            {
                Log.Warn("Invalid RPC call version " + ver);
                SendAcceptedReply(call, remoteAddress, RpcAcceptedReply.AcceptState.ProgMismatch,
                                  ctx);
                return;
            }
            HandleInternal(ctx, info);
        }
Example #2
0
        public virtual void TestConstructor()
        {
            Credentials credential = new CredentialsNone();
            Verifier    verifier   = new VerifierNone();
            int         rpcVersion = RpcCall.RpcVersion;
            int         program    = 2;
            int         version    = 3;
            int         procedure  = 4;
            RpcCall     call       = new RpcCall(0, RpcMessage.Type.RpcCall, rpcVersion, program, version
                                                 , procedure, credential, verifier);

            Assert.Equal(0, call.GetXid());
            Assert.Equal(RpcMessage.Type.RpcCall, call.GetMessageType());
            Assert.Equal(rpcVersion, call.GetRpcVersion());
            Assert.Equal(program, call.GetProgram());
            Assert.Equal(version, call.GetVersion());
            Assert.Equal(procedure, call.GetProcedure());
            Assert.Equal(credential, call.GetCredential());
            Assert.Equal(verifier, call.GetVerifier());
        }