public void VerifyBasicSendReceive() { var fooStub = new FooStub(); fooStub.ReturnValueOfBar = "Bar"; var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer <IFoo>(fooStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new JsonDotNetSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient <IFoo>(IPAddress.Loopback, 62000, new JsonDotNetSerializer()); object response; ipcClient.Proxy.Foo(); Assert.AreEqual(1, fooStub.NumberOfFooCalls); response = ipcClient.Proxy.Bar(); Assert.AreEqual(fooStub.ReturnValueOfBar, response); Assert.AreEqual(1, fooStub.NumberOfBarCalls); ipcClient.Dispose(); ipcServer.Dispose(); dispatcherThread.Shutdown(); }
private static void Main(string[] args) { var calculatorImp = new CalculatorImp(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var server = new IpcServer <ICalculator>(calculatorImp, dispatcherThread.Dispatcher, IPAddress.Any, 62005, new JsonDotNetSerializer()); server.ClientConnected += OnClientConnected; server.ClientDisconnected += OnClientDisconnected; server.Listen(); var multiCastAddress = IPAddress.Parse("239.0.0.222"); var advertiser = new ServiceAdvertiser <ICalculator>(multiCastAddress, 2222, TimeSpan.FromMilliseconds(1000)); advertiser.OnAdvertisement += dt => Console.WriteLine("[{0}]", dt); Console.ReadLine(); server.ClientDisconnected -= OnClientDisconnected; server.ClientConnected -= OnClientConnected; advertiser.Dispose(); }
public void VerifyBasicSendReceive() { var fooStub = new FooStub(); fooStub.ReturnValueOfBar = "Bar"; var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer<IFoo>(fooStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new JsonDotNetSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient<IFoo>(IPAddress.Loopback, 62000, new JsonDotNetSerializer()); object response; ipcClient.Proxy.Foo(); Assert.AreEqual(1, fooStub.NumberOfFooCalls); response = ipcClient.Proxy.Bar(); Assert.AreEqual(fooStub.ReturnValueOfBar, response); Assert.AreEqual(1, fooStub.NumberOfBarCalls); ipcClient.Dispose(); ipcServer.Dispose(); dispatcherThread.Shutdown(); }
public virtual async Task <Endpoint?> HostEndpointAsync(Type Key) { var ret = default(Endpoint); if (!FactoryCache.ContainsKey(Key)) { var ChildOptions = new Endpoint( Options.Provider, Options.Host, Options.Port, Guid.NewGuid().ToString() ); var Handler = Activator.CreateInstance(Key); if (Handler is { } V1) { var NewProvider = new IpcServer(ChildOptions, V1); var HostingLocation = await NewProvider.StartHostingAsync() .DefaultAwait() ; FactoryCache[Key] = NewProvider; EndpointCache[Key] = HostingLocation; ret = HostingLocation; } } else { ret = EndpointCache[Key]; } return(ret); }
public static void Main(string[] args) { var ipAddress = IPAddress.Loopback; if (args.Length == 1) { ipAddress = IPAddress.Parse(args[0]); } var fileTransferImpl = new FileTransferImp(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var server = new IpcServer <IFileTransfer>(fileTransferImpl, dispatcherThread.Dispatcher, ipAddress, 63000, new JsonDotNetSerializer()); server.ClientConnected += OnClientConnected; server.ClientDisconnected += OnClientDisconnected; server.Listen(); Console.WriteLine("FileTransferServer service running, press any key to exit."); Console.ReadLine(); server.ClientDisconnected -= OnClientDisconnected; server.ClientConnected -= OnClientConnected; server.Dispose(); fileTransferImpl.Dispose(); dispatcherThread.Join(); }
public IPCServer() { handles = new List <ICmdHandler>(); server = new IpcServer(); server.Start(); server.ReceivedRequest += Server_ReceivedRequest; }
public override void DidFinishLaunching(NSNotification notification) { var isRetina = NSScreen.MainScreen.BackingScaleFactor > 1.0; string statusItemImageName = $"StatusBarImage{(isRetina ? "@2x" : "")}.png"; _statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem(NSStatusItemLength.Variable); _statusItem.Image = new NSImage(statusItemImageName); _statusItem.Target = this; _statusItem.Action = new ObjCRuntime.Selector("MenuAction"); var container = TinyIoCContainer.Current; RegisterServices(container); UseRepositoryMonitor(container); _pop = new NSPopover(); _pop.Behavior = NSPopoverBehavior.Transient; _pop.Delegate = this; _pop.ContentViewController = new PopupViewController(); _eventMonitor = NSEvent.AddGlobalMonitorForEventsMatchingMask(NSEventMask.KeyDown, HandleGlobalEventHandler); _updateTimer = new Timer(CheckForUpdatesAsync, null, 5000, Timeout.Infinite); _ipcServer = new IpcServer(new DefaultIpcEndpoint(), this); _ipcServer.Start(); }
protected override void OnStart(string[] args) { IoCRegister.Register(); var server = new IpcServer <string>("test"); server.Start <ServerObserver>(); }
private void Application_Startup(object sender, StartupEventArgs e) { var s = new IpcServer(); s.Start(12345); MainWindow mainWindow = new MainWindow(); mainWindow.Show(); s.ReceivedRequest += (initiator, args) => { Dispatcher.Invoke(new Action(() => { var windowExists = Application.Current.Windows.OfType <Window>().Any(w => w.GetType().FullName == args.Request); if (!windowExists) { var window = (Window)Activator.CreateInstance(Type.GetType(args.Request)); window.Show(); } var windows = Application.Current.Windows.OfType <Window>(); foreach (var window in windows) { if (window.GetType().FullName != args.Request) { window.Close(); } } })); }; }
public static void Main(string[] args) { var ipAddress = IPAddress.Loopback; if (args.Length == 1) { ipAddress = IPAddress.Parse(args[0]); } var fileTransferImpl = new FileTransferImp(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var server = new IpcServer<IFileTransfer>(fileTransferImpl, dispatcherThread.Dispatcher, ipAddress, 63000, new JsonDotNetSerializer()); server.ClientConnected += OnClientConnected; server.ClientDisconnected += OnClientDisconnected; server.Listen(); Console.WriteLine("FileTransferServer service running, press any key to exit."); Console.ReadLine(); server.ClientDisconnected -= OnClientDisconnected; server.ClientConnected -= OnClientConnected; server.Dispose(); fileTransferImpl.Dispose(); dispatcherThread.Join(); }
static void Main(string[] args) { int port = int.Parse(args[0]); string eventHandleName = args[1]; string botToken = args[2]; var eventWaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset, eventHandleName); db = new HaltMalKurzContext(); _server = new IpcServer(); _server.ReceivedRequest += ServerReceivedRequest; _server.Start(port); Bot = new TelegramBotClient(botToken); botUsername = Bot.GetMeAsync().Result.Username; eventWaitHandle.Set(); InitCommands(); stopEvent.WaitOne(); stopping = true; do { Thread.Sleep(500); } while (games.Count > 0); Environment.Exit(0); }
public void Start() { // Create ten instances of listening pipes so that if there are many clients // trying to connect in a short interval (with short timeouts) the clients are // less likely to fail to connect. m_srv = new IpcServer("ExamplePipeName", this, 10); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // Ensure the current culture passed into bindings is the OS culture. // By default, WPF uses en-US as the culture, regardless of the system settings. // see: https://stackoverflow.com/a/520334/704281 FrameworkElement.LanguageProperty.OverrideMetadata( typeof(FrameworkElement), new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag))); _notifyIcon = (TaskbarIcon)FindResource("NotifyIcon"); var container = TinyIoCContainer.Current; RegisterServices(container); UseRepositoryMonitor(container); UseExplorerHandler(container); _updateTimer = new Timer(async state => await CheckForUpdatesAsync(), null, 5000, Timeout.Infinite); // We noticed that the hotkey registration causes a high CPU utilization if the window was not shown before. // To fix this, we need to make the window visible in EnsureWindowHandle() but we set the opacity to 0.0 to prevent flickering var window = container.Resolve <MainWindow>(); EnsureWindowHandle(window); _hotkey = new HotKey(47110815); _hotkey.Register(window, HotKey.VK_R, HotKey.MOD_ALT | HotKey.MOD_CTRL, OnHotKeyPressed); _ipcServer = new IpcServer(new DefaultIpcEndpoint(), this); _ipcServer.Start(); }
private static void InitIpc() { if (_ipcServer != null) { return; } ServiceRegistration.Get <ILogger>().Debug("Initializing IPC"); try { _ipcServer = new IpcServer("ClientLauncher"); _ipcServer.CustomShutdownCallback = () => { if (_systemNotificationAreaIcon != null) { _systemNotificationAreaIcon.Visible = false; _systemNotificationAreaIcon = null; } Application.Exit(); return(true); }; _ipcServer.Open(); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error(ex); } }
public void VerifyCanPerformFunctionCallAfterBulk() { int numberKiloBytes = 1024 * 1024 * 1; var buffer = new byte[numberKiloBytes]; for (int i = 0; i < numberKiloBytes; ++i) { buffer[i] = (byte)(i % 2); } var bulkDataStub = new BulkDataStub(buffer); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer <IBulkData>(bulkDataStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new MsDataContractJsonSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient <IBulkData>(IPAddress.Loopback, 62000, new MsDataContractJsonSerializer()); ipcClient.Proxy.GetBulkyData(); var fooResult = ipcClient.Proxy.Foo(); Assert.AreEqual("Bar", fooResult); ipcClient.Dispose(); ipcServer.Dispose(); bulkDataStub.Dispose(); dispatcherThread.Shutdown(); }
public override void DidFinishLaunching(NSNotification notification) { var isRetina = NSScreen.MainScreen.BackingScaleFactor > 1.0; var isBigSurOrNewer = NSProcessInfo.ProcessInfo.IsOperatingSystemAtLeastVersion(new NSOperatingSystemVersion(11, 0, 0)); string statusItemImageName = $"StatusBarImage{(isBigSurOrNewer ? "Template" : "")}{(isRetina ? "@2x" : "")}.png"; _statusItem = NSStatusBar.SystemStatusBar.CreateStatusItem(NSStatusItemLength.Variable); _statusItem.Image = new NSImage(statusItemImageName) { Template = isBigSurOrNewer }; // defining as template will make the icon work in light/dark mode and reduced transparency (see #137) _statusItem.Target = this; _statusItem.Action = new ObjCRuntime.Selector("MenuAction"); var container = TinyIoCContainer.Current; RegisterServices(container); UseRepositoryMonitor(container); _pop = new NSPopover(); _pop.Behavior = NSPopoverBehavior.Transient; _pop.Delegate = this; _pop.ContentViewController = new PopupViewController(); _eventMonitor = NSEvent.AddGlobalMonitorForEventsMatchingMask(NSEventMask.KeyDown, HandleGlobalEventHandler); _updateTimer = new Timer(CheckForUpdatesAsync, null, 5000, Timeout.Infinite); _ipcServer = new IpcServer(new DefaultIpcEndpoint(), this); _ipcServer.Start(); }
public void Start() { lock (sync) { Stop(); ipcServer = new IpcServer(token, this, 10); } }
public static void Stop() { if (server != null) { server.Stop(); server = null; } }
public static void Initialize() { _busRegistry = new Dictionary <int, int>(); _server = new IpcServer(); _server.OnDataOutput += (x, y) => OnDataOutput?.Invoke(_busRegistry[x], y); _server.OnSignalOutput += NotificationListener; LoggingManagementService.WriteLine($"{nameof(TransmittingManagementService)} initialized", "TsmMgmt"); }
public static void Dispose() { try { _server.Dispose(); } catch { /* ignored */ } _server = null; _busRegistry = null; LoggingManagementService.WriteLine($"{nameof(TransmittingManagementService)} uninitialized", "TsmMgmt"); }
public void Setup() { var endpoint = new TestIpcEndpoint(); _repositorySource = new Mock <IRepositorySource>(); _client = new IpcClient(endpoint); _server = new IpcServer(endpoint, _repositorySource.Object); }
public ServerView(UIDocument uidoc, ExternalEventHandler eventHandler, ExternalEvent externalEvent) { _eventHandler = eventHandler; _externalEvent = externalEvent; _doc = uidoc.Document; InitializeComponent(); _server = new IpcServer(); _server.ReceivedRequest += ServerOnReceivedRequest; }
public Main() { var ipc = new IpcServer(); ipc.ReceivedRequest += IpcOnReceivedRequest; ipc.Start(7524); _sandboxie = new SandboxieUtils(); InitializeComponent(); }
public static IpcServer Create(OutOfProcessServerOptions Options, OutOfProcessFactory?Factory = default) { var EP = Options.ToEndpoint(); var Server = new IpcServer(EP); var Handler = new OutOfProcessController(Server, Options, Factory); Server.Handler = Handler; return(Server); }
public async Task SelfHostingAsync() { var Endpoint = new Endpoint(ProtocolProvider.Default, Guid.NewGuid().ToString(), Guid.NewGuid().ToString(), Guid.NewGuid().ToString()); var Server = new IpcServer(Endpoint, new RemoteObject()); await Server.StartHostingAsync(); var Provider = new NamedPipeProtocolProvider(); var Client = await Provider.ConnectAsync <IRemoteObject>(Endpoint); await Client.HostingProcessIdAsync(); }
public void Stop() { lock (sync) { if (ipcServer != null) { ipcServer.IpcServerStop(); } ipcServer = null; } }
public void VerifyPerformance() { var fooStub = new FooStub(); fooStub.ReturnValueOfBar = "Bar"; var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer <IFoo>(fooStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new JsonDotNetSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient <IFoo>(IPAddress.Loopback, 62000, new JsonDotNetSerializer()); var numberOfCalls = 1000; var nanoSecs = Performance.MeasureMs(() => { for (var i = 0; i < numberOfCalls; i++) { ipcClient.Proxy.Foo(); } }); var fooAverageMs = nanoSecs / numberOfCalls; Console.WriteLine("Foo call took: {0}ms", fooAverageMs); Assert.AreEqual(numberOfCalls, fooStub.NumberOfFooCalls); Assert.LessOrEqual(TimeSpan.FromMilliseconds(fooAverageMs), TimeSpan.FromMilliseconds(10)); nanoSecs = Performance.MeasureMs(() => { for (var i = 0; i < numberOfCalls; i++) { ipcClient.Proxy.Bar(); } }); var barAverageMs = nanoSecs / numberOfCalls; Console.WriteLine("Bar call took: {0}ms", barAverageMs); Assert.AreEqual(numberOfCalls, fooStub.NumberOfBarCalls); Assert.LessOrEqual(TimeSpan.FromMilliseconds(barAverageMs), TimeSpan.FromMilliseconds(10)); ipcClient.Dispose(); ipcServer.Dispose(); dispatcherThread.Shutdown(); }
static void Main() { Console.SetWindowSize(60, 10); //Settings for single instance app start const string appName = "admy_server"; bool createdNew; mutex = new Mutex(true, appName, out createdNew); if (!createdNew) { //app is already running! Exiting the application return; } //Settings for single instance app end var s = new IpcServer(); s.Start(12345); // Passing no port selects a free port automatically. Console.WriteLine("Started server on port {0}, input \"quit\" to exit", s.Port); s.ReceivedRequest += (sender, args) => { args.Response = args.Request; Console.WriteLine("I've got: " + args.Response); try { Process.Start(args.Response); } catch (Exception e) { Console.WriteLine(e.Message); } args.Handled = true; }; bool stay = true; string command; while (stay) { command = Console.ReadLine(); if (command == "quit") { stay = false; } } s.Stop(); }
IpcServer StartServer() { IpcServer s = new IpcServer(); s.Start(8089); // Passing no port selects a free port automatically. Console.WriteLine("Started server on port {0}.", s.Port); s.ReceivedRequest += (sender, args) => { args.Response = "I've got: " + args.Request; args.Handled = true; }; return(s); }
private static void CloseIpc() { if (_ipcServer == null) { return; } try { _ipcServer.Close(); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error(ex); } _ipcServer = null; }
public void VerifyPerformance() { var fooStub = new FooStub(); fooStub.ReturnValueOfBar = "Bar"; var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer<IFoo>(fooStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new JsonDotNetSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient<IFoo>(IPAddress.Loopback, 62000, new JsonDotNetSerializer()); var numberOfCalls = 1000; var nanoSecs = Performance.MeasureMs(() => { for (var i = 0; i < numberOfCalls; i++) { ipcClient.Proxy.Foo(); } }); var fooAverageMs = nanoSecs/numberOfCalls; Console.WriteLine("Foo call took: {0}ms", fooAverageMs); Assert.AreEqual(numberOfCalls, fooStub.NumberOfFooCalls); Assert.LessOrEqual(TimeSpan.FromMilliseconds(fooAverageMs), TimeSpan.FromMilliseconds(10)); nanoSecs = Performance.MeasureMs(() => { for (var i = 0; i < numberOfCalls; i++) { ipcClient.Proxy.Bar(); } }); var barAverageMs = nanoSecs/numberOfCalls; Console.WriteLine("Bar call took: {0}ms", barAverageMs); Assert.AreEqual(numberOfCalls, fooStub.NumberOfBarCalls); Assert.LessOrEqual(TimeSpan.FromMilliseconds(barAverageMs), TimeSpan.FromMilliseconds(10)); ipcClient.Dispose(); ipcServer.Dispose(); dispatcherThread.Shutdown(); }
private void InitIpc() { if (_ipcServer != null) { return; } ServiceRegistration.Get <ILogger>().Debug("Initializing IPC"); try { if (_windowsService == null) { _ipcServer = new IpcServer("ServerConsole"); _ipcServer.CustomShutdownCallback = () => { Application.Exit(); return(true); }; } else { _ipcServer = new IpcServer("ServerService"); _ipcServer.CustomShutdownCallback = () => { // invoke service shutdown asynchronous with a little delay ThreadPool.QueueUserWorkItem(_ => { Thread.Sleep(500); try { _windowsService.Stop(); } catch { // ignored } }); return(true); }; } _ipcServer.Open(); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error(ex); } }
static void Main(string[] args) { if (args.Length != 3) { Console.WriteLine("Irgendwie hast du einen Riesenfehler beim Starten des Bots gemacht. Breche ab..."); Environment.Exit(-1); } Console.WriteLine("Munchkin Bot v. (alpha) 0.0.1 \n@Author: Olfi01 und SAvB\n\nNur zur privaten Verwendung! Munchkin: (c) Steve Jackson Games 2001 und Pegasus Spiele 2003 für die deutsche Übersetzung.\nAlle Rechte bleiben bei den entsprechenden Eigentümern\n"); Console.WriteLine("<Bot startet...>\n"); int port = int.Parse(args[0]); string eventHandleName = args[1]; string botToken = args[2]; var eventWaitHandle = new EventWaitHandle(false, EventResetMode.ManualReset, eventHandleName); _server = new IpcServer(); _server.ReceivedRequest += ServerReceivedRequest; _server.Start(port); try { Bot = new TelegramBotClient(botToken); } catch { Console.WriteLine("Dein Token scheint nicht zu stimmen."); Environment.Exit(-1); } try { botUsername = Bot.GetMeAsync().Result.Username; } catch { Console.WriteLine("Konnte keine Verbindung zu den Telegram-Servern herstellen."); Environment.Exit(-1); } eventWaitHandle.Set(); InitCommands(); Console.WriteLine("<Bot gestartet!>\n"); stopEvent.WaitOne(); StopBot(); }
public static void Main(string[] args) { var calculatorImp = new CalculatorImp(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var server = new IpcServer<ICalculator>(calculatorImp, dispatcherThread.Dispatcher, IPAddress.Loopback, 62001, new JsonDotNetSerializer()); server.ClientConnected += OnClientConnected; server.ClientDisconnected += OnClientDisconnected; server.Listen(); Console.WriteLine("Calculator service running, press any key to exit."); Console.ReadLine(); server.ClientDisconnected -= OnClientDisconnected; server.ClientConnected -= OnClientConnected; server.Dispose(); dispatcherThread.Shutdown(); }
private static void Main(string[] args) { var calculatorImp = new CalculatorImp(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var server = new IpcServer<ICalculator>(calculatorImp, dispatcherThread.Dispatcher, IPAddress.Any, 62005, new JsonDotNetSerializer()); server.ClientConnected += OnClientConnected; server.ClientDisconnected += OnClientDisconnected; server.Listen(); var multiCastAddress = IPAddress.Parse("239.0.0.222"); var advertiser = new ServiceAdvertiser<ICalculator>(multiCastAddress, 2222, TimeSpan.FromMilliseconds(1000)); advertiser.OnAdvertisement += dt => Console.WriteLine("[{0}]", dt); Console.ReadLine(); server.ClientDisconnected -= OnClientDisconnected; server.ClientConnected -= OnClientConnected; advertiser.Dispose(); }
public void VerifyBulkyData_using_Json_dot_NET_serializer(int mb) { int numberKiloBytes = 1024 * 1024 * mb; var buffer = new byte[numberKiloBytes]; for (int i = 0; i < numberKiloBytes; ++i) { buffer[i] = (byte)(i % 2); } var bulkDataStub = new BulkDataStub(buffer); var bulkDataHash = ComputeHash(bulkDataStub.GetBulkyData()); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer<IBulkData>(bulkDataStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new JsonDotNetSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient<IBulkData>(IPAddress.Loopback, 62000, new JsonDotNetSerializer()); Stream receivingStream = null; double ms = Performance.MeasureMs(() => { receivingStream = ipcClient.Proxy.GetBulkyData(); }); var receivingHash = ComputeHash(receivingStream); Assert.That(receivingHash, Is.EqualTo(bulkDataHash)); Console.WriteLine("Sending of {0}MB took {1}ms", mb, ms); ipcClient.Dispose(); ipcServer.Dispose(); bulkDataStub.Dispose(); receivingStream.Dispose(); dispatcherThread.Shutdown(); }
public void VerifyServerExceptionsAreForwardedToClientAndServerRemainsAlive() { var fooStub = new FooStubThrowsException(); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer<IFoo>(fooStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new JsonDotNetSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient<IFoo>(IPAddress.Loopback, 62000, new JsonDotNetSerializer()); var caughtException = false; try { ipcClient.Proxy.Foo(); } catch (Exception) { caughtException = true; } Assert.IsTrue(caughtException); //See if server survives failed method call ipcClient.Proxy.Bar(); Assert.IsTrue(fooStub.NumberOfBarCalls == 1); ipcClient.Dispose(); ipcServer.Dispose(); dispatcherThread.Shutdown(); }
public void VerifyCanPerformFunctionCallAfterBulk() { int numberKiloBytes = 1024 * 1024 * 1; var buffer = new byte[numberKiloBytes]; for (int i = 0; i < numberKiloBytes; ++i) { buffer[i] = (byte)(i % 2); } var bulkDataStub = new BulkDataStub(buffer); var dispatcherThread = new DispatcherThread(Dispatcher.Run); dispatcherThread.Start(); var ipcServer = new IpcServer<IBulkData>(bulkDataStub, dispatcherThread.Dispatcher, IPAddress.Loopback, 62000, new MsDataContractJsonSerializer()); ipcServer.Listen(); var ipcClient = new IpcClient<IBulkData>(IPAddress.Loopback, 62000, new MsDataContractJsonSerializer()); ipcClient.Proxy.GetBulkyData(); var fooResult = ipcClient.Proxy.Foo(); Assert.AreEqual("Bar", fooResult); ipcClient.Dispose(); ipcServer.Dispose(); bulkDataStub.Dispose(); dispatcherThread.Shutdown(); }