Sha256: c156762c6ff43884eba644064faceb34f46d1bdb0cf08ef044c399cb0318e639
Contents?: true
Size: 1.62 KB
Versions: 1
Compression:
Stored size: 1.62 KB
Contents
# # # module StompServer # # Low level physical queue handler. # class FileQueue < Queue # Remove queue directory if it exists. def _close_queue(dest) Dir.delete(@queues[dest][:queue_dir]) if File.directory?(@queues[dest][:queue_dir]) end # Create queue directory if it does not alrady exist. def _open_queue(dest) # handle clashes between _ and / queue_name = dest.gsub('_','__') queue_name = dest.gsub('/','_') queue_dir = @directory + '/' + queue_name @queues[dest][:queue_dir] = queue_dir Dir.mkdir(queue_dir) unless File.directory?(queue_dir) end # Write a messaage frame to the file system. def _writeframe(dest,frame_todump,msgid) filename = "#{@queues[dest][:queue_dir]}/#{msgid}" frame = frame_todump.dup frame_body = frame.body frame.body = '' frame_image = Marshal.dump(frame) framelen = sprintf("%08x", frame_image.length) bodylen = sprintf("%08x", frame_body.length) File.open(filename,'wb') {|f| f.syswrite("#{framelen}#{bodylen}#{frame_image}#{frame_body}")} return true end # Read a message frame from the file system. def _readframe(dest,msgid) filename = "#{@queues[dest][:queue_dir]}/#{msgid}" file = nil File.open(filename,'rb') {|f| file = f.read} frame_len = file[0,8].hex body_len = file[8,8].hex frame = Marshal::load(file[16,frame_len]) frame.body = file[(frame_len + 16),body_len] if File.delete(filename) result = frame else result = false end return result end end # of class end # of module
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
stompserver_ng-1.0.6 | lib/stomp_server_ng/queue/file_queue.rb |