fbzmq/async/StopEventLoopSignalHandler.h (16 lines of code) (raw):
/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
#pragma once
#include <fbzmq/async/AsyncSignalHandler.h>
namespace fbzmq {
/**
 * A commom signal handler which stops the underlying zmq event loop upon signal
 * catching for graceful exit. Use AsyncSignalHandler directly if you intend to
 * do more.
 */
class StopEventLoopSignalHandler final : public AsyncSignalHandler {
 public:
  explicit StopEventLoopSignalHandler(ZmqEventLoop* evl)
      : AsyncSignalHandler(evl) {}
 private:
  void
  signalReceived(int sig) noexcept override {
    LOG(INFO) << "Received signal: " << sig << ". Stopping event loop ...";
    auto evl = getZmqEventLoop();
    evl->stop();
  }
};
} // namespace fbzmq