/// <summary> /// Creates the response header. /// </summary> /// <param name="requestHeader">The object that contains description for the RequestHeader DataType.</param> /// <param name="stringTable">The thread safe table of string constants.</param> /// <returns>Returns a description for the ResponseHeader DataType. </returns> protected virtual ResponseHeader CreateResponse(RequestHeader requestHeader, StringTable stringTable) { ResponseHeader responseHeader = new ResponseHeader(); responseHeader.Timestamp = DateTime.UtcNow; responseHeader.RequestHandle = requestHeader.RequestHandle; responseHeader.StringTable.AddRange(stringTable.ToArray()); return(responseHeader); }
/// <summary> /// Creates a fault message. /// </summary> /// <param name="request">The request.</param> /// <param name="exception">The exception.</param> /// <returns>A fault message.</returns> protected static ServiceFault CreateFault(IServiceRequest request, Exception exception) { DiagnosticsMasks diagnosticsMask = DiagnosticsMasks.ServiceNoInnerStatus; ServiceFault fault = new ServiceFault(); if (request != null) { fault.ResponseHeader.Timestamp = DateTime.UtcNow; fault.ResponseHeader.RequestHandle = request.RequestHeader.RequestHandle; if (request.RequestHeader != null) { diagnosticsMask = (DiagnosticsMasks)request.RequestHeader.ReturnDiagnostics; } } ServiceResult result = null; ServiceResultException sre = exception as ServiceResultException; if (sre != null) { result = new ServiceResult(sre); Utils.Trace( Utils.TraceMasks.Service, "Service Fault Occured. Reason={0}", result); } else { result = new ServiceResult(exception, StatusCodes.BadUnexpectedError); Utils.Trace(exception, "SERVER - Unexpected Service Fault: {0}", exception.Message); } fault.ResponseHeader.ServiceResult = result.Code; StringTable stringTable = new StringTable(); fault.ResponseHeader.ServiceDiagnostics = new DiagnosticInfo( result, diagnosticsMask, true, stringTable); fault.ResponseHeader.StringTable = stringTable.ToArray(); return(fault); }
/// <summary> /// Creates the response header. /// </summary> /// <param name="requestHeader">The object that contains description for the RequestHeader DataType.</param> /// <param name="exception">The exception used to create DiagnosticInfo assigned to the ServiceDiagnostics.</param> /// <returns>Returns a description for the ResponseHeader DataType. </returns> protected virtual ResponseHeader CreateResponse(RequestHeader requestHeader, Exception exception) { ResponseHeader responseHeader = new ResponseHeader(); responseHeader.Timestamp = DateTime.UtcNow; responseHeader.RequestHandle = requestHeader.RequestHandle; StringTable stringTable = new StringTable(); responseHeader.ServiceDiagnostics = new DiagnosticInfo(exception, (DiagnosticsMasks)requestHeader.ReturnDiagnostics, true, stringTable); responseHeader.StringTable = stringTable.ToArray(); return(responseHeader); }
/// <summary> /// Creates a fault message. /// </summary> /// <param name="request">The request.</param> /// <param name="exception">The exception.</param> /// <returns>A fault message.</returns> protected static ServiceFault CreateFault(IServiceRequest request, Exception exception) { DiagnosticsMasks diagnosticsMask = DiagnosticsMasks.ServiceNoInnerStatus; ServiceFault fault = new ServiceFault(); if (request != null) { fault.ResponseHeader.Timestamp = DateTime.UtcNow; fault.ResponseHeader.RequestHandle = request.RequestHeader.RequestHandle; if (request.RequestHeader != null) { diagnosticsMask = (DiagnosticsMasks)request.RequestHeader.ReturnDiagnostics; } } ServiceResult result = null; ServiceResultException sre = exception as ServiceResultException; if (sre != null) { result = new ServiceResult(sre); Utils.Trace( Utils.TraceMasks.Service, "Service Fault Occured. Reason={0}", result); } else { result = new ServiceResult(exception, StatusCodes.BadUnexpectedError); Utils.Trace(exception, "SERVER - Unexpected Service Fault: {0}", exception.Message); } fault.ResponseHeader.ServiceResult = result.Code; StringTable stringTable = new StringTable(); fault.ResponseHeader.ServiceDiagnostics = new DiagnosticInfo( result, diagnosticsMask, true, stringTable); fault.ResponseHeader.StringTable = stringTable.ToArray(); return fault; }
/// <inheritdoc cref="IEncodeable.Encode(IEncoder)" /> public void Encode(IEncoder encoder) { encoder.WriteUInt32("UriVersion", UriVersion); if (NamespaceUris != null && NamespaceUris.Count > 1) { string[] uris = new string[NamespaceUris.Count - 1]; for (int ii = 1; ii < NamespaceUris.Count; ii++) { uris[ii - 1] = NamespaceUris.GetString((uint)ii); } encoder.WriteStringArray("NamespaceUris", uris); } else { encoder.WriteStringArray("NamespaceUris", Array.Empty <string>()); } if (ServerUris != null && ServerUris.Count > 1) { string[] uris = new string[ServerUris.Count - 1]; for (int ii = 1; ii < ServerUris.Count; ii++) { uris[ii - 1] = ServerUris.GetString((uint)ii); } encoder.WriteStringArray("ServerUris", uris); } else { encoder.WriteStringArray("ServerUris", Array.Empty <string>()); } if (LocaleIds != null && LocaleIds.Count > 1) { encoder.WriteStringArray("LocaleIds", LocaleIds.ToArray()); } else { encoder.WriteStringArray("LocaleIds", Array.Empty <string>()); } if (Message != null) { encoder.SetMappingTables(NamespaceUris, ServerUris); if (Message.TypeId == null || Message.TypeId.IdType != IdType.Numeric) { throw ServiceResultException.Create(StatusCodes.BadEncodingError, "SessionLessServiceMessage message body must have a numeric TypeId defined. ({0})", Message.TypeId); } encoder.WriteUInt32("ServiceId", (uint)Message.TypeId.Identifier); encoder.WriteEncodeable("Body", Message, null); } else { encoder.WriteUInt32("TypeId", (uint)0); } }
/// <summary> /// Creates the response header. /// </summary> /// <param name="requestHeader">The object that contains description for the RequestHeader DataType.</param> /// <param name="stringTable">The thread safe table of string constants.</param> /// <returns>Returns a description for the ResponseHeader DataType. </returns> protected virtual ResponseHeader CreateResponse(RequestHeader requestHeader, StringTable stringTable) { ResponseHeader responseHeader = new ResponseHeader(); responseHeader.Timestamp = DateTime.UtcNow; responseHeader.RequestHandle = requestHeader.RequestHandle; responseHeader.StringTable.AddRange(stringTable.ToArray()); return responseHeader; }
/// <summary> /// Creates the response header. /// </summary> /// <param name="requestHeader">The object that contains description for the RequestHeader DataType.</param> /// <param name="exception">The exception used to create DiagnosticInfo assigned to the ServiceDiagnostics.</param> /// <returns>Returns a description for the ResponseHeader DataType. </returns> protected virtual ResponseHeader CreateResponse(RequestHeader requestHeader, Exception exception) { ResponseHeader responseHeader = new ResponseHeader(); responseHeader.Timestamp = DateTime.UtcNow; responseHeader.RequestHandle = requestHeader.RequestHandle; StringTable stringTable = new StringTable(); responseHeader.ServiceDiagnostics = new DiagnosticInfo(exception, (DiagnosticsMasks)requestHeader.ReturnDiagnostics, true, stringTable); responseHeader.StringTable = stringTable.ToArray(); return responseHeader; }