Search in sources :

Example 11 with NIOProcessor

use of com.alibaba.cobar.net.NIOProcessor in project cobar by alibaba.

the class ShowBackend method execute.

public static void execute(ManagerConnection c) {
    ByteBuffer buffer = c.allocate();
    buffer = header.write(buffer, c);
    for (FieldPacket field : fields) {
        buffer = field.write(buffer, c);
    }
    buffer = eof.write(buffer, c);
    byte packetId = eof.packetId;
    String charset = c.getCharset();
    for (NIOProcessor p : CobarServer.getInstance().getProcessors()) {
        for (BackendConnection bc : p.getBackends().values()) {
            if (bc != null) {
                RowDataPacket row = getRow(bc, charset);
                row.packetId = ++packetId;
                buffer = row.write(buffer, c);
            }
        }
    }
    EOFPacket lastEof = new EOFPacket();
    lastEof.packetId = ++packetId;
    buffer = lastEof.write(buffer, c);
    c.write(buffer);
}
Also used : BackendConnection(com.alibaba.cobar.net.BackendConnection) RowDataPacket(com.alibaba.cobar.net.mysql.RowDataPacket) EOFPacket(com.alibaba.cobar.net.mysql.EOFPacket) NIOProcessor(com.alibaba.cobar.net.NIOProcessor) ByteBuffer(java.nio.ByteBuffer) FieldPacket(com.alibaba.cobar.net.mysql.FieldPacket)

Example 12 with NIOProcessor

use of com.alibaba.cobar.net.NIOProcessor in project cobar by alibaba.

the class KillQueryHandler method handle.

public static void handle(String stmt, int offset, final ServerConnection c) {
    String id = stmt.substring(offset).trim();
    if (StringUtil.isEmpty(id)) {
        c.writeErrMessage(ErrorCode.ER_NO_SUCH_THREAD, "NULL connection id");
    } else {
        // get value
        long value = 0;
        try {
            value = Long.parseLong(id);
        } catch (NumberFormatException e) {
            c.writeErrMessage(ErrorCode.ER_NO_SUCH_THREAD, "Invalid connection id:" + id);
            return;
        }
        // kill query itself
        if (value == c.getId()) {
            c.cancel(null);
            return;
        }
        // get the connection and kill query
        FrontendConnection fc = null;
        NIOProcessor[] processors = CobarServer.getInstance().getProcessors();
        for (NIOProcessor p : processors) {
            if ((fc = p.getFrontends().get(value)) != null) {
                break;
            }
        }
        if (fc != null) {
            if (fc instanceof ServerConnection) {
                ((ServerConnection) fc).cancel(c);
            } else {
                c.writeErrMessage(ErrorCode.ER_UNKNOWN_COM_ERROR, "Unknown command");
            }
        } else {
            c.writeErrMessage(ErrorCode.ER_NO_SUCH_THREAD, "Unknown connection id:" + id);
        }
    }
}
Also used : FrontendConnection(com.alibaba.cobar.net.FrontendConnection) ServerConnection(com.alibaba.cobar.server.ServerConnection) NIOProcessor(com.alibaba.cobar.net.NIOProcessor)

Aggregations

NIOProcessor (com.alibaba.cobar.net.NIOProcessor)12 EOFPacket (com.alibaba.cobar.net.mysql.EOFPacket)6 FieldPacket (com.alibaba.cobar.net.mysql.FieldPacket)6 RowDataPacket (com.alibaba.cobar.net.mysql.RowDataPacket)6 ByteBuffer (java.nio.ByteBuffer)6 FrontendConnection (com.alibaba.cobar.net.FrontendConnection)5 NIOAcceptor (com.alibaba.cobar.net.NIOAcceptor)2 CobarServer (com.alibaba.cobar.CobarServer)1 SystemConfig (com.alibaba.cobar.config.model.SystemConfig)1 ManagerConnectionFactory (com.alibaba.cobar.manager.ManagerConnectionFactory)1 MySQLDataNode (com.alibaba.cobar.mysql.MySQLDataNode)1 BackendConnection (com.alibaba.cobar.net.BackendConnection)1 NIOConnector (com.alibaba.cobar.net.NIOConnector)1 ServerConnection (com.alibaba.cobar.server.ServerConnection)1 ServerConnectionFactory (com.alibaba.cobar.server.ServerConnectionFactory)1 NameableExecutor (com.alibaba.cobar.util.NameableExecutor)1 ArrayList (java.util.ArrayList)1 LinkedList (java.util.LinkedList)1 Timer (java.util.Timer)1 TimerTask (java.util.TimerTask)1