private Socket GetServerSocket(Socket client) { TrackInfo track = Banshee.ServiceStack.ServiceManager.PlayerEngine.CurrentTrack; if (track == null) { return(null); } Socket stream_socket = new Socket(AddressFamily.Unix, SocketType.Stream, ProtocolType.IP); Contact contact = ContactTrackInfo.From(track).Contact; if (contact != null) { DispatchManager dm = contact.DispatchManager; StreamActivity activity = dm.Get <StreamActivity> (contact, StreamingServer.ServiceName); if (activity != null) { stream_socket.Connect(new UnixEndPoint(activity.Address)); } } return(stream_socket); }
protected override void ProcessNewChannel(string object_path, uint initiator_handle, uint target_handle, ChannelDetails c) { string service_name = (string)c.Properties[Constants.CHANNEL_TYPE_STREAMTUBE + ".Service"]; Contact contact = Connection.Roster.GetContact(target_handle); StreamTubeChannel tube = null; Activity activity = null; try { tube = new StreamTubeChannel(this.Connection, object_path, initiator_handle, target_handle, service_name); if (initiator_handle == Connection.SelfHandle) { tube.ServerAddress = Connection.SupportedChannels.GetChannelInfo <StreamTubeChannelInfo> (service_name).Address; activity = new StreamActivityListener(contact, tube); } else { activity = new StreamActivity(contact, tube); } if (activity != null) { DispatchManager dm = Connection.DispatchManager; dm.Add(contact, activity.Service, activity); } } catch (Exception e) { Console.WriteLine(e.ToString()); if (activity != null) { activity.Dispose(); } else if (tube != null) { tube.Dispose(); } } }
public async Task UpdateChannelState(string channel, StreamActivity activity) { await Clients.All.SendAsync("UpdateChannelState", channel, activity); }