blob: 7813093f2a345da4c05b9f3079539acd614e4396 [file] [log] [blame]
Paul Stewart5f06a0e2012-12-20 11:11:33 -08001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Paul Stewart25379f12011-05-26 06:41:38 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Paul Stewartf0aae102011-10-19 12:11:44 -07005#ifndef SHILL_GLIB_IO_INPUT_HANDLER_
6#define SHILL_GLIB_IO_INPUT_HANDLER_
Paul Stewart25379f12011-05-26 06:41:38 -07007
8#include <stdio.h>
9#include <glib.h>
10
Eric Shienbrood3e20a232012-02-16 11:35:56 -050011#include <base/callback.h>
Paul Stewart25379f12011-05-26 06:41:38 -070012
13#include "shill/io_handler.h"
14
15namespace shill {
16
Paul Stewart26b327e2011-10-19 11:38:09 -070017class GlibIOInputHandler : public IOHandler {
Paul Stewart25379f12011-05-26 06:41:38 -070018 public:
Paul Stewart5f06a0e2012-12-20 11:11:33 -080019 GlibIOInputHandler(int fd,
20 const InputCallback &input_callback,
21 const ErrorCallback &error_callback);
Paul Stewart26b327e2011-10-19 11:38:09 -070022 ~GlibIOInputHandler();
Paul Stewartf0aae102011-10-19 12:11:44 -070023
24 virtual void Start();
25 virtual void Stop();
Paul Stewart26b327e2011-10-19 11:38:09 -070026
Paul Stewart5f06a0e2012-12-20 11:11:33 -080027 const InputCallback &input_callback() { return input_callback_; }
28 const ErrorCallback &error_callback() { return error_callback_; }
Eric Shienbrood3e20a232012-02-16 11:35:56 -050029
Paul Stewart26b327e2011-10-19 11:38:09 -070030 private:
Paul Stewart25379f12011-05-26 06:41:38 -070031 GIOChannel *channel_;
Paul Stewart5f06a0e2012-12-20 11:11:33 -080032 InputCallback input_callback_;
33 ErrorCallback error_callback_;
Paul Stewart25379f12011-05-26 06:41:38 -070034 guint source_id_;
Paul Stewart25379f12011-05-26 06:41:38 -070035};
36
37
38} // namespace shill
39
Paul Stewartf0aae102011-10-19 12:11:44 -070040#endif // SHILL_GLIB_IO_INPUT_HANDLER_