/// <summary> /// Sends RPC response to the client /// </summary> /// <param name="sessionContext">The session context of the RPC response to send</param> /// <param name="messageToSend">The RPC response to send</param> /// <exception cref="ArgumentNullException"> /// Thrown when sessionContext or messageToSend is null. /// </exception> public void SendRpcCallResponse(DrsrServerSessionContext sessionContext, DrsrResponseStub messageToSend) { CheckIfSessionContextIsNull(sessionContext); if (messageToSend == null) { throw new ArgumentNullException("messageToSend"); } sessionContext.UpdateSessionContextWithMessageSent(sessionContext.InterfaceType, messageToSend); rpceLayerServer.SendResponse( sessionContext.RpceLayerSessionContext, messageToSend.Encode(sessionContext)); }
internal void UpdateSessionContextWithMessageSent( DrsrRpcInterfaceType currentInterfaceType, DrsrResponseStub messageToSend) { if (currentInterfaceType == DrsrRpcInterfaceType.DRSUAPI) { switch ((DrsuapiMethodOpnums)messageToSend.Opnum) { case DrsuapiMethodOpnums.DrsBind: DrsBindRequest bindRequest = requestReceived as DrsBindRequest; DrsBindResponse bindResponse = messageToSend as DrsBindResponse; if (bindRequest != null && bindResponse != null) { if (bindResponse.Status == 0) { drsHandles.Add(bindResponse.drsHandle); } } break; case DrsuapiMethodOpnums.DrsUnbind: DrsUnbindRequest unbindRequest = requestReceived as DrsUnbindRequest; DrsUnbindResponse unbindResponse = messageToSend as DrsUnbindResponse; if (unbindRequest != null && unbindResponse != null) { if (unbindResponse.Status == 0 && drsHandles.Contains(unbindRequest.drsHandle.Value)) { drsHandles.Remove(unbindRequest.drsHandle.Value); } } break; default: break; } } else if (currentInterfaceType == DrsrRpcInterfaceType.DSAOP) { switch ((DsaopMethodOpnums)messageToSend.Opnum) { case DsaopMethodOpnums.DsaPrepareScript: DsaPrepareScriptRequest PrepareRequest = requestReceived as DsaPrepareScriptRequest; DsaPrepareScriptResponse PrepareResponse = messageToSend as DsaPrepareScriptResponse; if (PrepareRequest != null && PrepareResponse != null) { if (PrepareResponse.Status == 0) { password = PrepareResponse.outMessage.Value.V1.pbPassword; } } break; case DsaopMethodOpnums.DsaExecuteScript: DsaExecuteScriptRequest executeRequest = requestReceived as DsaExecuteScriptRequest; DsaExecuteScriptResponse executeResponse = messageToSend as DsaExecuteScriptResponse; if (executeRequest != null && executeResponse != null) { if (executeResponse.Status == 0) { password = new byte[0]; } } break; } } }