# File lib/stomp_server.rb, line 98 def start begin if @opts[:group] puts "Changing group to #{@opts[:group]}." Process::GID.change_privilege(Etc.getgrnam(@opts[:group]).gid) end if @opts[:user] puts "Changing user to #{@opts[:user]}." Process::UID.change_privilege(Etc.getpwnam(@opts[:user]).uid) end rescue Errno::EPERM puts "FAILED to change user:group #{@opts[:user]}:#{@opts[:group]}: #$!" exit 1 end Dir.mkdir(@opts[:working_dir]) unless File.directory?(@opts[:working_dir]) Dir.mkdir(@opts[:logdir]) unless File.directory?(@opts[:logdir]) Dir.mkdir(@opts[:etcdir]) unless File.directory?(@opts[:etcdir]) if @opts[:daemon] Daemonize.daemonize(log_file=@opts[:logfile]) # change back to the original starting directory Dir.chdir(@opts[:working_dir]) end # Write pidfile open(@opts[:pidfile],"w") {|f| f.write(Process.pid) } if @opts[:queue] == 'dbm' qstore=StompServer::DBMQueue.new(@opts[:storage]) elsif @opts[:queue] == 'file' qstore=StompServer::FileQueue.new(@opts[:storage]) elsif @opts[:queue] == 'activerecord' require 'stomp_server/queue/activerecord_queue' qstore=StompServer::ActiveRecordQueue.new(@opts[:etcdir], @opts[:storage]) else qstore=StompServer::MemoryQueue.new end qstore.checkpoint_interval = @opts[:checkpoint] puts "Checkpoing interval is #{qstore.checkpoint_interval}" if $DEBUG @topic_manager = StompServer::TopicManager.new @queue_manager = StompServer::QueueManager.new(qstore) @auth_required = @opts[:auth] if @auth_required @stompauth = StompServer::StompAuth.new(@opts[:passwd]) end trap("INT") { puts "INT signal received.";stop(@opts[:pidfile]) } end
Generated with the Darkfish Rdoc Generator 2.