Advertisement
marlosgama

Untitled

Aug 9th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.09 KB | None | 0 0
  1. class Network
  2.  
  3.   def initialize
  4.     @message = nil
  5.     @m_size = 0
  6.   end
  7.  
  8.   def update
  9.     until @socket.eof?
  10.       if @message
  11.         receive_message_gradually
  12.       else
  13.         receive_full_message
  14.       end
  15.     end
  16.   end
  17.  
  18.   def receive_message_gradually
  19.     message = @socket.recv_non_block(@m_size - @message.size)
  20.     if connection_lost?(message)
  21.       $alert_msg ||= Vocab::ConnectionFailed
  22.       DataManager.back_login
  23.       return
  24.     end
  25.     @message << message
  26.     if @message.size - 4 == @m_size
  27.       buffer = Buffer_Reader.new(@message)
  28.       handle_messages(buffer)
  29.       @message = nil
  30.     end
  31.   end
  32.  
  33.   def receive_full_message
  34.     bytes = @socket.recv_non_block(2)
  35.     if connection_lost?(bytes)
  36.       $alert_msg ||= Vocab::ConnectionFailed
  37.       DataManager.back_login
  38.       return
  39.     end
  40.     size = bytes.unpack('s')[0]
  41.     message = @socket.recv_non_block(size)
  42.     if message.size - 4 == size
  43.       buffer = Buffer_Reader.new(message)
  44.       handle_messages(buffer)
  45.     else
  46.       @message = message
  47.       @m_size = size
  48.     end
  49.   end
  50.  
  51. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement