blob: dd467668802cd6c2a4c01c59d723b6159d81f41c [file] [log] [blame]
henrike@webrtc.orgf7795df2014-05-13 18:00:26 +00001/*
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__