diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-08-06 13:03:05 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-08-06 13:03:05 +0300 |
| commit | 88407c1927faeabcec2b9c2699d657eb5723bc81 (patch) | |
| tree | 210f0877e20b401017b5f460e7f2f72dea8e91f8 /Software/Visual_Studio/Tango.PMR | |
| parent | f9e3fb301b8b94529f14c8c3291d430cad5d71db (diff) | |
| download | Tango-88407c1927faeabcec2b9c2699d657eb5723bc81.tar.gz Tango-88407c1927faeabcec2b9c2699d657eb5723bc81.zip | |
Refactored data store to use DataStoreMessageType.
Diffstat (limited to 'Software/Visual_Studio/Tango.PMR')
5 files changed, 118 insertions, 12 deletions
diff --git a/Software/Visual_Studio/Tango.PMR/DataStore/DataStoreItem.cs b/Software/Visual_Studio/Tango.PMR/DataStore/DataStoreItem.cs index f560237ae..c6b4e6776 100644 --- a/Software/Visual_Studio/Tango.PMR/DataStore/DataStoreItem.cs +++ b/Software/Visual_Studio/Tango.PMR/DataStore/DataStoreItem.cs @@ -23,15 +23,16 @@ namespace Tango.PMR.DataStore { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChNEYXRhU3RvcmVJdGVtLnByb3RvEhNUYW5nby5QTVIuRGF0YVN0b3JlGg5E", - "YXRhVHlwZS5wcm90bxoRTWVzc2FnZVR5cGUucHJvdG8i7gEKDURhdGFTdG9y", - "ZUl0ZW0SLwoIRGF0YVR5cGUYASABKA4yHS5UYW5nby5QTVIuRGF0YVN0b3Jl", - "LkRhdGFUeXBlEhIKCkludDMyVmFsdWUYAiABKAUSEgoKRmxvYXRWYWx1ZRgD", - "IAEoAhITCgtEb3VibGVWYWx1ZRgEIAEoARIUCgxCb29sZWFuVmFsdWUYBSAB", - "KAgSEwoLU3RyaW5nVmFsdWUYBiABKAkSEgoKQnl0ZXNWYWx1ZRgHIAEoDBIw", - "CglQcm90b1R5cGUYFCABKA4yHS5UYW5nby5QTVIuQ29tbW9uLk1lc3NhZ2VU", - "eXBlQh8KHWNvbS50d2luZS50YW5nby5wbXIuZGF0YXN0b3JlYgZwcm90bzM=")); + "YXRhVHlwZS5wcm90bxoaRGF0YVN0b3JlTWVzc2FnZVR5cGUucHJvdG8i+gEK", + "DURhdGFTdG9yZUl0ZW0SLwoIRGF0YVR5cGUYASABKA4yHS5UYW5nby5QTVIu", + "RGF0YVN0b3JlLkRhdGFUeXBlEhIKCkludDMyVmFsdWUYAiABKAUSEgoKRmxv", + "YXRWYWx1ZRgDIAEoAhITCgtEb3VibGVWYWx1ZRgEIAEoARIUCgxCb29sZWFu", + "VmFsdWUYBSABKAgSEwoLU3RyaW5nVmFsdWUYBiABKAkSEgoKQnl0ZXNWYWx1", + "ZRgHIAEoDBI8CglQcm90b1R5cGUYFCABKA4yKS5UYW5nby5QTVIuRGF0YVN0", + "b3JlLkRhdGFTdG9yZU1lc3NhZ2VUeXBlQh8KHWNvbS50d2luZS50YW5nby5w", + "bXIuZGF0YXN0b3JlYgZwcm90bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Tango.PMR.DataStore.DataTypeReflection.Descriptor, global::Tango.PMR.Common.MessageTypeReflection.Descriptor, }, + new pbr::FileDescriptor[] { global::Tango.PMR.DataStore.DataTypeReflection.Descriptor, global::Tango.PMR.DataStore.DataStoreMessageTypeReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tango.PMR.DataStore.DataStoreItem), global::Tango.PMR.DataStore.DataStoreItem.Parser, new[]{ "DataType", "Int32Value", "FloatValue", "DoubleValue", "BooleanValue", "StringValue", "BytesValue", "ProtoType" }, null, null, null) })); @@ -158,12 +159,12 @@ namespace Tango.PMR.DataStore { /// <summary>Field number for the "ProtoType" field.</summary> public const int ProtoTypeFieldNumber = 20; - private global::Tango.PMR.Common.MessageType protoType_ = 0; + private global::Tango.PMR.DataStore.DataStoreMessageType protoType_ = 0; /// <summary> ///Use only when DataType = Proto. /// </summary> [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Tango.PMR.Common.MessageType ProtoType { + public global::Tango.PMR.DataStore.DataStoreMessageType ProtoType { get { return protoType_; } set { protoType_ = value; @@ -347,7 +348,7 @@ namespace Tango.PMR.DataStore { break; } case 160: { - protoType_ = (global::Tango.PMR.Common.MessageType) input.ReadEnum(); + protoType_ = (global::Tango.PMR.DataStore.DataStoreMessageType) input.ReadEnum(); break; } } diff --git a/Software/Visual_Studio/Tango.PMR/DataStore/DataStoreMessageType.cs b/Software/Visual_Studio/Tango.PMR/DataStore/DataStoreMessageType.cs new file mode 100644 index 000000000..9c9f70ef8 --- /dev/null +++ b/Software/Visual_Studio/Tango.PMR/DataStore/DataStoreMessageType.cs @@ -0,0 +1,47 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: DataStoreMessageType.proto +#pragma warning disable 1591, 0612, 3021 +#region Designer generated code + +using pb = global::Google.Protobuf; +using pbc = global::Google.Protobuf.Collections; +using pbr = global::Google.Protobuf.Reflection; +using scg = global::System.Collections.Generic; +namespace Tango.PMR.DataStore { + + /// <summary>Holder for reflection information generated from DataStoreMessageType.proto</summary> + public static partial class DataStoreMessageTypeReflection { + + #region Descriptor + /// <summary>File descriptor for DataStoreMessageType.proto</summary> + public static pbr::FileDescriptor Descriptor { + get { return descriptor; } + } + private static pbr::FileDescriptor descriptor; + + static DataStoreMessageTypeReflection() { + byte[] descriptorData = global::System.Convert.FromBase64String( + string.Concat( + "ChpEYXRhU3RvcmVNZXNzYWdlVHlwZS5wcm90bxITVGFuZ28uUE1SLkRhdGFT", + "dG9yZSpSChREYXRhU3RvcmVNZXNzYWdlVHlwZRINCglVbmRlZmluZWQQABIU", + "ChBDYWxjdWxhdGVSZXF1ZXN0EAESFQoRQ2FsY3VsYXRlUmVzcG9uc2UQAkIf", + "Ch1jb20udHdpbmUudGFuZ28ucG1yLmRhdGFzdG9yZWIGcHJvdG8z")); + descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, + new pbr::FileDescriptor[] { }, + new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Tango.PMR.DataStore.DataStoreMessageType), }, null)); + } + #endregion + + } + #region Enums + public enum DataStoreMessageType { + [pbr::OriginalName("Undefined")] Undefined = 0, + [pbr::OriginalName("CalculateRequest")] CalculateRequest = 1, + [pbr::OriginalName("CalculateResponse")] CalculateResponse = 2, + } + + #endregion + +} + +#endregion Designer generated code diff --git a/Software/Visual_Studio/Tango.PMR/ExtensionMethods.cs b/Software/Visual_Studio/Tango.PMR/ExtensionMethods.cs index d5475ce7b..be0912220 100644 --- a/Software/Visual_Studio/Tango.PMR/ExtensionMethods.cs +++ b/Software/Visual_Studio/Tango.PMR/ExtensionMethods.cs @@ -8,6 +8,7 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; using Tango.PMR.Common; +using Tango.PMR.DataStore; using Tango.PMR.Integration; /// <summary> @@ -33,6 +34,19 @@ public static class ExtensionMethods return value.ToString(); } + public static String ToOriginalName(this DataStoreMessageType value) + { + FieldInfo fi = value.GetType().GetField(value.ToString()); + + OriginalNameAttribute[] attributes = (OriginalNameAttribute[])fi.GetCustomAttributes(typeof(OriginalNameAttribute), false); + + if (attributes != null && + attributes.Length > 0) + return attributes[0].Name; + else + return value.ToString(); + } + /// <summary> /// Gets the message parser. /// </summary> diff --git a/Software/Visual_Studio/Tango.PMR/MessageFactory.cs b/Software/Visual_Studio/Tango.PMR/MessageFactory.cs index d23970e88..8aa5283e8 100644 --- a/Software/Visual_Studio/Tango.PMR/MessageFactory.cs +++ b/Software/Visual_Studio/Tango.PMR/MessageFactory.cs @@ -7,6 +7,7 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; using Tango.PMR.Common; +using Tango.PMR.DataStore; using Tango.PMR.Integration; namespace Tango.PMR @@ -17,6 +18,7 @@ namespace Tango.PMR public static class MessageFactory { private static Dictionary<MessageType, Type> _pmrTypes; + private static Dictionary<DataStoreMessageType, Type> _pmrDataStoreTypes; private static MethodInfo _parseTangoMessageMethod; static MessageFactory() @@ -35,6 +37,18 @@ namespace Tango.PMR _pmrTypes.Add(value, type); } } + + _pmrDataStoreTypes = new Dictionary<DataStoreMessageType, Type>(); + + foreach (var value in Enum.GetValues(typeof(DataStoreMessageType)).OfType<DataStoreMessageType>()) + { + var type = types.SingleOrDefault(x => x.Name == value.ToOriginalName()); + + if (type != null) + { + _pmrDataStoreTypes.Add(value, type); + } + } } /// <summary> @@ -48,6 +62,16 @@ namespace Tango.PMR } /// <summary> + /// Returns the matching PMR type from the PMR message type. + /// </summary> + /// <param name="messageType">Type of the message.</param> + /// <returns></returns> + public static Type GetDataStorePMRTypeFromDataStoreMessageType(DataStoreMessageType messageType) + { + return _pmrDataStoreTypes[messageType]; + } + + /// <summary> /// Creates a new <see cref="TangoMessage{T}"/>. /// </summary> /// <typeparam name="T"></typeparam> @@ -200,6 +224,25 @@ namespace Tango.PMR } /// <summary> + /// Parses the specified text to a PMR <see cref="MessageType"/>. + /// </summary> + /// <param name="text">The text.</param> + /// <returns></returns> + /// <exception cref="InvalidCastException">Could not parse message type " + text</exception> + public static DataStoreMessageType ParseDataStoreMessageType(String text) + { + DataStoreMessageType t; + if (Enum.TryParse<DataStoreMessageType>(text, true, out t)) + { + return t; + } + else + { + throw new InvalidCastException("Data Store Message type " + text + " was not found on PMR DataStoreMessageType enumeration!"); + } + } + + /// <summary> /// Gets the available request stubs. /// </summary> /// <returns></returns> diff --git a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj index 7e3ec022f..dc2016ae1 100644 --- a/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj +++ b/Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj @@ -88,6 +88,7 @@ <Compile Include="DataStore\DataStoreItem.cs" /> <Compile Include="DataStore\DataStoreItemModifiedRequest.cs" /> <Compile Include="DataStore\DataStoreItemModifiedResponse.cs" /> + <Compile Include="DataStore\DataStoreMessageType.cs" /> <Compile Include="DataStore\DataType.cs" /> <Compile Include="DataStore\GetDataStoreItemRequest.cs" /> <Compile Include="DataStore\GetDataStoreItemResponse.cs" /> @@ -508,7 +509,7 @@ </PropertyGroup> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> + <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file |
