Class: InternetScrabbleClub::Client

Inherits:
Object
  • Object
show all
Includes:
Celluloid::IO
Defined in:
lib/internet_scrabble_club/client.rb,
lib/internet_scrabble_club/client/callback_queue.rb,
lib/internet_scrabble_club/client/response_parsers/who.rb,
lib/internet_scrabble_club/client/response_parsers/base.rb,
lib/internet_scrabble_club/client/response_parsers/ping.rb,
lib/internet_scrabble_club/client/response_parsers/seek.rb,
lib/internet_scrabble_club/client/response_parsers/close.rb,
lib/internet_scrabble_club/client/response_parsers/login.rb,
lib/internet_scrabble_club/client/response_parsers/unseek.rb,
lib/internet_scrabble_club/client/middleware/response/emit.rb,
lib/internet_scrabble_club/client/middleware/response/read.rb,
lib/internet_scrabble_club/client/response_parsers/examine.rb,
lib/internet_scrabble_club/client/response_parsers/history.rb,
lib/internet_scrabble_club/client/middleware/response/parse.rb,
lib/internet_scrabble_club/client/response_parsers/who/list.rb,
lib/internet_scrabble_club/client/response_parsers/who/move.rb,
lib/internet_scrabble_club/client/response_transformers/base.rb,
lib/internet_scrabble_club/client/response_parsers/ping/reply.rb,
lib/internet_scrabble_club/client/middleware/request/echo_ping.rb,
lib/internet_scrabble_club/client/middleware/request/keep_alive.rb,
lib/internet_scrabble_club/client/middleware/response/transform.rb,
lib/internet_scrabble_club/client/response_parsers/examine/history.rb,
lib/internet_scrabble_club/client/response_transformers/examine/history.rb

Defined Under Namespace

Modules: Middleware, ResponseParsers Classes: CallbackQueue, InvalidCredentials, ResponseTransformers

Constant Summary collapse

DEFAULT_HOST =
'50.97.175.138'
DEFAULT_PORT =
1330

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(host = DEFAULT_HOST, port = DEFAULT_PORT) ⇒ Client

Returns a new instance of Client.



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/internet_scrabble_club/client.rb', line 31

def initialize(host = DEFAULT_HOST, port = DEFAULT_PORT)
  @socket = TCPSocket.new(host, port)
  @command_callback_queue = Client::CallbackQueue.new

  @event_emitter = Events::EventEmitter.new
  @event_emitter.on(:response) { |response| yield_command_callback(response) }

  Celluloid.every(50) { send_request('SEEK') }

  async.run
end

Instance Attribute Details

#command_callback_queue=(value) ⇒ Object (writeonly)

Sets the attribute command_callback_queue

Parameters:

  • value

    the value to set the attribute command_callback_queue to.



20
21
22
# File 'lib/internet_scrabble_club/client.rb', line 20

def command_callback_queue=(value)
  @command_callback_queue = value
end

#event_emitter=(value) ⇒ Object (writeonly)

Sets the attribute event_emitter

Parameters:

  • value

    the value to set the attribute event_emitter to.



20
21
22
# File 'lib/internet_scrabble_club/client.rb', line 20

def event_emitter=(value)
  @event_emitter = value
end

#middleware=(value) ⇒ Object (writeonly)

Sets the attribute middleware

Parameters:

  • value

    the value to set the attribute middleware to.



19
20
21
# File 'lib/internet_scrabble_club/client.rb', line 19

def middleware=(value)
  @middleware = value
end

#socket=(value) ⇒ Object (writeonly)

Sets the attribute socket

Parameters:

  • value

    the value to set the attribute socket to.



19
20
21
# File 'lib/internet_scrabble_club/client.rb', line 19

def socket=(value)
  @socket = value
end

Instance Method Details

#authenticate(nickname, password, &callback) ⇒ Object



47
48
49
# File 'lib/internet_scrabble_club/client.rb', line 47

def authenticate(nickname, password, &callback)
  send_request('LOGIN', nickname, password, 1871, '?', &callback)
end

#finalizeObject



63
64
65
# File 'lib/internet_scrabble_club/client.rb', line 63

def finalize
  @socket.close if @socket
end

#on_response(command_regex = /.*/, &callback) ⇒ Object



51
52
53
54
55
# File 'lib/internet_scrabble_club/client.rb', line 51

def on_response(command_regex = /.*/, &callback)
  @event_emitter.on(:response) do |response|
    callback.call(response) if response[:command] =~ command_regex
  end
end

#runObject



43
44
45
# File 'lib/internet_scrabble_club/client.rb', line 43

def run
  loop { middleware_stack.call({}) }
end

#send_request(command, *arguments, &callback) ⇒ Object



57
58
59
60
61
# File 'lib/internet_scrabble_club/client.rb', line 57

def send_request(command, *arguments, &callback)
  request = ['0', command, *arguments].join(' ')
  @command_callback_queue.enqueue(command, callback)
  @socket.write("\0" << request.length << request)
end