ssdp 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ssdp.rb +0 -1
- data/lib/ssdp/consumer.rb +13 -14
- data/lib/ssdp/producer.rb +6 -7
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f03eee0dcccb30c07cbfd0c3de98dc9c64cb62a3
         | 
| 4 | 
            +
              data.tar.gz: d09d282461776840021fa715b597d6d584baf08f
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9e918f1d49fa782311a04e99208e83b6708184294d923205f5d944519e7e23a689fcabc6ac7486fa7a423379cffa795c593dd3af0ab06e17bdf70b206483b86a
         | 
| 7 | 
            +
              data.tar.gz: 33b923a275f71806812722350e1d5f25a05a2694fb33e47a26d947c6cd2d93736969f1a00bd65b69b8e406bb5fb33d0427aef2c39d5e8e74b9c05e9d48fb7c66
         | 
    
        data/lib/ssdp.rb
    CHANGED
    
    
    
        data/lib/ssdp/consumer.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ require 'ssdp' | |
| 3 3 |  | 
| 4 4 | 
             
            module SSDP
         | 
| 5 5 | 
             
              class Consumer
         | 
| 6 | 
            -
                def initialize(options | 
| 6 | 
            +
                def initialize(options={})
         | 
| 7 7 | 
             
                  @options = SSDP::DEFAULTS.merge options
         | 
| 8 8 | 
             
                  @search_socket = SSDP.create_broadcaster
         | 
| 9 9 | 
             
                  @watch = {
         | 
| @@ -13,13 +13,13 @@ module SSDP | |
| 13 13 | 
             
                  }
         | 
| 14 14 | 
             
                end
         | 
| 15 15 |  | 
| 16 | 
            -
                def search(options | 
| 16 | 
            +
                def search(options={}, &block)
         | 
| 17 17 | 
             
                  options = @options.merge options
         | 
| 18 18 | 
             
                  options[:callback] ||= block unless block.nil?
         | 
| 19 | 
            -
                  fail  | 
| 20 | 
            -
                  fail  | 
| 21 | 
            -
                  warn  | 
| 22 | 
            -
                  warn  | 
| 19 | 
            +
                  fail 'SSDP consumer async search missing callback.' if (options[:synchronous] == false) && options[:callback].nil?
         | 
| 20 | 
            +
                  fail 'SSDP consumer search accepting multiple responses must specify a timeout value.' if (options[:first_only] == false) && (options[:timeout].to_i < 1)
         | 
| 21 | 
            +
                  warn 'Warning: Calling SSDP search without a service specified.' if options[:service].nil? && (options[:no_warnings] != true)
         | 
| 22 | 
            +
                  warn 'Warning: Calling SSDP search without a timeout value.' if (options[:timeout].to_i < 1) && (options[:no_warnings] != true)
         | 
| 23 23 |  | 
| 24 24 | 
             
                  @search_socket.send compose_search(options), 0, options[:broadcast], options[:port]
         | 
| 25 25 |  | 
| @@ -37,12 +37,12 @@ module SSDP | |
| 37 37 |  | 
| 38 38 | 
             
                def stop_watching_type(type)
         | 
| 39 39 | 
             
                  @watch[:services].delete type
         | 
| 40 | 
            -
                  stop_watch if (@watch[:services].count == 0) &&  | 
| 40 | 
            +
                  stop_watch if (@watch[:services].count == 0) && @watch[:thread]
         | 
| 41 41 | 
             
                end
         | 
| 42 42 |  | 
| 43 43 | 
             
                def stop_watching_all
         | 
| 44 44 | 
             
                  @watch[:services] = {}
         | 
| 45 | 
            -
                  stop_watch if @watch[:thread] | 
| 45 | 
            +
                  stop_watch if @watch[:thread]
         | 
| 46 46 | 
             
                end
         | 
| 47 47 |  | 
| 48 48 | 
             
                private
         | 
| @@ -52,7 +52,7 @@ module SSDP | |
| 52 52 | 
             
                          "Host: #{options[:broadcast]}:#{options[:port]}\n" \
         | 
| 53 53 | 
             
                          "Man: \"ssdp:discover\"\n"
         | 
| 54 54 | 
             
                  query += "ST: #{options[:service]}\n" if options[:service]
         | 
| 55 | 
            -
                  options[:params].each { |key, val| query += "#{key}: #{ | 
| 55 | 
            +
                  options[:params].each { |key, val| query += "#{key}: #{val}\n" } if options[:params]
         | 
| 56 56 | 
             
                  query + "\n"
         | 
| 57 57 | 
             
                end
         | 
| 58 58 |  | 
| @@ -80,7 +80,7 @@ module SSDP | |
| 80 80 | 
             
                    began = Time.now
         | 
| 81 81 | 
             
                    remaining = options[:timeout]
         | 
| 82 82 | 
             
                    while !found && remaining > 0
         | 
| 83 | 
            -
                      ready = IO | 
| 83 | 
            +
                      ready = IO.select [@search_socket], nil, nil, remaining
         | 
| 84 84 | 
             
                      if ready
         | 
| 85 85 | 
             
                        message, producer = @search_socket.recvfrom options[:maxpack]
         | 
| 86 86 | 
             
                        result = process_ssdp_packet message, producer
         | 
| @@ -89,7 +89,7 @@ module SSDP | |
| 89 89 | 
             
                      remaining = options[:timeout] - (Time.now - began).to_i
         | 
| 90 90 | 
             
                    end
         | 
| 91 91 | 
             
                  else
         | 
| 92 | 
            -
                     | 
| 92 | 
            +
                    until found
         | 
| 93 93 | 
             
                      message, producer = @search_socket.recvfrom options[:maxpack]
         | 
| 94 94 | 
             
                      result = process_ssdp_packet message, producer
         | 
| 95 95 | 
             
                      found = options[:filter].nil? ? true : options[:filter].call(result)
         | 
| @@ -109,7 +109,7 @@ module SSDP | |
| 109 109 |  | 
| 110 110 | 
             
                  while remaining > 0
         | 
| 111 111 | 
             
                    start_time = Time.now
         | 
| 112 | 
            -
                    ready = IO | 
| 112 | 
            +
                    ready = IO.select [@search_socket], nil, nil, remaining
         | 
| 113 113 | 
             
                    if ready
         | 
| 114 114 | 
             
                      message, producer = @search_socket.recvfrom options[:maxpack]
         | 
| 115 115 | 
             
                      if options[:filter].nil?
         | 
| @@ -138,7 +138,7 @@ module SSDP | |
| 138 138 | 
             
                  @watch[:socket] = SSDP.create_listener @options
         | 
| 139 139 | 
             
                  @watch[:thread] = Thread.new do
         | 
| 140 140 | 
             
                    begin
         | 
| 141 | 
            -
                       | 
| 141 | 
            +
                      loop do
         | 
| 142 142 | 
             
                        message, producer = @watch[:socket].recvfrom @options[:maxpack]
         | 
| 143 143 | 
             
                        notification = process_ssdp_packet message, producer
         | 
| 144 144 | 
             
                        notification_type = notification[:params]['NT']
         | 
| @@ -154,6 +154,5 @@ module SSDP | |
| 154 154 | 
             
                  @watch[:thread].exit
         | 
| 155 155 | 
             
                  @watch[:thread] = nil
         | 
| 156 156 | 
             
                end
         | 
| 157 | 
            -
             | 
| 158 157 | 
             
              end
         | 
| 159 158 | 
             
            end
         | 
    
        data/lib/ssdp/producer.rb
    CHANGED
    
    | @@ -7,7 +7,7 @@ module SSDP | |
| 7 7 | 
             
                attr_accessor :services
         | 
| 8 8 | 
             
                attr_accessor :uuid
         | 
| 9 9 |  | 
| 10 | 
            -
                def initialize(options | 
| 10 | 
            +
                def initialize(options={})
         | 
| 11 11 | 
             
                  @uuid = SecureRandom.uuid
         | 
| 12 12 | 
             
                  @services = {}
         | 
| 13 13 | 
             
                  @listener = { :socket => nil, :thread => nil }
         | 
| @@ -24,14 +24,14 @@ module SSDP | |
| 24 24 | 
             
                  start_listener if @listener[:thread].nil?
         | 
| 25 25 | 
             
                end
         | 
| 26 26 |  | 
| 27 | 
            -
                def stop(bye_bye | 
| 27 | 
            +
                def stop(bye_bye=true)
         | 
| 28 28 | 
             
                  was_running = running?
         | 
| 29 29 |  | 
| 30 | 
            -
                  if @listener[:thread] | 
| 30 | 
            +
                  if @listener[:thread]
         | 
| 31 31 | 
             
                    @listener[:thread].exit
         | 
| 32 32 | 
             
                    @listener[:thread] = nil
         | 
| 33 33 | 
             
                  end
         | 
| 34 | 
            -
                  if @notifier[:thread] | 
| 34 | 
            +
                  if @notifier[:thread]
         | 
| 35 35 | 
             
                    @notifier[:thread].exit
         | 
| 36 36 | 
             
                    @notifier[:thread] = nil
         | 
| 37 37 | 
             
                  end
         | 
| @@ -123,7 +123,7 @@ module SSDP | |
| 123 123 | 
             
                  @listener[:socket] = SSDP.create_listener @options
         | 
| 124 124 | 
             
                  @listener[:thread] = Thread.new do
         | 
| 125 125 | 
             
                    begin
         | 
| 126 | 
            -
                       | 
| 126 | 
            +
                      loop do
         | 
| 127 127 | 
             
                        message, consumer = @listener[:socket].recvfrom @options[:maxpack]
         | 
| 128 128 | 
             
                        process_ssdp message, { :address => consumer[3], :port => consumer[1] } unless @services.count == 0
         | 
| 129 129 | 
             
                      end
         | 
| @@ -135,12 +135,11 @@ module SSDP | |
| 135 135 |  | 
| 136 136 | 
             
                def start_notifier
         | 
| 137 137 | 
             
                  @notifier[:thread] = Thread.new do
         | 
| 138 | 
            -
                     | 
| 138 | 
            +
                    loop do
         | 
| 139 139 | 
             
                      sleep @options[:interval]
         | 
| 140 140 | 
             
                      @services.each { |type, params| send_notification type, params }
         | 
| 141 141 | 
             
                    end
         | 
| 142 142 | 
             
                  end
         | 
| 143 143 | 
             
                end
         | 
| 144 | 
            -
             | 
| 145 144 | 
             
              end
         | 
| 146 145 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ssdp
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.1. | 
| 4 | 
            +
              version: 1.1.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dillon Aumiller
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-02- | 
| 11 | 
            +
            date: 2015-02-04 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies: []
         | 
| 13 13 | 
             
            description: SSDP client/server library. Server notify/part/respond; client search/listen.
         | 
| 14 14 | 
             
            email: dillonaumiller@gmail.com
         |