Example #1
0
        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();
                }
            }
        }
Example #3
0
 public async Task UpdateChannelState(string channel, StreamActivity activity)
 {
     await Clients.All.SendAsync("UpdateChannelState", channel, activity);
 }