GSF.ServiceProcess.ServiceHelper.TrySetCurrentThreadPrincipal C# (CSharp) Method

TrySetCurrentThreadPrincipal() private method

private TrySetCurrentThreadPrincipal ( ClientInfo client ) : bool
client ClientInfo
return bool
        private bool TrySetCurrentThreadPrincipal(ClientInfo client)
        {
            if ((object)client == null)
                throw new ArgumentNullException(nameof(client));

            WindowsPrincipal clientPrincipal;

            // Attempt to find the TryGetClientPrincipal method using reflection - remoting server could be a TCP or TLS server
            if ((object)m_remotingServer != null && (object)m_tryGetClientPrincipalFunction == null)
            {
                MethodInfo tryGetClientPrincipalInfo = m_remotingServer.GetType().GetMethod("TryGetClientPrincipal", new[] { typeof(Guid), typeof(WindowsPrincipal).MakeByRefType() });

                if ((object)tryGetClientPrincipalInfo != null && tryGetClientPrincipalInfo.ReturnType == typeof(bool))
                    m_tryGetClientPrincipalFunction = (TryGetClientPrincipalFunctionSignature)Delegate.CreateDelegate(typeof(TryGetClientPrincipalFunctionSignature), m_remotingServer, tryGetClientPrincipalInfo);
            }

            // Attempt to get the client principal from the remoting server
            if ((object)m_tryGetClientPrincipalFunction != null && m_tryGetClientPrincipalFunction(client.ClientID, out clientPrincipal))
            {
                if ((object)clientPrincipal != null)
                    Thread.CurrentPrincipal = clientPrincipal;
                else if ((object)client.ClientUser != null)
                    Thread.CurrentPrincipal = client.ClientUser;

                return true;
            }

            return false;
        }
ServiceHelper