Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Network
- def initialize
- @message = nil
- @m_size = 0
- end
- def update
- until @socket.eof?
- if @message
- receive_message_gradually
- else
- receive_full_message
- end
- end
- end
- def receive_message_gradually
- message = @socket.recv_non_block(@m_size - @message.size)
- if connection_lost?(message)
- $alert_msg ||= Vocab::ConnectionFailed
- DataManager.back_login
- return
- end
- @message << message
- if @message.size - 4 == @m_size
- buffer = Buffer_Reader.new(@message)
- handle_messages(buffer)
- @message = nil
- end
- end
- def receive_full_message
- bytes = @socket.recv_non_block(2)
- if connection_lost?(bytes)
- $alert_msg ||= Vocab::ConnectionFailed
- DataManager.back_login
- return
- end
- size = bytes.unpack('s')[0]
- message = @socket.recv_non_block(size)
- if message.size - 4 == size
- buffer = Buffer_Reader.new(message)
- handle_messages(buffer)
- else
- @message = message
- @m_size = size
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement