diff --git a/franz/Telefranz.cs b/franz/Telefranz.cs index f9317a0..b0f5544 100644 --- a/franz/Telefranz.cs +++ b/franz/Telefranz.cs @@ -12,7 +12,7 @@ namespace franz { public class Telefranz { - static class _TelefranzConsumers where T : silver_messages.message, new() { + static class _TelefranzConsumers where T : silver_messages.message { internal static readonly Dictionary, Action>> wrappings = new Dictionary, Action>>(); } @@ -78,11 +78,10 @@ namespace franz }); } - public void addHandler(Action theAction) where T : silver_messages.message, new() + public void addHandler(Action theAction) where T : silver_messages.message { - var dummy = new T(); - Console.WriteLine($"created dummy, it reports as {dummy}. typeof(T) reports as {typeof(T)}. Topic is {dummy.topic}"); - var topic = dummy.topic; + Console.WriteLine($"typeof(T) reports as {typeof(T)}."); + var topic = typeof(T).ToString(); Action> wrapped = (kr) => { @@ -99,7 +98,7 @@ namespace franz Console.WriteLine("message didn't deserialize for this handler"); } }; - if(!topicConsumers.ContainsKey(topic)){ + if(!topicConsumers.ContainsKey(typeof(T).ToString())){ Console.WriteLine($"making consumer for {handling_group}, topic {topic}"); topicConsumers[topic] = new KafkaConsumer(topic, clusterClient); topicConsumers[topic].ConsumeFromLatest(); @@ -109,22 +108,21 @@ namespace franz _TelefranzConsumers.wrappings[theAction] = wrapped; topicSubscribers[topic]++; } - public void removeHandler(Action theAction) where T : silver_messages.message, new() + public void removeHandler(Action theAction) where T : silver_messages.message { - var dummy = new T(); - topicConsumers[dummy.topic].MessageReceived -= _TelefranzConsumers.wrappings[theAction]; + topicConsumers[typeof(T).ToString()].MessageReceived -= _TelefranzConsumers.wrappings[theAction]; _TelefranzConsumers.wrappings.Remove(theAction); - topicSubscribers[dummy.topic]--; - if(topicSubscribers[dummy.topic] == 0) + topicSubscribers[typeof(T).ToString()]--; + if(topicSubscribers[typeof(T).ToString()] == 0) { - topicConsumers[dummy.topic].StopConsume(); + topicConsumers[typeof(T).ToString()].StopConsume(); } } public void ProduceMessage(T message) where T : silver_messages.message { Console.WriteLine($"producing message {message}"); - clusterClient.Produce(message.topic, message.ToString()); + clusterClient.Produce(typeof(T).ToString(), message.ToString()); } } } \ No newline at end of file diff --git a/franz/silver_messages/directorial/check_complete.cs b/franz/silver_messages/directorial/check_complete.cs index 2a97660..d3ff6f3 100644 --- a/franz/silver_messages/directorial/check_complete.cs +++ b/franz/silver_messages/directorial/check_complete.cs @@ -4,7 +4,7 @@ using silver_messages; namespace silver_messages.directorial { - public class check_complete : message_directorial + public class check_complete : silver_messages.message { public string check { get; set; } public string result { get; set; } diff --git a/franz/silver_messages/directorial/command_completed.cs b/franz/silver_messages/directorial/command_completed.cs index fe88c36..6870611 100644 --- a/franz/silver_messages/directorial/command_completed.cs +++ b/franz/silver_messages/directorial/command_completed.cs @@ -4,7 +4,7 @@ using silver_messages; namespace silver_messages.directorial { - public class command_completed : message_directorial + public class command_completed : silver_messages.message { //name of the command that was called public string command { get; set; } diff --git a/franz/silver_messages/directorial/command_error.cs b/franz/silver_messages/directorial/command_error.cs index 35d396a..888d0e8 100644 --- a/franz/silver_messages/directorial/command_error.cs +++ b/franz/silver_messages/directorial/command_error.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using silver_messages; namespace silver_messages.directorial { - public class command_error : message_directorial + public class command_error : silver_messages.message { //name of the command that was called public string command { get; set; } diff --git a/franz/silver_messages/directorial/command_expired.cs b/franz/silver_messages/directorial/command_expired.cs index e406cfd..64f0e63 100644 --- a/franz/silver_messages/directorial/command_expired.cs +++ b/franz/silver_messages/directorial/command_expired.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using silver_messages; namespace silver_messages.directorial { - public class command_expired : message_directorial + public class command_expired : silver_messages.message { //name of the command that was called public string command { get; set; } diff --git a/franz/silver_messages/directorial/command_output.cs b/franz/silver_messages/directorial/command_output.cs index 4724a15..b54124a 100644 --- a/franz/silver_messages/directorial/command_output.cs +++ b/franz/silver_messages/directorial/command_output.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using silver_messages; namespace silver_messages.directorial { - public class command_output : message_directorial + public class command_output : silver_messages.message { //name of the command that was called public string command { get; set; } diff --git a/franz/silver_messages/directorial/execute_check.cs b/franz/silver_messages/directorial/execute_check.cs index 98d2777..f5c23a1 100644 --- a/franz/silver_messages/directorial/execute_check.cs +++ b/franz/silver_messages/directorial/execute_check.cs @@ -7,7 +7,7 @@ namespace silver_messages.directorial /* * run it and send a check_complete */ - public class execute_check : message_directorial + public class execute_check : silver_messages.message { public string check { get; set; } public List args { get; set; } = new List(); diff --git a/franz/silver_messages/directorial/execute_command.cs b/franz/silver_messages/directorial/execute_command.cs index c1bf557..01f365a 100644 --- a/franz/silver_messages/directorial/execute_command.cs +++ b/franz/silver_messages/directorial/execute_command.cs @@ -12,7 +12,7 @@ namespace silver_messages.directorial * command_error as you get them, and if it ends some other way, send command_completed * with empty stdout and stderr. */ - public class execute_command : message_directorial + public class execute_command : silver_messages.message { public string command { get; set; } public List args { get; set; } = new List(); diff --git a/franz/silver_messages/directorial/message_directorial.cs b/franz/silver_messages/directorial/message_directorial.cs deleted file mode 100644 index 241ae0d..0000000 --- a/franz/silver_messages/directorial/message_directorial.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace silver_messages -{ - public abstract class message_directorial : silver_messages.message - { - public override string topic => "silver_messages_directorial"; - } -} \ No newline at end of file diff --git a/franz/silver_messages/global/message_global.cs b/franz/silver_messages/global/message_global.cs deleted file mode 100644 index 1094543..0000000 --- a/franz/silver_messages/global/message_global.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace silver_messages -{ - public class message_global : silver_messages.message - { - public override string topic => "silver_messages_global"; - } -} \ No newline at end of file diff --git a/franz/silver_messages/global/report.cs b/franz/silver_messages/global/report.cs index a15f610..7fda720 100644 --- a/franz/silver_messages/global/report.cs +++ b/franz/silver_messages/global/report.cs @@ -2,7 +2,7 @@ using System; using System.Collections.Generic; namespace silver_messages.global { - public class report : message_global + public class report : silver_messages.message { //your name public string name { get; set; } diff --git a/franz/silver_messages/global/restart.cs b/franz/silver_messages/global/restart.cs index ff4f8e2..57248a1 100644 --- a/franz/silver_messages/global/restart.cs +++ b/franz/silver_messages/global/restart.cs @@ -4,7 +4,7 @@ using silver_messages; namespace silver_messages.global { - public class restart : message_global + public class restart : silver_messages.message { //check if this is you (i.e., your handling group). If so, restart. Yourself, not the hardware. public string name { get; set; } diff --git a/franz/silver_messages/global/sound_off.cs b/franz/silver_messages/global/sound_off.cs index 38a0681..b908a0a 100644 --- a/franz/silver_messages/global/sound_off.cs +++ b/franz/silver_messages/global/sound_off.cs @@ -5,6 +5,6 @@ using silver_messages; namespace silver_messages.global { //if you receive this, respond with a report - public class sound_off : message_global { } + public class sound_off : silver_messages.message { } } diff --git a/franz/silver_messages/global/stop.cs b/franz/silver_messages/global/stop.cs index b2cfc10..c438479 100644 --- a/franz/silver_messages/global/stop.cs +++ b/franz/silver_messages/global/stop.cs @@ -4,7 +4,7 @@ using silver_messages; namespace silver_messages.global { - public class stop : message_global + public class stop : silver_messages.message { //check if this is you (i.e., your handling group). If so, stop. Yourself, not the hardware. public string name { get; set; } diff --git a/franz/silver_messages/message.cs b/franz/silver_messages/message.cs index ce1ec5d..57e1d4d 100644 --- a/franz/silver_messages/message.cs +++ b/franz/silver_messages/message.cs @@ -9,10 +9,7 @@ namespace silver_messages public abstract class message : IMemorySerializable { public string type { get { return this.GetType().ToString(); } } - public abstract string topic { get; } - - - + public override string ToString() { return JsonConvert.SerializeObject(this); diff --git a/franz/silver_messages/youtube/message_yt.cs b/franz/silver_messages/youtube/message_yt.cs deleted file mode 100644 index 060c518..0000000 --- a/franz/silver_messages/youtube/message_yt.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace silver_messages -{ - public abstract class message_yt : silver_messages.message - { - public override string topic => "silver_messages_youtube"; - } -} \ No newline at end of file diff --git a/franz/silver_messages/youtube/metadata_needed.cs b/franz/silver_messages/youtube/metadata_needed.cs index 78d26aa..0784b8c 100644 --- a/franz/silver_messages/youtube/metadata_needed.cs +++ b/franz/silver_messages/youtube/metadata_needed.cs @@ -8,7 +8,7 @@ namespace silver_messages.youtube * for all the scheduled, not-yet released videos, what required metadata * do they need */ - public class metadata_needed : message_yt + public class metadata_needed : silver_messages.message { //key is a yt id public Dictionary needed{get;set;} = new Dictionary(); diff --git a/franz/silver_messages/youtube/request_metadata_needed.cs b/franz/silver_messages/youtube/request_metadata_needed.cs index 4e05937..2d95c60 100644 --- a/franz/silver_messages/youtube/request_metadata_needed.cs +++ b/franz/silver_messages/youtube/request_metadata_needed.cs @@ -8,5 +8,5 @@ namespace silver_messages.youtube * check all the scheduled, not-yet released videos for required metadata. * respond with a metadata_needed - empty if none. */ - public class request_metadata_needed : message_yt { } + public class request_metadata_needed : silver_messages.message { } } \ No newline at end of file diff --git a/franz/silver_messages/youtube/update_metadata.cs b/franz/silver_messages/youtube/update_metadata.cs index dbf0506..25a1d47 100644 --- a/franz/silver_messages/youtube/update_metadata.cs +++ b/franz/silver_messages/youtube/update_metadata.cs @@ -7,7 +7,7 @@ namespace silver_messages.youtube /* * someone will send as much metadata as they have - set non-null fields to the provided values */ - public class update_metadata : message_yt + public class update_metadata : silver_messages.message { public string yt_id { get; set; } public yt_metadata metadata { get; set; } diff --git a/franz/silver_messages/youtube/upload.cs b/franz/silver_messages/youtube/upload.cs index 83d42f4..4e011a8 100644 --- a/franz/silver_messages/youtube/upload.cs +++ b/franz/silver_messages/youtube/upload.cs @@ -7,7 +7,7 @@ namespace silver_messages.youtube /** if you receive this, start the upload (of filename with metadata) * and then respond with an upload_started */ - public class upload : message_yt + public class upload : silver_messages.message { public string filename { get; set; } public yt_metadata metadata { get; set; } diff --git a/franz/silver_messages/youtube/upload_started.cs b/franz/silver_messages/youtube/upload_started.cs index ccca306..86ef449 100644 --- a/franz/silver_messages/youtube/upload_started.cs +++ b/franz/silver_messages/youtube/upload_started.cs @@ -4,7 +4,7 @@ using System.IO; using silver_messages; namespace silver_messages.youtube { - public class upload_started : message_yt + public class upload_started : silver_messages.message { public string filename { get; set; } public string yt_id { get; set; }