module ShadowsocksRuby::Protocols::BufferHelper

This module include helper methods for deal with @buffer.

Public Instance Methods

tcp_receive_from_localbackend_in_buffer(n) click to toggle source
# File lib/shadowsocks_ruby/protocols/protocol.rb, line 141
def tcp_receive_from_localbackend_in_buffer n
  if n == -1
    class << self
      alias tcp_receive_from_localbackend tcp_receive_from_localbackend_other_packet
    end
    return @buffer.slice!(0, @buffer.length)
  elsif n < @buffer.length
    return @buffer.slice!(0, n)
  else
    class << self
      alias tcp_receive_from_localbackend tcp_receive_from_localbackend_other_packet
    end
    if n == @buffer.length
      return @buffer.slice!(0, n)
    else
      data = async_recv(n - @buffer.length)
      return @buffer.slice!(0, n) << data 
    end
  end
end
tcp_receive_from_localbackend_other_packet_helper(n) click to toggle source
# File lib/shadowsocks_ruby/protocols/protocol.rb, line 122
def tcp_receive_from_localbackend_other_packet_helper n
  if n == -1
    return @buffer.slice!(0, @buffer.length)
  elsif n < @buffer.length
    class << self
      alias tcp_receive_from_localbackend tcp_receive_from_localbackend_in_buffer
    end
    return @buffer.slice!(0, n)
  else
    if n == @buffer.length
      return @buffer.slice!(0, n)
    else
      data = async_recv(n - @buffer.length)
      return @buffer.slice!(0, n) << data 
    end
  end
end
tcp_receive_from_remoteserver_in_buffer(n) click to toggle source
# File lib/shadowsocks_ruby/protocols/protocol.rb, line 101
def tcp_receive_from_remoteserver_in_buffer n
  if n == -1
    class << self
      alias tcp_receive_from_remoteserver tcp_receive_from_remoteserver_other_packet
    end
    return @buffer.slice!(0, @buffer.length)          
  elsif n < @buffer.length
    return @buffer.slice!(0, n)
  else
    class << self
      alias tcp_receive_from_remoteserver tcp_receive_from_remoteserver_other_packet
    end
    if n == @buffer.length
      return @buffer.slice!(0, n)
    else
      data = async_recv(n - @buffer.length)
      return @buffer.slice!(0, n) << data 
    end
  end
end
tcp_receive_from_remoteserver_other_packet_helper(n) click to toggle source
# File lib/shadowsocks_ruby/protocols/protocol.rb, line 83
def tcp_receive_from_remoteserver_other_packet_helper n
  if n == -1
    return @buffer.slice!(0, @buffer.length)          
  elsif n < @buffer.length
    class << self
      alias tcp_receive_from_remoteserver tcp_receive_from_remoteserver_in_buffer
    end
    return @buffer.slice!(0, n)
  else
    if n == @buffer.length
      return @buffer.slice!(0, n)
    else
      data = async_recv(n - @buffer.length)
      return @buffer.slice!(0, n) << data 
    end
  end
end