blob: ffffca121260056e5407f0da4f308e83d6bafeae [file] [log] [blame]
// Copyright (c) 2011 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.
#ifndef SHILL_GLIB_IO_READY_HANDLER_
#define SHILL_GLIB_IO_READY_HANDLER_
#include <stdio.h>
#include <glib.h>
#include <base/callback.h>
#include "shill/io_handler.h"
namespace shill {
// This handler is different from the GlibIOInputHandler
// in that we don't read/write from the file handle and
// leave that to the caller. This is useful in accept()ing
// sockets and effort to working with peripheral libraries.
class GlibIOReadyHandler : public IOHandler {
public:
GlibIOReadyHandler(int fd,
IOHandler::ReadyMode mode,
const base::Callback<void(int)> &callback);
~GlibIOReadyHandler();
virtual void Start();
virtual void Stop();
const base::Callback<void(int)> &callback() { return callback_; }
private:
GIOChannel *channel_;
GIOCondition condition_;
const base::Callback<void(int)> callback_;
guint source_id_;
};
} // namespace shill
#endif // SHILL_GLIB_IO_READY_HANDLER_