aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Utilities/Tango.Stubs.CLI
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-12-05 12:29:15 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-12-05 12:29:15 +0200
commitba49db54c7b94315a55bed9ae10fe06e7a65cd33 (patch)
treeabc2b166a77dba28e0ac0707a07f4af4f5e7bb8f /Software/Visual_Studio/Utilities/Tango.Stubs.CLI
parent99ce3aa122c0d8f4703e0d5c43776f2658ac5392 (diff)
downloadTango-ba49db54c7b94315a55bed9ae10fe06e7a65cd33.tar.gz
Tango-ba49db54c7b94315a55bed9ae10fe06e7a65cd33.zip
Improved stubexec CLI !
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.Stubs.CLI')
-rw-r--r--Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Program.cs53
1 files changed, 42 insertions, 11 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Program.cs
index 0e8a530a2..a98072458 100644
--- a/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Program.cs
+++ b/Software/Visual_Studio/Utilities/Tango.Stubs.CLI/Program.cs
@@ -33,7 +33,7 @@ namespace Tango.Stubs.CLI
String comPort = args[0].ToUpper();
String stubName = args[1];
- var stubType = GetAvailableRequestStubs().SingleOrDefault(x => x.Name.ToLower() == stubName.ToLower() || x.Name.Replace("Request", "").ToLower() == stubName.ToLower());
+ var stubType = GetAvailableRequestResponseStubs().SingleOrDefault(x => x.Name.ToLower() == stubName.ToLower() || x.Name.Replace("Request", "").ToLower() == stubName.ToLower());
if (stubType == null)
{
PrintError("Invalid stub '" + stubName + "'.");
@@ -50,7 +50,7 @@ namespace Tango.Stubs.CLI
{
MessageContainer container = new MessageContainer();
container.Token = Guid.NewGuid().ToString();
- container.Type = MessageFactory.ParseMessageType(stubType.Name);
+ container.Type = ParseMessageType(stubType.Name);
Object request = Activator.CreateInstance(stubType);
@@ -96,21 +96,23 @@ namespace Tango.Stubs.CLI
adapter.DataAvailable += (sender, data) =>
{
- responseContainer = MessageFactory.ParseContainer(data);
+ responseContainer = ParseContainer(data);
};
while (responseContainer == null)
{
Thread.Sleep(10);
- if (DateTime.Now > startTime.AddSeconds(2))
+ if (DateTime.Now > startTime.AddSeconds(5))
{
- PrintError("Response has failed to arrive after 2 seconds.");
+ PrintError("Response has failed to arrive after 5 seconds.");
}
}
Console.WriteLine("Response Received:");
- IMessage message = MessageFactory.ExtractMessageFromContainer(responseContainer);
+ var type = typeof(MessageFactory).Assembly.GetType("Tango.PMR.Stubs." + responseContainer.Type.ToString());
+ MessageParser parser = type.GetProperty("Parser").GetValue(container) as MessageParser;
+ IMessage message = parser.ParseFrom(container.Data);
Console.WriteLine(JsonConvert.SerializeObject(message, Formatting.Indented));
done = true;
});
@@ -144,15 +146,20 @@ namespace Tango.Stubs.CLI
Path.GetFileNameWithoutExtension(Process.GetCurrentProcess().MainModule.FileName)));
Console.WriteLine();
- Console.WriteLine("Available Request Stubs:");
+ Console.WriteLine("Available Stubs:");
int stubCount = 1;
- foreach (var stub in GetAvailableRequestStubs())
+ foreach (var stub in GetAvailableRequestResponseStubs())
{
Console.WriteLine();
- Console.WriteLine((stubCount++) + ". " + stub.Name + ":");
+
+ if ((stubCount++) % 2 != 0)
+ {
+ Console.WriteLine("-----------------------------------------------------------------------------------");
+ }
+ Console.WriteLine(stub.Name + ":");
int paramCount = 1;
@@ -183,9 +190,33 @@ namespace Tango.Stubs.CLI
Environment.Exit(0);
}
- private static List<Type> GetAvailableRequestStubs()
+ private static List<Type> GetAvailableRequestResponseStubs()
+ {
+ return typeof(MessageFactory).Assembly.GetTypes().Where(x => x.Namespace != null && x.Namespace.Contains("Stubs") && (x.Name.Contains("Request") || x.Name.Contains("Response")) && !x.Name.Contains("Reflection")).ToList();
+ }
+
+ public static MessageType ParseMessageType(String text)
+ {
+ MessageType t;
+ if (Enum.TryParse<MessageType>(text, true, out t))
+ {
+ return t;
+ }
+ else
+ {
+ throw new InvalidCastException("Message type " + text + " was not found on PMR MessageType enumeration!");
+ }
+ }
+
+ /// <summary>
+ /// Parses a message container from the specified byte array.
+ /// </summary>
+ /// <param name="data">The data.</param>
+ /// <returns></returns>
+ public static MessageContainer ParseContainer(byte[] data)
{
- return typeof(MessageFactory).Assembly.GetTypes().Where(x => x.Namespace != null && x.Namespace.Contains("Stubs") && x.Name.Contains("Request") && !x.Name.Contains("Reflection")).ToList();
+ MessageContainer container = MessageContainer.Parser.ParseFrom(data);
+ return container;
}
}
}