Class: Faye::Channel

Inherits:
Object
  • Object
show all
Includes:
Observable
Defined in:
lib/faye/channel.rb

Defined Under Namespace

Classes: Tree

Constant Summary collapse

HANDSHAKE =
'/meta/handshake'
CONNECT =
'/meta/connect'
SUBSCRIBE =
'/meta/subscribe'
UNSUBSCRIBE =
'/meta/unsubscribe'
DISCONNECT =
'/meta/disconnect'
META =
:meta
SERVICE =
:service

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ Channel

Returns a new instance of Channel.



42
43
44
# File 'lib/faye/channel.rb', line 42

def initialize(name)
  @name = name
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



40
41
42
# File 'lib/faye/channel.rb', line 40

def name
  @name
end

Class Method Details

.meta?(name) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
# File 'lib/faye/channel.rb', line 23

def meta?(name)
  segments = parse(name)
  segments ? (segments.first == META) : nil
end

.parse(name) ⇒ Object



18
19
20
21
# File 'lib/faye/channel.rb', line 18

def parse(name)
  return nil unless valid?(name)
  name.split('/')[1..-1].map { |s| s.to_sym }
end

.service?(name) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
31
# File 'lib/faye/channel.rb', line 28

def service?(name)
  segments = parse(name)
  segments ? (segments.first == SERVICE) : nil
end

.subscribable?(name) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
# File 'lib/faye/channel.rb', line 33

def subscribable?(name)
  return nil unless valid?(name)
  not meta?(name) and not service?(name)
end

.valid?(name) ⇒ Boolean

Returns:

  • (Boolean)


13
14
15
16
# File 'lib/faye/channel.rb', line 13

def valid?(name)
  Grammar::CHANNEL_NAME =~ name or
  Grammar::CHANNEL_PATTERN =~ name
end

Instance Method Details

#<<(message) ⇒ Object



46
47
48
49
# File 'lib/faye/channel.rb', line 46

def <<(message)
  changed(true)
  notify_observers(message)
end