RunnableThreadPoolWorkItem.java

// Copyright (c) ZeroC, Inc.

package com.zeroc.Ice;

/**
 * A helper class for thread pool work items that only need to call user callbacks. If an executor
 * is installed in the communicator, the thread pool work item is executed by the executor,
 * otherwise it's executed by a thread pool thread (after promoting a follower thread).
 */
abstract class RunnableThreadPoolWorkItem implements ThreadPoolWorkItem, Runnable {
    public RunnableThreadPoolWorkItem() {}

    public RunnableThreadPoolWorkItem(Connection connection) {
        _connection = connection;
    }

    @Override
    public final void execute(ThreadPoolCurrent current) {
        current.ioCompleted(); // Promote a follower
        current.executeFromThisThread(this);
    }

    public Connection getConnection() {
        return _connection;
    }

    private Connection _connection;
}