Class: Frisky::SSDP::Notifier

Inherits:
MulticastConnection show all
Includes:
LogSwitch
Defined in:
lib/frisky/ssdp/notifier.rb

Constant Summary

Constants included from NetworkConstants

Frisky::SSDP::NetworkConstants::BROADCAST_IP, Frisky::SSDP::NetworkConstants::MULTICAST_IP, Frisky::SSDP::NetworkConstants::MULTICAST_PORT, Frisky::SSDP::NetworkConstants::TTL

Instance Method Summary collapse

Methods inherited from MulticastConnection

#parse, #peer_info, #set_membership, #set_multicast_ttl, #set_ttl, #setup_multicast_socket, #switch_multicast_loop

Constructor Details

#initialize(nt, usn, ddf_url, valid_for_duration) ⇒ Notifier

Returns a new instance of Notifier.



8
9
10
11
12
13
# File 'lib/frisky/ssdp/notifier.rb', line 8

def initialize(nt, usn, ddf_url, valid_for_duration)
  @os = RbConfig::CONFIG['host_vendor'].capitalize + '/' +
    RbConfig::CONFIG['host_os']
  @upnp_version = '1.0'
  @notification = notification(nt, usn, ddf_url, valid_for_duration)
end

Instance Method Details

#notification(nt, usn, ddf_url, valid_for_duration) ⇒ Object

Parameters:

  • nt (String)

    “Notification Type”; a potential search target. Used in NT header.

  • usn (String)

    “Unique Service Name”; a composite identifier for the advertisement. Used in USN header.

  • ddf_url (String)

    Device Description File URL for the root device.

  • valid_for_duration (Fixnum)

    Duration in seconds for which the advertisement is valid. Used in CACHE-CONTROL header.



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/frisky/ssdp/notifier.rb', line 28

def notification(nt, usn, ddf_url, valid_for_duration)
  <<-NOTIFICATION
NOTIFY * HTTP/1.1\r
HOST: #{MULTICAST_IP}:#{MULTICAST_PORT}\r
CACHE-CONTROL: max-age=#{valid_for_duration}\r
LOCATION: #{ddf_url}\r
NT: #{nt}\r
NTS: ssdp:alive\r
SERVER: #{@os} UPnP/#{@upnp_version} Frisky/#{Frisky::VERSION}\r
USN: #{usn}\r
\r
  NOTIFICATION
end

#post_initObject



15
16
17
18
19
# File 'lib/frisky/ssdp/notifier.rb', line 15

def post_init
  if send_datagram(@notification, MULTICAST_IP, MULTICAST_PORT) > 0
    log "Sent notification:\n#{@notification}"
  end
end