/// <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); }
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()); }