public void Record(MessageRecord record) { if (record == null) { return; } if (_all.Contains(record)) { return; } _all.Add(record); // Important, don't override what's already there if (record.Node.IsEmpty()) { record.Node = _graph.NodeId; } // Letting the remote AppDomain's know about it. GlobalMessageTracking.SendMessage(record); var history = _histories[record.Id]; history.Record(record); if (record.ParentId.IsNotEmpty() && record.ParentId != Guid.Empty.ToString()) { var parent = _histories[record.ParentId]; parent.AddChild(history); // this is idempotent, so we're all good } }
public static void Record(MessageTrack track) { _lock.Write(() => { Debug.WriteLine("Track: " + track); if (track.Status == MessageTrack.Sent) { _sent.Add(track); _outstanding.Add(track); } else { _received.Add(track); _outstanding.Remove(track); } }); _lock.Read(() => { if (!_outstanding.Any()) { GlobalMessageTracking.SendMessage(new AllMessagesComplete()); } return(true); }); }
public void StartUp() { try { _server = _registry.ToRuntime(); GlobalMessageTracking.SendMessage(new ApplicationStarted { ApplicationName = _registry.GetType().Name, HomeAddress = _server.BaseAddress, Timestamp = DateTime.Now, Watcher = _server.Get <AssetSettings>().CreateFileWatcherManifest(_server.Files) }); } catch (HostingFailedException e) { GlobalMessageTracking.SendMessage(new InvalidApplication { ExceptionText = e.Message, Message = "Access denied." }); } catch (Exception e) { GlobalMessageTracking.SendMessage(new InvalidApplication { ExceptionText = e.ToString(), Message = "Bootstrapping {0} Failed!".ToFormat(_registry.GetType().Name) }); } }
public void Shutdown() { GlobalMessageTracking.Stop(); if (_shutdown != null) { _shutdown.Dispose(); } }
public void Receive(RemoteGo message) { Task.Factory.StartNew(() => { Thread.Sleep(500); GlobalMessageTracking.ReceivedMessage(message); }); }
public void SetUp() { theListener = new RecordingListener(); var hub = new MessagingHub(); hub.AddListener(theListener); var remoteListener = new RemoteListener(hub); GlobalMessageTracking.Start(remoteListener); }
public IDisposable Load(Dictionary <string, string> properties) { //ObjectFactory.Initialize(x => x.AddRegistry<SampleRegistry>()); GlobalMessageTracking.SendMessage(new ServiceStarted { ActivatorTypeName = typeof(SampleService).AssemblyQualifiedName }); GlobalMessageTracking.SendMessage(new ServiceStarted { ActivatorTypeName = typeof(RemoteService).AssemblyQualifiedName }); return(this); }
public void send_message_by_category() { GlobalMessageTracking.SendMessage("category1", "some message"); var expected = new ServiceMessage { Category = "category1", Message = "some message" }; Wait.Until(() => theListener.Received.Contains(expected)); theListener.Received.OfType <ServiceMessage>().Single() .ShouldBe(expected); }
public void coordinate_message_history_via_remote_service() { using (var runner = RemoteServiceRunner.For <SampleBootstrapper>()) { runner.WaitForServiceToStart <SampleService.SampleService>(); runner.WaitForServiceToStart <SampleService.RemoteService>(); MessageHistory.ConnectRemoteListeners(runner); var foo = new Foo(); GlobalMessageTracking.SentMessage(foo); GlobalMessageTracking.Messaging.WaitForMessage <AllMessagesComplete>(() => runner.SendRemotely(foo), 60000) .ShouldNotBeNull(); } }
public void Start(string bootstrapperName, Dictionary <string, string> properties, MarshalByRefObject remoteListener) { AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; //var domainSetup = AppDomain.CurrentDomain.SetupInformation; // TODO -- what the hell here? This is bad bad bad. //System.Environment.CurrentDirectory = domainSetup.ApplicationBase; // TODO -- need to handle exceptions gracefully here GlobalMessageTracking.Start((IRemoteListener)remoteListener); var loader = ApplicationLoaderFinder.FindLoader(bootstrapperName); _shutdown = loader.Load(properties); GlobalMessageTracking.SendMessage(new LoaderStarted { LoaderTypeName = _shutdown.GetType().FullName }); }
public void Send <T>(T message) { GlobalMessageTracking.SendMessage(message); }
public void Receive(TestSignal message) { GlobalMessageTracking.SendMessage(new TestResponse { Number = message.Number }); }
public void Teardown() { GlobalMessageTracking.Stop(); }