blob: 52d6dcae193b51f8dbcefcfe61ca1c015df4fd5e [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
Peter Qiu8d6b5972014-10-28 15:33:34 -07005#ifndef SHILL_NET_IO_HANDLER_H_
6#define SHILL_NET_IO_HANDLER_H_
Paul Stewart25379f12011-05-26 06:41:38 -07007
Peter Qiu3161caa2014-10-29 09:47:22 -07008#include <string>
9
Peter Qiu37a2b602014-10-27 10:00:43 -070010#include <base/callback.h>
11
Paul Stewart25379f12011-05-26 06:41:38 -070012namespace shill {
13
14struct InputData {
Ben Chancc225ef2014-09-30 13:26:51 -070015 InputData() : buf(nullptr), len(0) {}
Darin Petkov633ac6f2011-07-08 13:56:13 -070016 InputData(unsigned char *in_buf, size_t in_len) : buf(in_buf), len(in_len) {}
17
Paul Stewart25379f12011-05-26 06:41:38 -070018 unsigned char *buf;
19 size_t len;
20};
21
Paul Stewart26b327e2011-10-19 11:38:09 -070022class IOHandler {
Paul Stewart25379f12011-05-26 06:41:38 -070023 public:
Paul Stewartf0aae102011-10-19 12:11:44 -070024 enum ReadyMode {
25 kModeInput,
26 kModeOutput
27 };
28
Peter Qiu3161caa2014-10-29 09:47:22 -070029 typedef base::Callback<void(const std::string &)> ErrorCallback;
Paul Stewart5f06a0e2012-12-20 11:11:33 -080030 typedef base::Callback<void(InputData *)> InputCallback;
31 typedef base::Callback<void(int)> ReadyCallback;
32
Peter Qiu37a2b602014-10-27 10:00:43 -070033 // Data buffer size in bytes.
34 static const int kDataBufferSize = 4096;
35
Paul Stewart26b327e2011-10-19 11:38:09 -070036 IOHandler() {}
37 virtual ~IOHandler() {}
Paul Stewartf0aae102011-10-19 12:11:44 -070038
39 virtual void Start() {}
40 virtual void Stop() {}
Paul Stewart25379f12011-05-26 06:41:38 -070041};
42
43} // namespace shill
44
Peter Qiu8d6b5972014-10-28 15:33:34 -070045#endif // SHILL_NET_IO_HANDLER_H_