public static void RegisterTypes(IUnityContainer container) { var hierarchy = (Hierarchy)LogManager.GetRepository(); hierarchy.Root.RemoveAllAppenders(); hierarchy.Root.Level = Level.Debug; hierarchy.RaiseConfigurationChanged(EventArgs.Empty); FileAppender fileAppender = new RollingFileAppender(); fileAppender.AppendToFile = true; fileAppender.LockingModel = new FileAppender.MinimalLock(); fileAppender.File = HttpContext.Current.Server.MapPath("~/TestHarness2.log.txt"); var patternLayout = new PatternLayout { ConversionPattern = "%d [%2%t] %-5p [%-10c] %m%n%n" }; patternLayout.ActivateOptions(); fileAppender.Layout = patternLayout; fileAppender.ActivateOptions(); BasicConfigurator.Configure(fileAppender); var logger = LogManager.GetLogger(typeof(IServiceBus)); container.RegisterInstance<ILog>(logger, new ContainerControlledLifetimeManager()); container.RegisterType<IQueueManager, FtpQueueManager>(new ContainerControlledLifetimeManager()); container.RegisterType<SharedMessageHandler>(); var messageDictionary = new MessageTypeDictionary { { ServiceBus.Messaging.MessageExtensions.MessageTypeSignature<SharedMessage>(), typeof(SharedMessage) }, { ServiceBus.Messaging.MessageExtensions.MessageTypeSignature<NonSharedMessage>(), typeof(NonSharedMessage) }, { ServiceBus.Messaging.MessageExtensions.MessageTypeSignature<SharedEvent>(), typeof(SharedEvent) } }; container.RegisterInstance<IMessageSerialiser>(new JsonMessageSerialiser(messageDictionary), new ContainerControlledLifetimeManager()); var ftpClient = new FtpQueueClient(); ftpClient.ConnectAsync(new Uri("ftp://ftp.jdibble.co.uk/site1/Personal/service-bus-ftp2/queue"), new NetworkCredential("jdibble-001", "jli798ik")).Wait(); container.RegisterInstance<IFtpQueueClient>(ftpClient, new ContainerControlledLifetimeManager()); var serviceBus = ServiceBusBuilder.Configure() .WithLogger(container.Resolve<ILog>()) .WithHostAddress(new Uri("http://servicebus-ftp2.jdibble.co.uk")) .WithHttpTransport(container.Resolve<IMessageSerialiser>()) .AsMvcServiceBus(RouteTable.Routes, container.Resolve<IQueueManager>()) .Build() .WithMessageHandler(container.Resolve<SharedMessageHandler>()) .Subscribe(container.Resolve<SharedEventHandler>()) .WithPeerAsync(new Peer(new Uri("http://servicebus-ftp.jdibble.co.uk"))).Result; serviceBus.WithPeerAsync(new Peer(new Uri("http://servicebus.jdibble.co.uk"))); serviceBus.WithPeerAsync(new Peer(new Uri("http://servicebus2.jdibble.co.uk"))); container.RegisterInstance(serviceBus, new ContainerControlledLifetimeManager()); container.RegisterType<ServiceBusHub>(new ContainerControlledLifetimeManager()); }
public void TestSetup() { this._messageTypeDictionary = new MessageTypeDictionary { { MessageExtensions .MessageTypeSignature <DummyMessage>(), typeof(DummyMessage) }, { MessageExtensions .MessageTypeSignature <DummyEvent>(), typeof(DummyEvent) } }; }
public void TestSetup() { this._messageTypeDictionary = new MessageTypeDictionary { { MessageExtensions .MessageTypeSignature<DummyMessage>(), typeof(DummyMessage) }, { MessageExtensions .MessageTypeSignature<DummyEvent>(), typeof(DummyEvent) } }; }
/// <summary> /// Get dictionary map of message Guids to model Types /// </summary> /// <param name="reload"></param> /// <returns></returns> public static Dictionary <Guid, Type> GetMessageTypeDictionary(bool reload = false) { if (MessageTypeDictionary == null || MessageTypeDictionary.Count() == 0 || reload == true) { MessageTypeDictionary = new Dictionary <Guid, Type>(); var interfaceType = typeof(IMessage); try { var assemblyTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(x => x.GetTypes()) .ToList(); assemblyTypes? // Required because of UWP 'release' build runtime error when traversing GetAssemblies() //.Where(x => interfaceType.IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract) //.ToList() .ForEach(x => { try { // Required because of UWP 'release' build runtime error when traversing GetAssemblies() if (typeof(Message).IsAssignableFrom(x) && !x.IsInterface && !x.IsAbstract) { var instance = (IMessage)Activator.CreateInstance(x); var messageId = instance.GetMessageId(); if (messageId != Guid.Empty) { MessageTypeDictionary.Add(instance.GetMessageId(), x); } } } catch (Exception) { // Required because of UWP 'release' build runtime error when traversing GetAssemblies() GuidDictionaryErrors.Add($"{x.FullName}"); } }); } catch (Exception e) { throw new BotMessageException($"Unable to register message definitions", e); } } return(MessageTypeDictionary); }
static void Main(string[] args) { var tcpEndPoint = new IPEndPoint(IPAddress.Loopback, 5060); var udpEndPoint = new IPEndPoint(IPAddress.Loopback, 5061); var typeDict = new MessageTypeDictionary(); var host = new Host(tcpEndPoint, udpEndPoint, GetServerRouter(), typeDict); host.Start(); var client = new TcpClient(); client.Connect(new IPEndPoint(IPAddress.Loopback, 5060)); var connection = new Connection(client, GetClientRouter(), typeDict); connection.SendReliable(new HelloMsg() { Hello = "Hello world!", SomeInt1 = 42, SomeFloat = 0.0003f }).Wait(); var resp = connection.SendReliable <HelloMsg>(new HelloMsg() { Hello = "Req msg", SomeInt1 = 0, SomeFloat = 0.0f }).Result; var tcpresp = connection.SendReliable <TcpTestResponse>(new TcpTestRequest() { test = "TCPRequest" }).Result; Console.WriteLine($"Client received: {tcpresp}"); var udpresp = connection.SendReliable <UdpTestResponse>(new UdpTestRequest() { test = "UDPRequest" }).Result; Console.WriteLine($"Client received: {udpresp}"); Console.ReadKey(); }
/// <summary> /// Initialises a new instance of the <see cref="JsonMessageSerialiser"/> class. /// </summary> /// <param name="messageTypeDictionary">Message type to message key mappings.</param> public JsonMessageSerialiser(MessageTypeDictionary messageTypeDictionary) { this._messageTypeDictionary = messageTypeDictionary; }
public static void RegisterTypes(IUnityContainer container) { var hierarchy = (Hierarchy)LogManager.GetRepository(); hierarchy.Root.RemoveAllAppenders(); hierarchy.Root.Level = Level.Debug; hierarchy.RaiseConfigurationChanged(EventArgs.Empty); FileAppender fileAppender = new RollingFileAppender(); fileAppender.AppendToFile = true; fileAppender.LockingModel = new FileAppender.MinimalLock(); fileAppender.File = HttpContext.Current.Server.MapPath("~/TestHarness2.log.txt"); var patternLayout = new PatternLayout { ConversionPattern = "%d [%2%t] %-5p [%-10c] %m%n%n" }; patternLayout.ActivateOptions(); fileAppender.Layout = patternLayout; fileAppender.ActivateOptions(); BasicConfigurator.Configure(fileAppender); var logger = LogManager.GetLogger(typeof(IServiceBus)); container.RegisterInstance <ILog>(logger, new ContainerControlledLifetimeManager()); container.RegisterType <IQueueManager, FtpQueueManager>(new ContainerControlledLifetimeManager()); container.RegisterType <SharedMessageHandler>(); var messageDictionary = new MessageTypeDictionary { { ServiceBus.Messaging.MessageExtensions.MessageTypeSignature <SharedMessage>(), typeof(SharedMessage) }, { ServiceBus.Messaging.MessageExtensions.MessageTypeSignature <NonSharedMessage>(), typeof(NonSharedMessage) }, { ServiceBus.Messaging.MessageExtensions.MessageTypeSignature <SharedEvent>(), typeof(SharedEvent) } }; container.RegisterInstance <IMessageSerialiser>(new JsonMessageSerialiser(messageDictionary), new ContainerControlledLifetimeManager()); var ftpClient = new FtpQueueClient(); ftpClient.ConnectAsync(new Uri("ftp://ftp.jdibble.co.uk/site1/Personal/service-bus-ftp2/queue"), new NetworkCredential("jdibble-001", "jli798ik")).Wait(); container.RegisterInstance <IFtpQueueClient>(ftpClient, new ContainerControlledLifetimeManager()); var serviceBus = ServiceBusBuilder.Configure() .WithLogger(container.Resolve <ILog>()) .WithHostAddress(new Uri("http://servicebus-ftp2.jdibble.co.uk")) .WithHttpTransport(container.Resolve <IMessageSerialiser>()) .AsMvcServiceBus(RouteTable.Routes, container.Resolve <IQueueManager>()) .Build() .WithMessageHandler(container.Resolve <SharedMessageHandler>()) .Subscribe(container.Resolve <SharedEventHandler>()) .WithPeerAsync(new Peer(new Uri("http://servicebus-ftp.jdibble.co.uk"))).Result; serviceBus.WithPeerAsync(new Peer(new Uri("http://servicebus.jdibble.co.uk"))); serviceBus.WithPeerAsync(new Peer(new Uri("http://servicebus2.jdibble.co.uk"))); container.RegisterInstance(serviceBus, new ContainerControlledLifetimeManager()); container.RegisterType <ServiceBusHub>(new ContainerControlledLifetimeManager()); }