// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "shill/net/rtnl_listener.h"

#include "shill/net/rtnl_handler.h"

using base::Callback;

namespace shill {

RTNLListener::RTNLListener(int listen_flags,
                           const Callback<void(const RTNLMessage&)>& callback)
    : RTNLListener{listen_flags, callback, RTNLHandler::GetInstance()} {}

RTNLListener::RTNLListener(int listen_flags,
                           const Callback<void(const RTNLMessage&)>& callback,
                           RTNLHandler* rtnl_handler)
    : listen_flags_(listen_flags),
      callback_(callback),
      rtnl_handler_(rtnl_handler) {
  rtnl_handler_->AddListener(this);
}

RTNLListener::~RTNLListener() {
  rtnl_handler_->RemoveListener(this);
}

void RTNLListener::NotifyEvent(int type, const RTNLMessage& msg) const {
  if (type & listen_flags_)
    callback_.Run(msg);
}

}  // namespace shill
