예제 #1
0
        public void RegisterMediaServer(IMediaServer server)
        {
            if (server == null)
            {
                throw new ArgumentNullException("server");
            }
            var guid = server.Uuid;

            if (servers.ContainsKey(guid))
            {
                throw new ArgumentException("Attempting to register more than once");
            }

            var end   = listener.LocalEndpoint as IPEndPoint;
            var mount = new MediaMount(server);

            servers[guid] = mount;
            RegisterHandler(mount);

            foreach (var address in IP.ExternalIPAddresses)
            {
                Logger.DebugFormat("Registering device for {0}", address);
                var deviceGuid = Guid.NewGuid();
                var list       = devicesForServers.GetOrAdd(guid, new List <Guid>());
                lock (list) {
                    list.Add(deviceGuid);
                }
                mount.AddDeviceGuid(deviceGuid, address);
                var uri = new Uri(string.Format(
                                      "http://{0}:{1}{2}",
                                      address,
                                      end.Port,
                                      mount.DescriptorURI
                                      ));
                ssdpServer.RegisterNotification(deviceGuid, uri, address);
                Logger.NoticeFormat("New mount at: {0}", uri);
            }
        }
예제 #2
0
        public void RegisterMediaServer(IMediaServer server)
        {
            if (server == null) {
            throw new ArgumentNullException("server");
              }
              var guid = server.Uuid;
              if (servers.ContainsKey(guid)) {
            throw new ArgumentException("Attempting to register more than once");
              }

              var end = listener.LocalEndpoint as IPEndPoint;
              var mount = new MediaMount(server);
              servers[guid] = mount;
              RegisterHandler(mount);

              foreach (var address in IP.ExternalIPAddresses) {
            Logger.DebugFormat("Registering device for {0}", address);
            var deviceGuid = Guid.NewGuid();
            var list = devicesForServers.GetOrAdd(guid, new List<Guid>());
            lock (list) {
              list.Add(deviceGuid);
            }
            mount.AddDeviceGuid(deviceGuid, address);
            var uri = new Uri(string.Format(
              "http://{0}:{1}{2}",
              address,
              end.Port,
              mount.DescriptorURI
              ));
            ssdpServer.RegisterNotification(deviceGuid, uri, address);
            Logger.NoticeFormat("New mount at: {0}", uri);
              }
        }