aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Tango.PMR
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2021-08-06 13:03:05 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2021-08-06 13:03:05 +0300
commit88407c1927faeabcec2b9c2699d657eb5723bc81 (patch)
tree210f0877e20b401017b5f460e7f2f72dea8e91f8 /Software/Visual_Studio/Tango.PMR
parentf9e3fb301b8b94529f14c8c3291d430cad5d71db (diff)
downloadTango-88407c1927faeabcec2b9c2699d657eb5723bc81.tar.gz
Tango-88407c1927faeabcec2b9c2699d657eb5723bc81.zip
Refactored data store to use DataStoreMessageType.
Diffstat (limited to 'Software/Visual_Studio/Tango.PMR')
-rw-r--r--Software/Visual_Studio/Tango.PMR/DataStore/DataStoreItem.cs23
-rw-r--r--Software/Visual_Studio/Tango.PMR/DataStore/DataStoreMessageType.cs47
-rw-r--r--Software/Visual_Studio/Tango.PMR/ExtensionMethods.cs14
-rw-r--r--Software/Visual_Studio/Tango.PMR/MessageFactory.cs43
-rw-r--r--Software/Visual_Studio/Tango.PMR/Tango.PMR.csproj3
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