Sha256: 2acea818db977d311715332c3fa3e9878a059fc203aa24c3b18076201447fa2d

Contents?: true

Size: 1.23 KB

Versions: 26

Compression:

Stored size: 1.23 KB

Contents

# Парсинг запросов через игровой сокет сервер
# Парсит json комманды
GameServer::RequestParser = Struct.new(:data)
class GameServer::RequestParser

  # ==== Return
  # <GameServer::Request>:: объект команды, которая передана
  # юзером.
  # ==== Raises
  # <GameServer::RequestParser::ParserError>:: в случае если синтакси
  # не верной, это не JSON или это не JSON массив, или первый член
  # json массива не строка
  def parse
    request_array = JSON.parse(data.gsub("\000", ""))
    parser_error('Not Array') unless request_array.is_a?(Array)
    parser_error('No request given') unless request_array[0].is_a?(String)
    GameServer::Request.new(request_array[0], request_array[1, request_array.size])
  rescue JSON::ParserError => e
    parser_error("Bad JSON")
  end


  private

  
  # ==== Description
  # райзит ошибку прасинга с заданным name
  def parser_error(name)
    #puts "PARSER ERROR #{name}"
    raise ParserError.new(name, data)
  end
  
  class ParserError < RuntimeError
    def initialize(name, data)
      super("#{name}\n#{data}")
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
game-server-0.6.0 lib/request_parser.rb
game-server-0.5.2 lib/request_parser.rb
game-server-0.5.1 lib/request_parser.rb
game-server-0.5.0 lib/request_parser.rb
game-server-0.4.12 lib/request_parser.rb
game-server-0.4.11 lib/request_parser.rb
game-server-0.4.10 lib/request_parser.rb
game-server-0.4.9 lib/request_parser.rb
game-server-0.4.8 lib/request_parser.rb
game-server-0.4.7 lib/request_parser.rb
game-server-0.4.6 lib/request_parser.rb
game-server-0.4.5 lib/request_parser.rb
game-server-0.4.4 lib/request_parser.rb
game-server-0.4.3 lib/request_parser.rb
game-server-0.4.2 lib/request_parser.rb
game-server-0.4.1 lib/request_parser.rb
game-server-0.4.0 lib/request_parser.rb
game-server-0.3.3 lib/request_parser.rb
game-server-0.3.2 lib/request_parser.rb
game-server-0.3.1 lib/request_parser.rb