require 'date' require 'time' require 'eventmachine' DATEFMT = '%Y%m%d%H%M%S' def generic_response code = '%-31s' % 'SNARF' num = '%-12d' % (rand.to_s.tr('.', '0')[0,5]).to_i filler = (' ' * 7) timestamp = Time.now.strftime(DATEFMT) "#{code}#{num}#{filler}#{timestamp}\r\n" end module LineProtocolServer def post_init puts "# BEGIN CONN #{Time.now}" end def receive_data(request) code = request[0,31].to_s.strip num = request[31,12].to_s.strip len = request[43,6].to_s.strip puts "raw date --> '#{request[49,14]}'" timestamp = DateTime.strptime(request[49,14].strip, DATEFMT) msg = request[63,len.to_i+1].strip puts "code: '#{code}'" puts "num: '#{num}'" puts "len: '#{len}'" puts "timestamp: '#{timestamp}'" puts "msg: '#{msg}'" send_data(generic_response) end def unbind puts "# END CONN #{Time.now}" end end EventMachine.run do EventMachine.start_server('0.0.0.0', 15778, LineProtocolServer) puts 'Listening on 0.0.0.0:15778' end