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); }; }
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(); }