1/*
2 *  Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS.  All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_BASE_ASYNCFILE_H__
12#define WEBRTC_BASE_ASYNCFILE_H__
13
14#include "webrtc/base/sigslot.h"
15
16namespace rtc {
17
18// Provides the ability to perform file I/O asynchronously.
19// TODO: Create a common base class with AsyncSocket.
20class AsyncFile {
21 public:
22  AsyncFile();
23  virtual ~AsyncFile();
24
25  // Determines whether the file will receive read events.
26  virtual bool readable() = 0;
27  virtual void set_readable(bool value) = 0;
28
29  // Determines whether the file will receive write events.
30  virtual bool writable() = 0;
31  virtual void set_writable(bool value) = 0;
32
33  sigslot::signal1<AsyncFile*> SignalReadEvent;
34  sigslot::signal1<AsyncFile*> SignalWriteEvent;
35  sigslot::signal2<AsyncFile*, int> SignalCloseEvent;
36};
37
38}  // namespace rtc
39
40#endif  // WEBRTC_BASE_ASYNCFILE_H__
41