soundbeam

Subversion Repositories:
Compare Path: Rev
With Path: Rev
?path1? @ 1  →  ?path2? @ 2
/trunk/SoundBeam/Form1.cs
@@ -59,15 +59,27 @@
 
private static readonly Dictionary<TcpClient, WasapiOut> WasapiOut = new Dictionary<TcpClient, WasapiOut>();
 
private static readonly BindingList<DiscoveredServer> DiscoveredServersBindingList = new BindingList<DiscoveredServer>();
 
private static readonly BindingSource DiscoveredServersBindingSource =
new BindingSource(DiscoveredServersBindingList, null);
 
public Form1()
{
InitializeComponent();
 
// Set the tool strip combo box binding.
sendToolStripComboBox.ComboBox.DisplayMember = "Hostname";
sendToolStripComboBox.ComboBox.ValueMember = "Hostname";
sendToolStripComboBox.ComboBox.DataSource = DiscoveredServersBindingSource;
sendToolStripComboBox.ComboBox.BindingContext = this.BindingContext;
 
// Register local service.
SoundBeamRegisterService.Name = "SoundBeam Audio Sink";
SoundBeamRegisterService.RegType = "_soundbeam._tcp";
SoundBeamRegisterService.Port = 9000;
SoundBeamRegisterService.ReplyDomain = "local";
SoundBeamRegisterService.UPort = 9000;
SoundBeamRegisterService.ReplyDomain = "local.";
 
SoundBeamRegisterService.Response += OnRegisterServiceResponse;
SoundBeamRegisterService.Register();
@@ -74,7 +86,7 @@
 
// Browse for services.
SoundBeamServiceBrowser.ServiceAdded += OnSoundBeamServiceBrowserServiceAdded;
SoundBeamServiceBrowser.Browse(0, AddressProtocol.Any, "_soundbeam._tcp", "local");
SoundBeamServiceBrowser.Browse(0, AddressProtocol.Any, "_soundbeam._tcp", "local.");
}
 
/// <summary>
@@ -107,9 +119,32 @@
 
private void OnSoundBeamServiceBrowserServiceAdded(object o, ServiceBrowseEventArgs args)
{
var a = args.Service.HostTarget;
if (args?.Service == null)
return;
args.Service.Resolved += OnSoundBeamServiceResolved;
args.Service.Resolve();
}
 
private void OnSoundBeamServiceResolved(object o, ServiceResolvedEventArgs args)
{
if (args?.Service == null)
return;
 
args.Service.Resolved -= OnSoundBeamServiceResolved;
 
// Do not add already added servers.
if (DiscoveredServersBindingList.Any(server =>
string.Equals(server.Hostname, args.Service.HostTarget, StringComparison.OrdinalIgnoreCase) &&
server.Port == args.Service.Port))
return;
 
Invoke((Action) (() =>
{
DiscoveredServersBindingList.Add(new DiscoveredServer(args.Service.HostTarget, args.Service.Port));
}));
}
 
private void OnRegisterServiceResponse(object o, RegisterServiceEventArgs args)
{
if (args.IsRegistered)
@@ -149,7 +184,14 @@
 
private void OnQuitToolStripMenuItemClick(object sender, EventArgs e)
{
Dispose(true);
 
Application.Exit();
}
 
private void OnFormLoad(object sender, EventArgs e)
{
 
}
}
}