Opc.Ua.Server.Session.Session C# (CSharp) Method

Session() private method

private Session ( OperationContext context, IServerInternal server, X509Certificate2 serverCertificate, NodeId authenticationToken, byte serverNonce, string sessionName, ApplicationDescription clientDescription, string endpointUrl, X509Certificate2 clientCertificate, double sessionTimeout, uint maxResponseMessageSize, double maxRequestAge, int maxBrowseContinuationPoints, int maxHistoryContinuationPoints ) : System
context OperationContext
server IServerInternal
serverCertificate System.Security.Cryptography.X509Certificates.X509Certificate2
authenticationToken NodeId
serverNonce byte
sessionName string
clientDescription ApplicationDescription
endpointUrl string
clientCertificate System.Security.Cryptography.X509Certificates.X509Certificate2
sessionTimeout double
maxResponseMessageSize uint
maxRequestAge double
maxBrowseContinuationPoints int
maxHistoryContinuationPoints int
return System
        public Session(
            OperationContext        context,
            IServerInternal         server,
            X509Certificate2        serverCertificate,
            NodeId                  authenticationToken,
            byte[]                  serverNonce,
            string                  sessionName, 
            ApplicationDescription  clientDescription,    
            string                  endpointUrl,      
            X509Certificate2        clientCertificate,  
            double                  sessionTimeout,
            uint                    maxResponseMessageSize,
            double                  maxRequestAge,
            int                     maxBrowseContinuationPoints,
            int                     maxHistoryContinuationPoints)
        {
            if (context == null) throw new ArgumentNullException("context");
            if (server == null)  throw new ArgumentNullException("server");
            
            // verify that a secure channel was specified.
            if (context.ChannelContext == null)
            {
                throw new ServiceResultException(StatusCodes.BadSecureChannelIdInvalid);
            }

            m_server                       = server;
            m_authenticationToken          = authenticationToken;
            m_serverNonce                  = serverNonce;
            m_sessionName                  = sessionName;
            m_serverCertificate            = serverCertificate;
            m_clientCertificate            = clientCertificate;
            m_secureChannelId              = context.ChannelContext.SecureChannelId;
            m_maxResponseMessageSize       = maxResponseMessageSize;
            m_maxRequestAge                = maxRequestAge;
            m_maxBrowseContinuationPoints  = maxBrowseContinuationPoints;
            m_maxHistoryContinuationPoints = maxHistoryContinuationPoints;
            m_endpoint                     = context.ChannelContext.EndpointDescription;
            
            // use anonymous the default identity.
            m_identity = new UserIdentity();
            
            // initialize diagnostics.
            m_diagnostics = new SessionDiagnosticsDataType();

            m_diagnostics.SessionId = null;
            m_diagnostics.SessionName = sessionName;
            m_diagnostics.ClientDescription = clientDescription;
            m_diagnostics.ServerUri = null;
            m_diagnostics.EndpointUrl = endpointUrl;
            m_diagnostics.LocaleIds = new StringCollection();
            m_diagnostics.ActualSessionTimeout = sessionTimeout;
            m_diagnostics.ClientConnectionTime = DateTime.UtcNow;
            m_diagnostics.ClientLastContactTime = DateTime.UtcNow;
            m_diagnostics.CurrentSubscriptionsCount = 0;
            m_diagnostics.CurrentMonitoredItemsCount = 0;
            m_diagnostics.CurrentPublishRequestsInQueue = 0;
            m_diagnostics.TotalRequestCount = new ServiceCounterDataType();
            m_diagnostics.UnauthorizedRequestCount = 0;
            m_diagnostics.ReadCount = new ServiceCounterDataType();
            m_diagnostics.HistoryReadCount = new ServiceCounterDataType();
            m_diagnostics.WriteCount = new ServiceCounterDataType();
            m_diagnostics.HistoryUpdateCount = new ServiceCounterDataType();
            m_diagnostics.CallCount = new ServiceCounterDataType();
            m_diagnostics.CreateMonitoredItemsCount = new ServiceCounterDataType();
            m_diagnostics.ModifyMonitoredItemsCount = new ServiceCounterDataType();
            m_diagnostics.SetMonitoringModeCount = new ServiceCounterDataType();
            m_diagnostics.SetTriggeringCount = new ServiceCounterDataType();
            m_diagnostics.DeleteMonitoredItemsCount = new ServiceCounterDataType();
            m_diagnostics.CreateSubscriptionCount= new ServiceCounterDataType();
            m_diagnostics.ModifySubscriptionCount = new ServiceCounterDataType();
            m_diagnostics.SetPublishingModeCount = new ServiceCounterDataType();
            m_diagnostics.PublishCount = new ServiceCounterDataType();
            m_diagnostics.RepublishCount = new ServiceCounterDataType();
            m_diagnostics.TransferSubscriptionsCount = new ServiceCounterDataType();
            m_diagnostics.DeleteSubscriptionsCount = new ServiceCounterDataType();
            m_diagnostics.AddNodesCount = new ServiceCounterDataType();
            m_diagnostics.AddReferencesCount = new ServiceCounterDataType();
            m_diagnostics.DeleteNodesCount = new ServiceCounterDataType();
            m_diagnostics.DeleteReferencesCount = new ServiceCounterDataType();
            m_diagnostics.BrowseCount = new ServiceCounterDataType();
            m_diagnostics.BrowseNextCount = new ServiceCounterDataType();
            m_diagnostics.TranslateBrowsePathsToNodeIdsCount = new ServiceCounterDataType();
            m_diagnostics.QueryFirstCount = new ServiceCounterDataType();
            m_diagnostics.QueryNextCount = new ServiceCounterDataType();
            m_diagnostics.RegisterNodesCount = new ServiceCounterDataType();
            m_diagnostics.UnregisterNodesCount = new ServiceCounterDataType();
            
            // initialize security diagnostics.
            m_securityDiagnostics = new SessionSecurityDiagnosticsDataType();
            
            m_securityDiagnostics.SessionId                = m_sessionId;
            m_securityDiagnostics.ClientUserIdOfSession    = m_identity.DisplayName;
            m_securityDiagnostics.AuthenticationMechanism  = m_identity.TokenType.ToString();
            m_securityDiagnostics.Encoding                 = context.ChannelContext.MessageEncoding.ToString();
            
            m_securityDiagnostics.ClientUserIdHistory = new StringCollection();
            m_securityDiagnostics.ClientUserIdHistory.Add(m_identity.DisplayName);

            EndpointDescription description = context.ChannelContext.EndpointDescription;
            
            if (description != null)
            {
                m_securityDiagnostics.TransportProtocol = new Uri(description.EndpointUrl).Scheme;
                m_securityDiagnostics.SecurityMode      = m_endpoint.SecurityMode;
                m_securityDiagnostics.SecurityPolicyUri = m_endpoint.SecurityPolicyUri;
            }

            if (clientCertificate != null)
            {
                m_securityDiagnostics.ClientCertificate = clientCertificate.RawData;
            }

            ServerSystemContext systemContext = m_server.DefaultSystemContext.Copy(context);

            // create diagnostics object.
            m_sessionId = server.DiagnosticsNodeManager.CreateSessionDiagnostics(
                systemContext,
                m_diagnostics,
                OnUpdateDiagnostics,
                m_securityDiagnostics,
                OnUpdateSecurityDiagnostics);

            // report the audit event.
            ReportAuditCreateSessionEvent(systemContext);

            TraceState("CREATED");
        }
        #endregion