lib/monetdb/connection.rb in monetdb-0.2.0 vs lib/monetdb/connection.rb in monetdb-0.2.1

- old
+ new

@@ -1,13 +1,15 @@ require "socket" +require "monetdb/connection/io" require "monetdb/connection/messages" require "monetdb/connection/setup" require "monetdb/connection/query" module MonetDB class Connection + include IO include Messages include Setup include Query Q_TABLE = "1" # SELECT statement @@ -78,48 +80,9 @@ @socket end def log(type, msg) MonetDB.logger.send(type, msg) if MonetDB.logger - end - - def read - raise ConnectionError, "Not connected to server" unless connected? - - length, last_chunk = read_length - data, iterations = "", 0 - - while (length > 0) && (iterations < 1000) do - received = socket.recv(length) - data << received - length -= received.bytesize - iterations += 1 - end - data << read unless last_chunk - - data - end - - def read_length - bytes = socket.recv(2).unpack("v")[0] - [(bytes >> 1), (bytes & 1) == 1] - end - - def write(message) - raise ConnectionError, "Not connected to server" unless connected? - pack(message).each do |chunk| - socket.write(chunk) - end - true - end - - def pack(message) - chunks = message.scan(/.{1,#{MAX_MSG_SIZE}}/m) - chunks.each_with_index.to_a.collect do |chunk, index| - last_bit = (index == chunks.size - 1) ? 1 : 0 - length = [(chunk.size << 1) | last_bit].pack("v") - "#{length}#{chunk}" - end.freeze end end end