Exemplo n.º 1
0
        void ClientServiceEvent(Mono.Ssdp.ServiceArgs args,
                                Action <DeviceAnnouncement> deviceHandler,
                                Action <ServiceAnnouncement> serviceHandler)
        {
            if (!args.Usn.StartsWith("uuid:"))
            {
                return;
            }

            var colon = args.Usn.IndexOf(':', 5);
            var usn   = colon == -1 ? args.Usn : args.Usn.Substring(0, colon);

            if (args.Usn.Contains(":device:"))
            {
                var type   = DeviceType.Parse(args.Service.ServiceType);
                var device = new DeviceAnnouncement(this, type, usn, args.Service.Locations);
                deviceHandler(device);
            }
            else if (args.Usn.Contains(":service:"))
            {
                var type    = ServiceType.Parse(args.Service.ServiceType);
                var service = new ServiceAnnouncement(this, type, usn, args.Service.Locations);
                serviceHandler(service);
            }
        }
Exemplo n.º 2
0
 void ClientServiceAdded(object sender, Mono.Ssdp.ServiceArgs args)
 {
     ClientServiceEvent(args,
                        (device) => {
         if (!devices.ContainsKey(device))
         {
             OnDeviceAdded(new DeviceEventArgs(device, UpnpOperation.Added));
             devices.Add(device, device);
         }
     },
                        (service) => {
         if (!services.ContainsKey(service))
         {
             OnServiceAdded(new ServiceEventArgs(service, UpnpOperation.Added));
             services.Add(service, service);
         }
     }
                        );
 }
Exemplo n.º 3
0
 void ClientServiceRemoved(object sender, Mono.Ssdp.ServiceArgs args)
 {
     ClientServiceEvent(args,
                        (device) => {
         if (devices.ContainsKey(device))
         {
             device.Dispose();
             OnDeviceRemoved(new DeviceEventArgs(device, UpnpOperation.Removed));
             devices.Remove(device);
         }
     },
                        (service) => {
         if (services.ContainsKey(service))
         {
             service.Dispose();
             OnServiceRemoved(new ServiceEventArgs(service, UpnpOperation.Removed));
             services.Remove(service);
         }
     }
                        );
 }
Exemplo n.º 4
0
        private static void OnServiceOperation(object o, ServiceArgs args)
        {
            string action = null;
            switch (args.Operation) {
                case ServiceOperation.Added:   action = "ADDED  "; break;
                case ServiceOperation.Updated: action = "UPDATED"; break;
                case ServiceOperation.Removed: action = "REMOVED"; break;
            }

            Console.WriteLine ("{0}: [{1}] {2}", action, DateTime.Now, args.Usn);

            if (verbose && args.Operation != ServiceOperation.Removed) {
                Console.WriteLine ("    Search Type     : {0}", args.Service.ServiceType);
                Console.WriteLine ("    Expiration      : {0}", args.Service.Expiration);
                Console.WriteLine ("    Locations ({0}) :", args.Service.LocationCount);
                foreach (string location in args.Service.Locations) {
                    Console.WriteLine ("        {0}", location);
                }
                Console.WriteLine ();
            }
        }