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 
16 namespace rtc {
17 
18 // Provides the ability to perform file I/O asynchronously.
19 // TODO: Create a common base class with AsyncSocket.
20 class 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