// Token: 0x06000310 RID: 784 RVA: 0x000132E8 File Offset: 0x000114E8 private static RfriContext CreateRfriContext(ClientBinding clientBinding) { RfriContext rfriContext = null; using (DisposeGuard disposeGuard = default(DisposeGuard)) { ClientSecurityContext clientSecurityContext = null; bool isAnonymous = false; string text = null; string userDomain = null; RpcHttpConnectionProperties rpcHttpConnectionProperties = null; if (!RpcDispatch.TryGetAuthContextInfo(clientBinding, out clientSecurityContext, out isAnonymous, out text, out userDomain, out rpcHttpConnectionProperties)) { ExTraceGlobals.ReferralTracer.TraceError <Guid>(0L, "Could not resolve anonymous user for session id: {0}", clientBinding.AssociationGuid); throw new RfriException(RfriStatus.LogonFailed, "Could not resolve anonymous user."); } disposeGuard.Add <ClientSecurityContext>(clientSecurityContext); Guid empty = Guid.Empty; if (rpcHttpConnectionProperties != null && rpcHttpConnectionProperties.RequestIds.Length > 0) { Guid.TryParse(rpcHttpConnectionProperties.RequestIds[rpcHttpConnectionProperties.RequestIds.Length - 1], out empty); } rfriContext = new RfriContext(clientSecurityContext, userDomain, clientBinding.ClientAddress, clientBinding.ServerAddress, clientBinding.ProtocolSequence, clientBinding.AuthenticationType.ToString(), clientBinding.IsEncrypted, isAnonymous, empty); disposeGuard.Add <RfriContext>(rfriContext); if (!rfriContext.TryAcquireBudget()) { ExTraceGlobals.ReferralTracer.TraceError((long)rfriContext.ContextHandle, "Could not acquire budget"); throw new RfriException(RfriStatus.GeneralFailure, "Failed to acquire budget."); } disposeGuard.Success(); } return(rfriContext); }
internal static NspiContext CreateContext(ClientBinding clientBinding) { NspiContext result; using (DisposeGuard disposeGuard = default(DisposeGuard)) { ClientSecurityContext clientSecurityContext = null; bool isAnonymous = false; string text = null; string userDomain = null; RpcHttpConnectionProperties rpcHttpConnectionProperties = null; if (!RpcDispatch.TryGetAuthContextInfo(clientBinding, out clientSecurityContext, out isAnonymous, out text, out userDomain, out rpcHttpConnectionProperties)) { ExTraceGlobals.NspiTracer.TraceError <Guid>(0L, "Could not resolve anonymous user for session id: {0}", clientBinding.AssociationGuid); throw new NspiException(NspiStatus.LogonFailed, "Could not resolve anonymous user."); } disposeGuard.Add <ClientSecurityContext>(clientSecurityContext); Guid empty = Guid.Empty; if (rpcHttpConnectionProperties != null && rpcHttpConnectionProperties.RequestIds.Length > 0) { Guid.TryParse(rpcHttpConnectionProperties.RequestIds[rpcHttpConnectionProperties.RequestIds.Length - 1], out empty); } NspiContext nspiContext = new NspiContext(clientSecurityContext, userDomain, clientBinding.ClientAddress, clientBinding.ServerAddress, clientBinding.ProtocolSequence, empty); disposeGuard.Add <NspiContext>(nspiContext); nspiContext.IsAnonymous = isAnonymous; if (!nspiContext.TryAcquireBudget()) { ExTraceGlobals.NspiTracer.TraceError((long)nspiContext.ContextHandle, "Could not acquire budget"); throw new NspiException(NspiStatus.GeneralFailure, "Failed to acquire budget."); } bool flag = false; lock (ClientContextCache.clientContextDictionaryLock) { flag = ClientContextCache.clientContextDictionary.ContainsKey(nspiContext.ContextHandle); if (!flag) { ClientContextCache.clientContextDictionary.Add(nspiContext.ContextHandle, nspiContext); AddressBookPerformanceCountersWrapper.AddressBookPerformanceCounters.NspiConnectionsCurrent.RawValue = (long)ClientContextCache.clientContextDictionary.Count; AddressBookPerformanceCountersWrapper.AddressBookPerformanceCounters.NspiConnectionsTotal.Increment(); AddressBookPerformanceCountersWrapper.AddressBookPerformanceCounters.NspiConnectionsRate.Increment(); } } if (flag) { ExTraceGlobals.NspiTracer.TraceError((long)nspiContext.ContextHandle, "Duplicate contextHandle found in context dictionary"); throw new NspiException(NspiStatus.GeneralFailure, "Duplicate contextHandle found in context dictionary."); } disposeGuard.Success(); result = nspiContext; } return(result); }
/// <summary> /// Dispatches a command with arguments to pipe. /// </summary> /// <param name="command">The command to execute</param> /// <param name="args"></param> public void DispatchCommand(RpcCommand command, object args = null) { var dispatch = new RpcDispatch(); dispatch.Command = command.GetCommandName(); dispatch.Arguments = args; var packet = new RpcPacket(); packet.OpCode = RpcOpCode.Frame; packet.SetData(dispatch.ToJson()); rpc.RaiseLogEvent(this, LogLevel.Debug, $"Dispatching command {command.GetCommandName()}"); Write(packet); }