コード例 #1
0
        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();
        }
コード例 #2
0
        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();
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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();
        }
コード例 #6
0
 public IPCServer()
 {
     handles = new List <ICmdHandler>();
     server  = new IpcServer();
     server.Start();
     server.ReceivedRequest += Server_ReceivedRequest;
 }
コード例 #7
0
        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();
        }
コード例 #8
0
        protected override void OnStart(string[] args)
        {
            IoCRegister.Register();
            var server = new IpcServer <string>("test");

            server.Start <ServerObserver>();
        }
コード例 #9
0
ファイル: App.xaml.cs プロジェクト: tariquememon/SignaShell
        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();
                        }
                    }
                }));
            };
        }
コード例 #10
0
ファイル: Program.cs プロジェクト: adriebaselmans/SimpleIpc
        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();
        }
コード例 #11
0
        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);
        }
コード例 #12
0
ファイル: IpcServer.cs プロジェクト: reyaleman/CSNamedPipes
 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);
 }
コード例 #13
0
        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();
        }
コード例 #14
0
 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);
     }
 }
コード例 #15
0
        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();
        }
コード例 #16
0
        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();
        }
コード例 #17
0
ファイル: Server.cs プロジェクト: ha11owed/RPC
 public void Start()
 {
     lock (sync)
     {
         Stop();
         ipcServer = new IpcServer(token, this, 10);
     }
 }
コード例 #18
0
 public static void Stop()
 {
     if (server != null)
     {
         server.Stop();
         server = null;
     }
 }
コード例 #19
0
 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");
 }
コード例 #20
0
        public static void Dispose()
        {
            try { _server.Dispose(); } catch { /* ignored */ }

            _server      = null;
            _busRegistry = null;
            LoggingManagementService.WriteLine($"{nameof(TransmittingManagementService)} uninitialized", "TsmMgmt");
        }
コード例 #21
0
        public void Setup()
        {
            var endpoint = new TestIpcEndpoint();

            _repositorySource = new Mock <IRepositorySource>();

            _client = new IpcClient(endpoint);
            _server = new IpcServer(endpoint, _repositorySource.Object);
        }
コード例 #22
0
        public ServerView(UIDocument uidoc, ExternalEventHandler eventHandler, ExternalEvent externalEvent)
        {
            _eventHandler  = eventHandler;
            _externalEvent = externalEvent;
            _doc           = uidoc.Document;
            InitializeComponent();

            _server = new IpcServer();
            _server.ReceivedRequest += ServerOnReceivedRequest;
        }
コード例 #23
0
ファイル: Main.cs プロジェクト: PC-Pedia/SecureBox
        public Main()
        {
            var ipc = new IpcServer();

            ipc.ReceivedRequest += IpcOnReceivedRequest;
            ipc.Start(7524);

            _sandboxie = new SandboxieUtils();

            InitializeComponent();
        }
コード例 #24
0
        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);
        }
コード例 #25
0
        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();
        }
コード例 #26
0
ファイル: Server.cs プロジェクト: ha11owed/RPC
        public void Stop()
        {
            lock (sync)
            {
                if (ipcServer != null)
                {
                    ipcServer.IpcServerStop();
                }

                ipcServer = null;
            }
        }
コード例 #27
0
        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();
        }
コード例 #28
0
        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();
        }
コード例 #29
0
        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);
        }
コード例 #30
0
 private static void CloseIpc()
 {
     if (_ipcServer == null)
     {
         return;
     }
     try
     {
         _ipcServer.Close();
     }
     catch (Exception ex)
     {
         ServiceRegistration.Get <ILogger>().Error(ex);
     }
     _ipcServer = null;
 }
コード例 #31
0
        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();
        }
コード例 #32
0
 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);
     }
 }
コード例 #33
0
ファイル: Program.cs プロジェクト: Jupp56/MunchkinBot
        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();
        }
コード例 #34
0
ファイル: Program.cs プロジェクト: adriebaselmans/SimpleIpc
        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();
        }
コード例 #35
0
ファイル: Program.cs プロジェクト: adriebaselmans/SimpleIpc
        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();
        }
コード例 #36
0
        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();
        }
コード例 #37
0
        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();
        }
コード例 #38
0
        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();
        }