@Override public synchronized void addSavepoint(String name) { checkClosed(); try { transfer.writeRequestHeader(Session.COMMAND_DISTRIBUTED_TRANSACTION_ADD_SAVEPOINT); transfer.writeString(name); transfer.flush(); } catch (IOException e) { handleException(e); } }
transfer.writeString(e.getSQLState()).writeString(message).writeString(sql).writeInt(e.getErrorCode()) .writeString(trace).flush(); } catch (Exception e2) { if (transfer.getSession() != null)
@Override public synchronized void rollbackToSavepoint(String name) { checkClosed(); try { transfer.writeRequestHeader(Session.COMMAND_DISTRIBUTED_TRANSACTION_ROLLBACK_SAVEPOINT); transfer.writeString(name); transfer.flush(); } catch (IOException e) { handleException(e); } }
@Override public synchronized void commitTransaction(String allLocalTransactionNames) { checkClosed(); try { transfer.writeRequestHeader(Session.COMMAND_DISTRIBUTED_TRANSACTION_COMMIT); transfer.writeString(allLocalTransactionNames).flush(); } catch (IOException e) { handleException(e); } }
/** * Write a result column to the given output. * * @param result the result * @param i the column index */ private static void writeColumn(Transfer transfer, Result result, int i) throws IOException { transfer.writeString(result.getAlias(i)); transfer.writeString(result.getSchemaName(i)); transfer.writeString(result.getTableName(i)); transfer.writeString(result.getColumnName(i)); transfer.writeInt(result.getColumnType(i)); transfer.writeLong(result.getColumnPrecision(i)); transfer.writeInt(result.getColumnScale(i)); transfer.writeInt(result.getDisplaySize(i)); transfer.writeBoolean(result.isAutoIncrement(i)); transfer.writeInt(result.getNullable(i)); }
@Override public void replicateRootPages(String dbName, ByteBuffer rootPages) { int id = session.getNextId(); try { session.traceOperation("COMMAND_STORAGE_REPLICATE_ROOT_PAGES", id); transfer.writeRequestHeader(id, Session.COMMAND_STORAGE_REPLICATE_ROOT_PAGES); transfer.writeString(dbName).writeByteBuffer(rootPages); transfer.flush(); } catch (Exception e) { session.handleException(e); } }
@Override public void removeLeafPage(String mapName, PageKey pageKey) { int id = session.getNextId(); try { session.traceOperation("COMMAND_STORAGE_REMOVE_LEAF_PAGE", id); transfer.writeRequestHeader(id, Session.COMMAND_STORAGE_REMOVE_LEAF_PAGE); transfer.writeString(mapName).writePageKey(pageKey); transfer.flush(); } catch (Exception e) { session.handleException(e); } }
transfer.writeString(ci.getDatabaseShortName()); transfer.writeString(ci.getURL()); // 不带参数的URL transfer.writeString(ci.getUserName()); transfer.writeBytes(ci.getUserPasswordHash()); transfer.writeBytes(ci.getFilePasswordHash()); transfer.writeInt(keys.length); for (String key : keys) { transfer.writeString(key).writeString(ci.getProperty(key));
@Override public synchronized boolean validateTransaction(String localTransactionName) { checkClosed(); try { int id = getNextId(); transfer.writeRequestHeader(id, Session.COMMAND_DISTRIBUTED_TRANSACTION_VALIDATE); transfer.writeString(localTransactionName); AtomicBoolean isValid = new AtomicBoolean(); AsyncCallback<Void> ac = new AsyncCallback<Void>() { @Override public void runInternal() { try { isValid.set(transfer.readBoolean()); } catch (IOException e) { throw DbException.convert(e); } } }; transfer.addAsyncCallback(id, ac); transfer.flush(); ac.await(); return isValid.get(); } catch (Exception e) { handleException(e); return false; } }
transfer.writeInt(size); for (int i = 0; i < size; i++) { transfer.writeString(batchCommands.get(i));
transfer.writeRequestHeader(id, Session.COMMAND_STORAGE_APPEND); transfer.writeString(mapName).writeByteBuffer(value); transfer.writeString(replicationName);
private void writeInitPacket(String localHostAndPort) throws Exception { int packetId = 0; Transfer transfer = new Transfer(this, writableChannel); transfer.writeRequestHeaderWithoutSessionId(packetId, Session.SESSION_INIT); transfer.writeInt(MessagingService.PROTOCOL_MAGIC); transfer.writeInt(version); transfer.writeString(localHostAndPort); AsyncCallback<Void> ac = new AsyncCallback<>(); transfer.addAsyncCallback(packetId, ac); transfer.flush(); ac.await(); }
@Override public void moveLeafPage(String mapName, PageKey pageKey, ByteBuffer page, boolean addPage) { int id = session.getNextId(); try { session.traceOperation("COMMAND_STORAGE_MOVE_LEAF_PAGE", id); transfer.writeRequestHeader(id, Session.COMMAND_STORAGE_MOVE_LEAF_PAGE); transfer.writeString(mapName).writePageKey(pageKey).writeByteBuffer(page).writeBoolean(addPage); transfer.flush(); } catch (Exception e) { session.handleException(e); } }
@Override public LeafPageMovePlan prepareMoveLeafPage(String mapName, LeafPageMovePlan leafPageMovePlan) { int id = session.getNextId(); try { session.traceOperation("COMMAND_STORAGE_PREPARE_MOVE_LEAF_PAGE", id); transfer.writeRequestHeader(id, Session.COMMAND_STORAGE_PREPARE_MOVE_LEAF_PAGE); transfer.writeString(mapName); leafPageMovePlan.serialize(transfer); AsyncCallback<LeafPageMovePlan> ac = new AsyncCallback<LeafPageMovePlan>() { @Override public void runInternal() { try { result = LeafPageMovePlan.deserialize(transfer); } catch (IOException e) { throw DbException.convert(e); } } }; transfer.addAsyncCallback(id, ac); transfer.flush(); return ac.getResult(); } catch (Exception e) { session.handleException(e); } return null; }
@Override public void run() { command.executeUpdateAsync(pageKeys, res -> { if (res.isSucceeded()) { int updateCount = res.getResult(); try { transfer.writeResponseHeader(id, getStatus(session)); if (session.isRunModeChanged()) { transfer.writeInt(sessionId).writeString(session.getNewTargetEndpoints()); } if (operation == Session.COMMAND_DISTRIBUTED_TRANSACTION_UPDATE || operation == Session.COMMAND_DISTRIBUTED_TRANSACTION_PREPARED_UPDATE) { transfer.writeString(session.getTransaction().getLocalTransactionNames()); } transfer.writeInt(updateCount); transfer.writeLong(session.getLastRowKey()); transfer.flush(); } catch (Exception e) { sendError(transfer, id, e); } } else { sendError(transfer, id, res.getCause()); } }); } });
transfer.writeRequestHeader(id, Session.COMMAND_STORAGE_GET); transfer.writeString(mapName).writeByteBuffer(key); AtomicReference<byte[]> resultRef = new AtomicReference<>(); AsyncCallback<Void> ac = new AsyncCallback<Void>() {
@Override public ByteBuffer readRemotePage(String mapName, PageKey pageKey) { int id = session.getNextId(); try { session.traceOperation("COMMAND_STORAGE_READ_PAGE", id); transfer.writeRequestHeader(id, Session.COMMAND_STORAGE_READ_PAGE); transfer.writeString(mapName).writePageKey(pageKey); AsyncCallback<ByteBuffer> ac = new AsyncCallback<ByteBuffer>() { @Override public void runInternal() { try { result = transfer.readByteBuffer(); } catch (IOException e) { throw DbException.convert(e); } } }; transfer.addAsyncCallback(id, ac); transfer.flush(); return ac.getResult(); } catch (Exception e) { session.handleException(e); } return null; } }
if (operation == Session.COMMAND_DISTRIBUTED_TRANSACTION_QUERY || operation == Session.COMMAND_DISTRIBUTED_TRANSACTION_PREPARED_QUERY) { transfer.writeString(session.getTransaction().getLocalTransactionNames()); transfer.writeInt(sessionId).writeString(session.getNewTargetEndpoints());
transfer.writeRequestHeader(id, Session.COMMAND_PREPARE); transfer.writeString(sql); AsyncCallback<Void> ac = new AsyncCallback<Void>() { @Override
transfer.writeInt(clientVersion); transfer.writeBoolean(session.isAutoCommit()); transfer.writeString(session.getTargetEndpoints()); transfer.writeString(session.getRunMode().toString()); transfer.writeBoolean(session.isInvalid()); transfer.flush();