From da1c3134e285044fabb08d775e715fb2f733d06b Mon Sep 17 00:00:00 2001 From: Sinan Date: Mon, 24 Sep 2018 12:41:54 +0200 Subject: [PATCH 3/4] Add factory singleton for participitants --- rsb-cil-test/Program.cs | 12 +++++++--- rsb-cil/Rsb/Factory.cs | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ rsb-cil/rsb-cil.csproj | 1 + 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 rsb-cil/Rsb/Factory.cs diff --git a/rsb-cil-test/Program.cs b/rsb-cil-test/Program.cs index f1c4312..3b8fcc8 100644 --- a/rsb-cil-test/Program.cs +++ b/rsb-cil-test/Program.cs @@ -79,9 +79,15 @@ namespace rsbciltest listener.Deactivate(); - Console.WriteLine("\nRepository test:"); - Informer repoInformer = new Informer("/test/repo", new OutConnector(new BusClientConnection(host, port), Rsb.Converter.DefaultConverterRepository.Instance.InformerConverterSelector)); - Listener repoListener = new Listener(new InPushConnector(new BusClientConnection(host, port), new Scope("/"), Rsb.Converter.DefaultConverterRepository.Instance.ListenerConverterSelector)); + Console.WriteLine("\nRepository test with factory:"); + + Factory.Instance.Host = host; + Factory.Instance.Port = port; + + Informer repoInformer = Factory.Instance.createInformer("/test/repo"); + //new Informer("/test/repo", new OutConnector(new BusClientConnection(host, port), Rsb.Converter.DefaultConverterRepository.Instance.InformerConverterSelector)); + Listener repoListener = Factory.Instance.createListener("/"); + //new Listener(new InPushConnector(new BusClientConnection(host, port), new Scope("/"), Rsb.Converter.DefaultConverterRepository.Instance.ListenerConverterSelector)); repoListener.EventReceived += (e) => { Console.WriteLine("Event: {0}\nData: {1}", e, e.Data); }; diff --git a/rsb-cil/Rsb/Factory.cs b/rsb-cil/Rsb/Factory.cs new file mode 100644 index 0000000..dab5877 --- /dev/null +++ b/rsb-cil/Rsb/Factory.cs @@ -0,0 +1,61 @@ + + +using Rsb.Transport.Socket; +using Rsb.Converter; + +namespace Rsb +{ + public class Factory + { + private static readonly Factory instance = new Factory(); + + private string host = "localhost"; + public string Host { get { return host; } set {host = value;} } + private int port = 30010; + public int Port { get { return port; } set { port = value; } } + + // Explicit static constructor to tell C# compiler + // not to mark type as beforefieldinit + static Factory() + { + } + + private Factory() + { + } + + public static Factory Instance + { + get + { + return instance; + } + } + + public Informer createInformer(Scope scope) { + return new Informer(scope, + new OutConnector( + new BusClientConnection(host, port), + DefaultConverterRepository.Instance.InformerConverterSelector)); + } + + public Informer createInformer(string scope) { + return createInformer(new Scope(scope)); + } + + public Listener createListener(Scope scope) + { + return new Listener( + new InPushConnector( + new BusClientConnection(host, port), + scope, + DefaultConverterRepository.Instance.ListenerConverterSelector + )); + } + + public Listener createListener(string scope) { + return createListener(new Scope(scope)); + } + + } +} diff --git a/rsb-cil/rsb-cil.csproj b/rsb-cil/rsb-cil.csproj index 3f2a617..1e2ed2f 100644 --- a/rsb-cil/rsb-cil.csproj +++ b/rsb-cil/rsb-cil.csproj @@ -50,6 +50,7 @@ + -- 2.14.2.windows.1