stompserver 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/queue_manager.rb CHANGED
@@ -21,9 +21,19 @@ class QueueManager
21
21
  def subscribe(dest, user, use_ack=false)
22
22
  user = Struct::QueueUser.new(user, use_ack)
23
23
  @queues[dest] += [user]
24
- @messages[dest].each do |frame|
25
- send_to_user(frame, user)
26
- end
24
+
25
+ # TODO handle this is some form of call back
26
+ # it is quite possible that this could be a lot
27
+ # of data and block things up.
28
+ send_backlog(@messages[dest], user)
29
+ end
30
+
31
+ def send_backlog(queue, user)
32
+ until queue.empty?
33
+ current = queue.first
34
+ send_to_user(current, user)
35
+ queue.shift
36
+ end
27
37
  end
28
38
 
29
39
  def unsubscribe(topic, user)
@@ -42,6 +52,9 @@ class QueueManager
42
52
  @pending[user].each do |frame|
43
53
  sendmsg(frame)
44
54
  end
55
+ @queues.each do |dest, queue|
56
+ queue.delete_if { |qu| qu.user == user }
57
+ end
45
58
  end
46
59
 
47
60
  def send_to_user(frame, user)
data/lib/stomp_server.rb CHANGED
@@ -5,7 +5,7 @@ require 'queue_manager'
5
5
  require 'frame_journal'
6
6
 
7
7
  module StompServer
8
- VERSION = '0.9.1'
8
+ VERSION = '0.9.2'
9
9
  VALID_COMMANDS = [:connect, :send, :subscribe, :unsubscribe, :begin, :commit, :abort, :ack, :disconnect]
10
10
 
11
11
  def self.setup(j = FrameJournal.new, tm = TopicManager.new, qm = QueueManager.new(j))
@@ -129,6 +129,11 @@ module StompServer
129
129
  close_connection_after_writing
130
130
  end
131
131
 
132
+ def unbind
133
+ @@queue_manager.disconnect(self)
134
+ @@topic_manager.disconnect(self)
135
+ end
136
+
132
137
  def send_message(msg)
133
138
  msg.command = "MESSAGE"
134
139
  send_data(msg.to_s)
data/lib/topic_manager.rb CHANGED
@@ -13,6 +13,12 @@ class TopicManager
13
13
  @topics[topic].delete(user)
14
14
  end
15
15
 
16
+ def disconnect(user)
17
+ @topics.each do |dest, queue|
18
+ queue.delete_if { |qu| qu == user }
19
+ end
20
+ end
21
+
16
22
  def sendmsg(msg)
17
23
  msg.command = "MESSAGE"
18
24
  topic = msg.headers['destination']
metadata CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: stompserver
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.9.1
6
+ version: 0.9.2
7
7
  date: 2006-10-16 00:00:00 -04:00
8
8
  summary: A very light messaging server
9
9
  require_paths: