當前位置: 首頁>>代碼示例>>Java>>正文


Java ServerConnection.isAutocommit方法代碼示例

本文整理匯總了Java中com.alibaba.cobar.server.ServerConnection.isAutocommit方法的典型用法代碼示例。如果您正苦於以下問題:Java ServerConnection.isAutocommit方法的具體用法?Java ServerConnection.isAutocommit怎麽用?Java ServerConnection.isAutocommit使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在com.alibaba.cobar.server.ServerConnection的用法示例。


在下文中一共展示了ServerConnection.isAutocommit方法的8個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: okResponse

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
@Override
public void okResponse(byte[] data, MySQLConnection conn) {
    boolean executeResponse = false;
    try {
        executeResponse = conn.syncAndExcute();
    } catch (UnsupportedEncodingException e) {
        executeException(conn);
    }
    if (executeResponse) {
        conn.setRunning(false);
        ServerConnection source = session.getSource();
        if (source.isAutocommit()) {
            session.clearConnections();
        }
        endRunning();
        OkPacket ok = new OkPacket();
        ok.read(data);
        source.setLastInsertId(ok.insertId);
        buffer = source.writeToBuffer(data, buffer);
        source.write(buffer);
    }
}
 
開發者ID:alibaba,項目名稱:cobar,代碼行數:23,代碼來源:SingleNodeHandler.java

示例2: handleSuccessEOF

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
/**
 * @throws nothing never throws any exception
 */
private void handleSuccessEOF(BlockingSession ss, BinaryPacket bin) {
    if (decrementCountAndIsZero()) {
        if (isFail.get()) {
            notifyFailure(ss);
            return;
        }
        try {
            ServerConnection source = ss.getSource();
            if (source.isAutocommit()) {
                ss.release();
            }

            bin.packetId = ++packetId;// LAST_EOF
            source.write(bin.write(buffer, source));
        } catch (Exception e) {
            LOGGER.warn("exception happens in success notification: " + ss.getSource(), e);
        }
    }
}
 
開發者ID:alibaba,項目名稱:cobar,代碼行數:23,代碼來源:MultiNodeExecutor.java

示例3: rowEofResponse

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
@Override
public void rowEofResponse(byte[] eof, MySQLConnection conn) {
    ServerConnection source = session.getSource();
    conn.setRunning(false);
    conn.recordSql(source.getHost(), source.getSchema(), route.getStatement());
    if (source.isAutocommit()) {
        session.clearConnections();
    }
    endRunning();
    buffer = source.writeToBuffer(eof, buffer);
    source.write(buffer);
}
 
開發者ID:alibaba,項目名稱:cobar,代碼行數:13,代碼來源:SingleNodeHandler.java

示例4: handleSuccessOK

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
/**
 * @throws nothing never throws any exception
 */
private void handleSuccessOK(BlockingSession ss, RouteResultsetNode rrn, boolean autocommit, OkPacket ok) {
    if (decrementCountAndIsZero()) {
        if (isFail.get()) {
            notifyFailure(ss);
            return;
        }
        try {
            ServerConnection source = ss.getSource();
            ok.packetId = ++packetId;// OK_PACKET
            ok.affectedRows = affectedRows;
            if (insertId > 0) {
                ok.insertId = insertId;
                source.setLastInsertId(insertId);
            }

            if (source.isAutocommit()) {
                if (!autocommit) { // 前端非事務模式,後端事務模式,則需要自動遞交後端事務。
                    icExecutor.commit(ok, ss, ss.getTarget().size());
                } else {
                    ss.release();
                    ok.write(source);
                }
            } else {
                ok.write(source);
            }

            source.recycle(buffer);
        } catch (Exception e) {
            LOGGER.warn("exception happens in success notification: " + ss.getSource(), e);
        }
    }
}
 
開發者ID:alibaba,項目名稱:cobar,代碼行數:36,代碼來源:MultiNodeExecutor.java

示例5: handle

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
public static void handle(String stmt, ServerConnection c, int offset) {
    int rs = ServerParseSet.parse(stmt, offset);
    switch (rs & 0xff) {
        case AUTOCOMMIT_ON:
            if (!c.isAutocommit()) {
                c.setAutocommit(true);
            }

            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
            break;
        case AUTOCOMMIT_OFF: {
            if (c.isAutocommit()) {
                c.setAutocommit(false);
            }
            c.write(c.writeToBuffer(AC_OFF, c.allocate()));
            break;
        }
        case TX_READ_UNCOMMITTED: {
            c.setTxIsolation(Isolations.READ_UNCOMMITTED.getCode());
            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
            break;
        }
        case TX_READ_COMMITTED: {
            c.setTxIsolation(Isolations.READ_COMMITTED.getCode());
            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
            break;
        }
        case TX_REPEATED_READ: {
            c.setTxIsolation(Isolations.REPEATED_READ.getCode());
            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
            break;
        }
        case TX_SERIALIZABLE: {
            c.setTxIsolation(Isolations.SERIALIZABLE.getCode());
            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
            break;
        }
        case NAMES:
            String charset = stmt.substring(rs >>> 8).trim();
            if (c.setCharset(charset)) {
                c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
            } else {
                c.writeErrMessage(ErrorCode.ER_UNKNOWN_CHARACTER_SET, "Unknown charset '" + charset + "'");
            }
            break;
        case CHARACTER_SET_CLIENT:
        case CHARACTER_SET_CONNECTION:
        case CHARACTER_SET_RESULTS:
            CharacterSet.response(stmt, c, rs);
            break;
        case SQL_MODE:
            SqlMode.response(stmt, c, rs);
            break;
        case TX_POLICY_1:
            c.setTrxPolicy(ITransactionPolicy.TDDL);
            break;
        // case TX_POLICY_2:
        // c.setTrxPolicy(new Cobar());
        // c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        // break;
        case TX_POLICY_3:
            c.setTrxPolicy(ITransactionPolicy.ALLOW_READ_CROSS_DB);
            break;
        // case TX_POLICY_4:
        // c.setTrxPolicy(new Corona());
        // c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        // break;
        case TX_POLICY_5:
            c.setTrxPolicy(ITransactionPolicy.FREE);
            break;
        case AT_VAR:
            c.execute(stmt, ServerParse.SET);
        default:
            StringBuilder s = new StringBuilder();
            logger.warn(s.append(stmt).append(" is not executed").toString());
            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
    }
}
 
開發者ID:loye168,項目名稱:tddl5,代碼行數:79,代碼來源:SetHandler.java

示例6: handle

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
public static void handle(String stmt, ServerConnection c, int offset) {
    int rs = ServerParseSet.parse(stmt, offset);
    switch (rs & 0xff) {
    case AUTOCOMMIT_ON:
        if (c.isAutocommit()) {
            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        } else {
            c.commit();
            c.setAutocommit(true);
        }
        break;
    case AUTOCOMMIT_OFF: {
        if (c.isAutocommit()) {
            c.setAutocommit(false);
        }
        c.write(c.writeToBuffer(AC_OFF, c.allocate()));
        break;
    }
    case TX_READ_UNCOMMITTED: {
        c.setTxIsolation(Isolations.READ_UNCOMMITTED);
        c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        break;
    }
    case TX_READ_COMMITTED: {
        c.setTxIsolation(Isolations.READ_COMMITTED);
        c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        break;
    }
    case TX_REPEATED_READ: {
        c.setTxIsolation(Isolations.REPEATED_READ);
        c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        break;
    }
    case TX_SERIALIZABLE: {
        c.setTxIsolation(Isolations.SERIALIZABLE);
        c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        break;
    }
    case NAMES:
        String charset = stmt.substring(rs >>> 8).trim();
        if (c.setCharset(charset)) {
            c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
        } else {
            c.writeErrMessage(ErrorCode.ER_UNKNOWN_CHARACTER_SET, "Unknown charset '" + charset + "'");
        }
        break;
    case CHARACTER_SET_CLIENT:
    case CHARACTER_SET_CONNECTION:
    case CHARACTER_SET_RESULTS:
        CharacterSet.response(stmt, c, rs);
        break;
    default:
        StringBuilder s = new StringBuilder();
        logger.warn(s.append(c).append(stmt).append(" is not executed").toString());
        c.write(c.writeToBuffer(OkPacket.OK, c.allocate()));
    }
}
 
開發者ID:alibaba,項目名稱:cobar,代碼行數:58,代碼來源:SetHandler.java

示例7: rowEofResponse

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
@Override
public void rowEofResponse(byte[] eof, MySQLConnection conn) {
    conn.setRunning(false);
    ServerConnection source = session.getSource();
    RouteResultsetNode node = null;
    Object attachment = conn.getAttachment();
    if (attachment instanceof RouteResultsetNode) {
        node = (RouteResultsetNode) attachment;
        conn.recordSql(source.getHost(), source.getSchema(), node.getStatement());
    } else {
        LOGGER.warn(new StringBuilder().append("back-end conn: ")
                                       .append(conn)
                                       .append(" has wrong attachment: ")
                                       .append(attachment)
                                       .append(", for front-end conn: ")
                                       .append(source));
    }
    if (source.isAutocommit()) {
        if (node != null) {
            conn = session.removeTarget(node);
            if (conn != null) {
                if (isFail.get() || session.closed()) {
                    conn.quit();
                } else {
                    conn.release();
                }
            }
        }
    }
    if (decrementCountBy(1)) {
        if (isFail.get()) {
            notifyError();
            recycleResources();
            return;
        }
        try {
            if (source.isAutocommit()) {
                session.releaseConnections();
            }
            eof[3] = ++packetId;

            source.write(source.writeToBuffer(eof, buffer));
        } catch (Exception e) {
            LOGGER.warn("exception happens in success notification: " + session.getSource(), e);
        }
    }
}
 
開發者ID:alibaba,項目名稱:cobar,代碼行數:48,代碼來源:MultiNodeQueryHandler.java

示例8: handleRowData

import com.alibaba.cobar.server.ServerConnection; //導入方法依賴的package包/類
/**
 * 處理RowData數據
 */
private void handleRowData(final RouteResultsetNode rrn, Channel c, BlockingSession ss) throws IOException {
    final ServerConnection source = ss.getSource();
    BinaryPacket bin = null;
    int size = 0;
    for (;;) {
        bin = ((MySQLChannel) c).receive();
        switch (bin.data[0]) {
        case ErrorPacket.FIELD_COUNT:
            c.setRunning(false);
            handleFailure(ss, rrn, new BinaryErrInfo(((MySQLChannel) c), bin, source, rrn));
            return;
        case EOFPacket.FIELD_COUNT:
            c.setRunning(false);
            if (source.isAutocommit()) {
                c = ss.getTarget().remove(rrn);
                if (c != null) {
                    if (isFail.get() || source.isClosed()) {
                        /**
                         * this {@link Channel} might be closed by other
                         * thread in this condition, so that do not release
                         * this channel
                         */
                        c.close();
                    } else {
                        c.release();
                    }
                }
            }
            handleSuccessEOF(ss, bin);
            return;
        default:
            bin.packetId = ++packetId;// ROWS
            buffer = bin.write(buffer, source);
            size += bin.packetLength;
            if (size > RECEIVE_CHUNK_SIZE) {
                handleNext(rrn, c, ss);
                return;
            }
        }
    }
}
 
開發者ID:alibaba,項目名稱:cobar,代碼行數:45,代碼來源:MultiNodeExecutor.java


注:本文中的com.alibaba.cobar.server.ServerConnection.isAutocommit方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。