/*
 * Copyright 2015 Nest Labs, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <folly/Executor.h>
#include <folly/Cancellation.h>

namespace folly {

/**
 * An Executor that has a single Cancellation associated with it
 *
 * This is a convenience interface for situations where you want an
 * event loop Executor that has a single Cancellation object
 * associated with it. When shutting down the Executor, the
 * Cancellation object can be used to cancel all pending transactions.
 */
class ExecutorWithCancellation : virtual public Executor {
public:
    /**
     * Replaces the Cancellation object, cancelling the current one.
     *
     * This should be called ONCE, before ever calling
     * getCancellation(). Before setting the new Cancellation, the
     * existing cancellation will be cancelled (thus cancelling all
     * in-flight transactions that referred to that Cancellation
     * object).
     *
     * @param cx the new Cancellation object for the Executor.
     */
    virtual void setCancellation(Cancellation cx) = 0;

    /**
     * Access the Cancellation object
     *
     * This allows the caller to access or create a copy of the
     * Cancellation object.
     *
     * @return the Cancellation object that is used to cancel all
     * transactions for this Executor.
     */
    virtual Cancellation& getCancellation() = 0;
};

} // folly
