class SocketClientBase
Attributes
callback_on_disconnect[RW]
ip[R]
player[RW]
should_disconnect_session[RW]
use for disconnect_inactive_players and on_application_exit
time_last_request[R]
Properties
Public Class Methods
manager_remote()
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 13 def self.manager_remote @manager_remote end
manager_remote=(value)
click to toggle source
static fields
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 8 def self.manager_remote=(value) @manager_remote = value end
Public Instance Methods
get_requests()
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 120 def get_requests result = [] return result unless @is_online @requests_locker.synchronize do begin unless @data_buffer.empty? deserialize_data = AMF::Root.deserialize(@data_buffer) result = deserialize_data[:objects] @data_buffer = deserialize_data[:incomplete_objects] || '' end rescue Exception => e on_get_requests_error(e) end #begin/rescue end #synchronize result end
is_online?()
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 31 def is_online? @is_online end
post_init()
click to toggle source
default constructor
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 66 def post_init @logger = AppInfo.instance.logger @requests_locker = Mutex.new @is_online = true @time_last_request = Time.now.to_i @should_disconnect_session = true @manager_remote = self.class.manager_remote @manager_remote.on_client_connected(self) @data_buffer = '' @player = nil @callback_on_disconnect = nil init_ip nil end
receive_data(data)
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 107 def receive_data(data) @time_last_request = Time.now.to_i @requests_locker.synchronize do @data_buffer += data end @manager_remote.handle_data_from(self) nil end
report_about_sent_request(value)
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 158 def report_about_sent_request(value) value.report_log("sent\t\t") if value.respond_to?(:report_log) nil end
send_raw_data(raw_data)
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 172 def send_raw_data(raw_data) send_data(raw_data) end
send_response(response_obj)
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 144 def send_response(response_obj) return unless @is_online report_about_sent_request(response_obj) response = AMF::Root.serialize(response_obj) send_data(response) nil #for prevent return other value end
send_response_error(request_id, description = nil)
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 184 def send_response_error(request_id, description = nil) response = Api::ResponseError.new(request_id) response.description = description send_response(response) end
send_response_ok(request_id)
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 177 def send_response_ok(request_id) response = Api::ResponseOk.new(request_id) send_response(response) end
unbind()
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 192 def unbind on_connection_closed nil end
Protected Instance Methods
init_ip()
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 91 def init_ip init_ip_internal(get_peername) nil end
init_ip_internal(peername)
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 98 def init_ip_internal(peername) @ip = Socket.unpack_sockaddr_in(peername).last rescue '0.0.0.0' @logger.info "connection opened. ip: #{@ip}" nil end
on_connection_closed()
click to toggle source
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 45 def on_connection_closed @is_online = false @logger.info "connection closed. ip: #{@ip}" @manager_remote.on_client_disconnected(self) if @should_disconnect_session unless @callback_on_disconnect.nil? @callback_on_disconnect.call @callback_on_disconnect = nil end nil end
on_get_requests_error(e)
click to toggle source
Events
# File lib/mrpin/core/remote/socket/base/socket_client_base.rb, line 40 def on_get_requests_error(e) AppInfo.instance.on_server_error("Error on get_requests #{e}", e) end