Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,10 @@ private void EncodeProperty(
encoder.WriteExpandedNodeId(name, (ExpandedNodeId)property.GetValue(this));
break;
case BuiltInType.StatusCode:
encoder.WriteStatusCode(name, (StatusCode)property.GetValue(this));
{
var propValue = property.GetValue(this);
encoder.WriteStatusCode(name, propValue is StatusCode sc ? sc : new StatusCode((uint)propValue));
}
break;
case BuiltInType.DiagnosticInfo:
encoder.WriteDiagnosticInfo(name, (DiagnosticInfo)property.GetValue(this));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1013,7 +1013,7 @@ public void CheckRevocationStatus(

if (outputArguments.Count >= 2)
{
certificateStatus = (StatusCode)outputArguments[0];
certificateStatus = outputArguments[0] is StatusCode sc ? sc : new StatusCode((uint)outputArguments[0]);
validityTime = (DateTime)outputArguments[1];
}
return (certificateStatus, validityTime);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3153,7 +3153,7 @@ protected override ServiceResult Call(

byte[] certificate = (byte[])_inputArguments[0];

StatusCode certificateStatus = (StatusCode)_outputArguments[0];
StatusCode certificateStatus = _outputArguments[0] is StatusCode sc ? sc : new StatusCode((uint)_outputArguments[0]);
DateTime validityTime = (DateTime)_outputArguments[1];

if (OnCall != null)
Expand Down
2 changes: 1 addition & 1 deletion Libraries/Opc.Ua.PubSub/Encoding/UadpDataSetMessage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -807,7 +807,7 @@ private void EncodeFieldAsRawData(
valueToEncode as ExpandedNodeId);
break;
case BuiltInType.StatusCode:
binaryEncoder.WriteStatusCode("StatusCode", (StatusCode)valueToEncode);
binaryEncoder.WriteStatusCode("StatusCode", valueToEncode is StatusCode sc ? sc : new StatusCode((uint)valueToEncode));
break;
case BuiltInType.XmlElement:
binaryEncoder.WriteXmlElement(
Expand Down
4 changes: 2 additions & 2 deletions Stack/Opc.Ua.Core/Stack/Types/FilterEvaluator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -830,7 +830,7 @@ private object ToUInt16(object value, BuiltInType sourceType)
case BuiltInType.String:
return XmlConvert.ToUInt16((string)value);
case BuiltInType.StatusCode:
var code = (StatusCode)value;
var code = value is StatusCode sc ? sc : new StatusCode((uint)value);
return (ushort)(code.CodeBits >> 16);
case >= BuiltInType.Null and <= BuiltInType.Enumeration:
// conversion not supported.
Expand Down Expand Up @@ -1467,7 +1467,7 @@ private object ToStatusCode(object value, BuiltInType sourceType)
switch (sourceType)
{
case BuiltInType.StatusCode:
return (StatusCode)value;
return value is StatusCode sc ? sc : new StatusCode((uint)value);
case BuiltInType.UInt16:
uint code = Convert.ToUInt32((ushort)value);
code <<= 16;
Expand Down
2 changes: 1 addition & 1 deletion Stack/Opc.Ua.Core/Types/Encoders/JsonEncoder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3348,7 +3348,7 @@ public void WriteVariantContents(object value, TypeInfo typeInfo)
WriteExpandedNodeId(null, (ExpandedNodeId)value);
return;
case BuiltInType.StatusCode:
WriteStatusCode(null, (StatusCode)value);
WriteStatusCode(null, value is StatusCode sc ? sc : new StatusCode((uint)value));
return;
case BuiltInType.QualifiedName:
WriteQualifiedName(null, (QualifiedName)value);
Expand Down
4 changes: 3 additions & 1 deletion Stack/Opc.Ua.Core/Types/Utils/DataComparer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -757,7 +757,9 @@ public bool CompareVariant(Variant value1, Variant value2)
}
if (systemType == typeof(StatusCode))
{
return CompareStatusCode((StatusCode)value1.Value, (StatusCode)value2.Value);
var sc1 = value1.Value is StatusCode s1 ? s1 : new StatusCode((uint)value1.Value);
var sc2 = value2.Value is StatusCode s2 ? s2 : new StatusCode((uint)value2.Value);
return CompareStatusCode(sc1, sc2);
}
if (systemType == typeof(DiagnosticInfo))
{
Expand Down
2 changes: 1 addition & 1 deletion Stack/Opc.Ua.Types/Encoders/BinaryEncoder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2437,7 +2437,7 @@ private void WriteVariantValue(string fieldName, Variant value)
WriteExpandedNodeId(null, (ExpandedNodeId)valueToEncode);
return;
case BuiltInType.StatusCode:
WriteStatusCode(null, (StatusCode)valueToEncode);
WriteStatusCode(null, valueToEncode is StatusCode sc ? sc : new StatusCode((uint)valueToEncode));
return;
case BuiltInType.QualifiedName:
WriteQualifiedName(null, (QualifiedName)valueToEncode);
Expand Down
2 changes: 1 addition & 1 deletion Stack/Opc.Ua.Types/Encoders/XmlEncoder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1927,7 +1927,7 @@ public void WriteVariantContents(object value, TypeInfo typeInfo)
WriteExpandedNodeId("ExpandedNodeId", (ExpandedNodeId)value);
return;
case BuiltInType.StatusCode:
WriteStatusCode("StatusCode", (StatusCode)value);
WriteStatusCode("StatusCode", value is StatusCode sc ? sc : new StatusCode((uint)value));
return;
case BuiltInType.QualifiedName:
WriteQualifiedName("QualifiedName", (QualifiedName)value);
Expand Down
4 changes: 2 additions & 2 deletions Stack/Opc.Ua.Types/Utils/TypeInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2472,7 +2472,7 @@ private static ushort ToUInt16(object value, TypeInfo sourceType)
case BuiltInType.String:
return XmlConvert.ToUInt16((string)value);
case BuiltInType.StatusCode:
var code = (StatusCode)value;
var code = value is StatusCode sc ? sc : new StatusCode((uint)value);
return (ushort)(code.CodeBits >> 16);
case >= BuiltInType.Null and <= BuiltInType.Enumeration:
// conversion not supported.
Expand Down Expand Up @@ -3045,7 +3045,7 @@ private static StatusCode ToStatusCode(object value, TypeInfo sourceType)
switch (sourceType.BuiltInType)
{
case BuiltInType.StatusCode:
return (StatusCode)value;
return value is StatusCode sc ? sc : new StatusCode((uint)value);
case BuiltInType.UInt16:
uint code = Convert.ToUInt32((ushort)value, CultureInfo.InvariantCulture);
code <<= 16;
Expand Down
Loading