public UdpViewModel()
        {
            _udpClientServer = new UdpClientServer();
            LocalInterfaces  = new ObservableCollection <InterfaceAddress>();

            _sendViewModel.SendData        += OnSend;
            _udpClientServer.StatusChanged +=
                (sender, arg) =>
            {
                IsServerStarted = (arg.ServerStatus == EServerStatus.Started);

                if (IsServerStarted)
                {
                    History.Header = "Listening on: < " + arg.ServerInfo.ToString() + " >";
                }
                else
                {
                    History.Header = "Conversation";
                }
            };

            _udpClientServer.Received +=
                (sender, arg) =>
            {
                History.Append(arg.Message);
            };

            ListenPort     = 0;
            History.Header = "Conversation";
            Send.IpAddress = "localhost";
            Send.Port      = 0;

            RebuildInterfaceList();

            Properties.Settings.Default.PropertyChanged += (sender, e) =>
            {
                if (e.PropertyName == nameof(Properties.Settings.Default.IPv6Support))
                {
                    RebuildInterfaceList();
                }
            };

            NetworkUtils.NetworkInterfaceChange += () =>
            {
                Application.Current.Dispatcher.Invoke(RebuildInterfaceList);
            };
        }
Exemple #2
0
        public static void Main()
        {
            var serverAddress = ConfigurationManager.AppSettings.Get("ServerAddress");
            var serverPort    = int.Parse(ConfigurationManager.AppSettings.Get("ServerPort"));

            var clientAddress = ConfigurationManager.AppSettings.Get("ClientAddress");
            var clientPort    = int.Parse(ConfigurationManager.AppSettings.Get("ClientPort"));

            var cs            = new UdpClientServer();
            var serverChannel = new UdpCommunicationChannel(cs,
                                                            new ChannelConfig {
                Address = serverAddress, Port = serverPort
            });
            var clientChannel = new UdpCommunicationChannel(cs,
                                                            new ChannelConfig {
                Address = clientAddress, Port = clientPort
            });

            _userService   = new GitHubUserSearchService(new HttpClientFactory());
            _githubBrowser = new GithubBrowser(new HttpClientFactory());

            var userListener = new Listener <UserQuery, UserResponse>(clientChannel, serverChannel);

            userListener.ListenObservable(GetUser);

            var repoListener = new Listener <RepoQuery, RepoResponse>(clientChannel, serverChannel);

            repoListener.ListenObservable(GetRepo);

            var favListener = new Listener <FavQuery, FavResponse>(clientChannel, serverChannel);

            favListener.ListenObservable(AddToFav);

            var publisher = new Publisher <RepoNotification>(serverChannel);

            _githubBrowser.NewCommitsFeed
            .Select(c => new RepoNotification {
                Commit = c
            })
            .Subscribe(publisher);

            Console.ReadLine();
        }