Class: StompServer::TopicManager

Inherits:
Object
  • Object
show all
Defined in:
lib/stomp_server/topic_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTopicManager

Returns a new instance of TopicManager.



6
7
8
9
10
# File 'lib/stomp_server/topic_manager.rb', line 6

def initialize
  @frame_index =0
  @topics = Hash.new { Array.new }
  puts "TopicManager initialized"
end

Instance Attribute Details

#frame_indexObject

Returns the value of attribute frame_index.



5
6
7
# File 'lib/stomp_server/topic_manager.rb', line 5

def frame_index
  @frame_index
end

Instance Method Details

#disconnect(user) ⇒ Object



28
29
30
31
32
# File 'lib/stomp_server/topic_manager.rb', line 28

def disconnect(user)
  @topics.each do |dest, queue|
    queue.delete_if { |qu| qu == user }
  end
end

#indexObject



12
13
14
# File 'lib/stomp_server/topic_manager.rb', line 12

def index
  @frame_index
end

#next_indexObject



16
17
18
# File 'lib/stomp_server/topic_manager.rb', line 16

def next_index
  @frame_index += 1
end

#sendmsg(msg) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/stomp_server/topic_manager.rb', line 34

def sendmsg(msg)
  msg.command = "MESSAGE"
  topic = msg.headers['destination']
  @topics[topic].each do |user|
    user.stomp_send_data(msg)
  end
end

#subscribe(topic, user) ⇒ Object



20
21
22
# File 'lib/stomp_server/topic_manager.rb', line 20

def subscribe(topic, user)
  @topics[topic] += [user]
end

#unsubscribe(topic, user) ⇒ Object



24
25
26
# File 'lib/stomp_server/topic_manager.rb', line 24

def unsubscribe(topic, user)
  @topics[topic].delete(user) 
end