Commit 7142a80
Changed files (6)
product
client
presentation.windows
bootstrappers
presentation.windows.common
presentation.windows.server
product/client/presentation.windows/bootstrappers/Bootstrapper.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Net;
using System.Threading;
using System.Windows.Threading;
using Autofac.Builder;
@@ -15,6 +16,7 @@ using presentation.windows.presenters;
using presentation.windows.queries;
using presentation.windows.service.infrastructure;
using presentation.windows.views;
+using Rhino.Queues;
namespace presentation.windows.bootstrappers
{
@@ -36,8 +38,11 @@ namespace presentation.windows.bootstrappers
// infrastructure
builder.Register<Log4NetLogFactory>().As<LogFactory>().SingletonScoped();
builder.Register<DefaultMapper>().As<Mapper>().SingletonScoped();
- builder.Register(x => new RhinoPublisher(23456, "server", "client_sender.esent", 2201)).As<ServiceBus>().SingletonScoped();
- builder.Register(x => new RhinoReceiver(23457, "client", "client_receiver.esent")).As<RhinoReceiver>().As<Receiver>().SingletonScoped();
+
+ var manager = new QueueManager(new IPEndPoint(IPAddress.Loopback, 2201),"client.esent");
+ manager.CreateQueues("client");
+ builder.Register(x => new RhinoPublisher("server", 2200, manager)).As<ServiceBus>().SingletonScoped();
+ builder.Register(x => new RhinoReceiver(manager.GetQueue("client"))).As<RhinoReceiver>().As<Receiver>().SingletonScoped();
// presentation infrastructure
SynchronizationContext.SetSynchronizationContext(new DispatcherSynchronizationContext());
product/client/presentation.windows/bootstrappers/StartServiceBus.cs
@@ -1,4 +1,5 @@
using System;
+using System.Threading;
using Gorilla.Commons.Infrastructure.Container;
using presentation.windows.common;
using presentation.windows.common.messages;
@@ -11,9 +12,9 @@ namespace presentation.windows.bootstrappers
{
var receiver = Resolve.the<RhinoReceiver>();
receiver.register(x => Console.Out.WriteLine(x));
- receiver.run();
+ ThreadPool.QueueUserWorkItem(x => receiver.run());
- //Resolve.the<ServiceBus>().publish<StartedApplication>(x => x.message = "client");
+ Resolve.the<ServiceBus>().publish<StartedApplication>(x => x.message = "client");
}
}
}
\ No newline at end of file
product/presentation.windows.common/RhinoPublisher.cs
@@ -1,6 +1,5 @@
using System;
using System.IO;
-using System.Net;
using System.Runtime.Serialization.Formatters.Binary;
using System.Transactions;
using gorilla.commons.utility;
@@ -11,17 +10,15 @@ namespace presentation.windows.common
public class RhinoPublisher : ServiceBus
{
BinaryFormatter formatter = new BinaryFormatter();
- readonly int send_port;
+ readonly int port;
string destination_queue;
- QueueManager sender;
+ IQueueManager sender;
- public RhinoPublisher(int listen_port, string destination_queue, string esent, int send_port)
+ public RhinoPublisher(string destination_queue, int port, IQueueManager manager)
{
- this.send_port = send_port;
+ this.port = port;
this.destination_queue = destination_queue;
-
- if (Directory.Exists(esent)) Directory.Delete(esent, true);
- sender = new QueueManager(new IPEndPoint(IPAddress.Loopback, listen_port), esent);
+ sender = manager;
}
public void publish<T>() where T : new()
@@ -37,7 +34,7 @@ namespace presentation.windows.common
using (var stream = new MemoryStream(buffer))
{
formatter.Serialize(stream, item);
- sender.Send(new Uri("rhino.queues://localhost:{0}/{1}".formatted_using(send_port, destination_queue)), new MessagePayload {Data = buffer});
+ sender.Send(new Uri("rhino.queues://localhost:{0}/{1}".formatted_using(port, destination_queue)), new MessagePayload {Data = buffer});
}
tx.Complete();
}
product/presentation.windows.common/RhinoReceiver.cs
@@ -1,6 +1,4 @@
using System.Collections.Generic;
-using System.IO;
-using System.Net;
using System.Transactions;
using gorilla.commons.utility;
using Rhino.Queues;
@@ -12,17 +10,11 @@ namespace presentation.windows.common
{
bool running = true;
List<Observer<Message>> observers = new List<Observer<Message>>();
- string queue_name;
IQueue queue;
- public RhinoReceiver(int port, string queue_name, string esent_name)
+ public RhinoReceiver(IQueue queue)
{
- this.queue_name = queue_name;
-
- if (Directory.Exists(esent_name)) Directory.Delete(esent_name, true);
- var manager = new QueueManager(new IPEndPoint(IPAddress.Loopback, port), esent_name);
- manager.CreateQueues(this.queue_name);
- queue = manager.GetQueue(this.queue_name);
+ this.queue = queue;
}
public void register(Observer<Message> observer)
product/presentation.windows.server/Bootstrapper.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
+using System.Net;
using Autofac.Builder;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
@@ -19,6 +20,7 @@ using presentation.windows.common;
using presentation.windows.server.orm;
using presentation.windows.server.orm.mappings;
using presentation.windows.server.orm.nhibernate;
+using Rhino.Queues;
using Environment = System.Environment;
using ISessionFactory = NHibernate.ISessionFactory;
@@ -38,8 +40,11 @@ namespace presentation.windows.server
// infrastructure
builder.Register<Log4NetLogFactory>().As<LogFactory>().SingletonScoped();
builder.Register<DefaultMapper>().As<Mapper>().SingletonScoped();
- builder.Register(x => new RhinoPublisher(23457, "client", "server_sender.esent", 23456)).As<ServiceBus>().SingletonScoped();
- builder.Register(x => new RhinoReceiver(23456, "server", "server_receiver.esent")).As<RhinoReceiver>().As<Receiver>().SingletonScoped();
+
+ var manager = new QueueManager(new IPEndPoint(IPAddress.Loopback, 2200),"server.esent");
+ manager.CreateQueues("server");
+ builder.Register(x => new RhinoPublisher("client", 2201, manager)).As<ServiceBus>().SingletonScoped();
+ builder.Register(x => new RhinoReceiver(manager.GetQueue("server"))).As<RhinoReceiver>().As<Receiver>().SingletonScoped();
var session_factory = bootstrap_nhibernate();
builder.Register(x => session_factory).SingletonScoped();
product/presentation.windows.server/StartServiceBus.cs
@@ -1,4 +1,5 @@
using System;
+using System.Threading;
using Gorilla.Commons.Infrastructure.Container;
using presentation.windows.common;
using presentation.windows.common.messages;
@@ -11,8 +12,8 @@ namespace presentation.windows.server
{
var receiver = Resolve.the<RhinoReceiver>();
receiver.register(x => Console.Out.WriteLine(x));
+ ThreadPool.QueueUserWorkItem(x => receiver.run());
Resolve.the<ServiceBus>().publish<StartedApplication>(x => x.message = "server");
- receiver.run();
}
}
}
\ No newline at end of file