internal object getObject(Connection.CLICommand cmd, int n) { if (stmt == null) { throw new CliError("ObjectSet was aleady closed"); } if (stmt.con == null) { throw new CliError("Statement was closed"); } ComBuffer buf = new ComBuffer(cmd, stmt.stmtId); if (cmd == Connection.CLICommand.cli_cmd_skip) { buf.putInt(n); } stmt.con.send(buf); buf.reset(4); stmt.con.receive(buf, 4); int len = buf.getInt(); if (len == (int)Connection.CLIStatus.cli_not_found) { return(null); } else if (len <= 0) { throw new CliError("Failed to get object"); } buf.reset(len - 4); stmt.con.receive(buf, len - 4); currOid = buf.getInt(); if (currOid == 0) { return(null); } updated = false; return(currObj = stmt.tableDesc.readObject(buf)); }
internal void receive(ComBuffer com, int len) { com.reset(len); int offs = 0; while (len > 0) { int rc = socket.Receive(com.buf, offs, len, SocketFlags.None); if (rc < 0) { throw new CliError("Failed to read response"); } len -= rc; offs += rc; } }
internal object getObject(Connection.CLICommand cmd, int n) { if (stmt == null) { throw new CliError("ObjectSet was aleady closed"); } if (stmt.con == null) { throw new CliError("Statement was closed"); } ComBuffer buf = new ComBuffer(cmd, stmt.stmtId); if (cmd == Connection.CLICommand.cli_cmd_skip) { buf.putInt(n); } stmt.con.send(buf); buf.reset(4); stmt.con.receive(buf, 4); int len = buf.getInt(); if (len == (int)Connection.CLIStatus.cli_not_found) { return null; } else if (len <= 0) { throw new CliError("Failed to get object"); } buf.reset(len-4); stmt.con.receive(buf, len-4); currOid = buf.getInt(); if (currOid == 0) { return null; } updated = false; return currObj = stmt.tableDesc.readObject(buf); }