public IServiceResponse CreateSession(IServiceRequest incoming)
{
CreateSessionResponse response = null;
try
{
OnRequestReceived(incoming);
CreateSessionRequest request = (CreateSessionRequest)incoming;
NodeId sessionId = null;
NodeId authenticationToken = null;
double revisedSessionTimeout = 0;
byte[] serverNonce = null;
byte[] serverCertificate = null;
EndpointDescriptionCollection serverEndpoints = null;
SignedSoftwareCertificateCollection serverSoftwareCertificates = null;
SignatureData serverSignature = null;
uint maxRequestMessageSize = 0;
response = new CreateSessionResponse();
response.ResponseHeader = ServerInstance.CreateSession(
request.RequestHeader,
request.ClientDescription,
request.ServerUri,
request.EndpointUrl,
request.SessionName,
request.ClientNonce,
request.ClientCertificate,
request.RequestedSessionTimeout,
request.MaxResponseMessageSize,
out sessionId,
out authenticationToken,
out revisedSessionTimeout,
out serverNonce,
out serverCertificate,
out serverEndpoints,
out serverSoftwareCertificates,
out serverSignature,
out maxRequestMessageSize);
response.SessionId = sessionId;
response.AuthenticationToken = authenticationToken;
response.RevisedSessionTimeout = revisedSessionTimeout;
response.ServerNonce = serverNonce;
response.ServerCertificate = serverCertificate;
response.ServerEndpoints = serverEndpoints;
response.ServerSoftwareCertificates = serverSoftwareCertificates;
response.ServerSignature = serverSignature;
response.MaxRequestMessageSize = maxRequestMessageSize;
}
finally
{
OnResponseSent(response);
}
return response;
}