blob: 33947311f0c56c5fbbd7f4b54f747cd3e19f5961 [file] [log] [blame]
Elliott Hughes76160052012-12-12 16:31:20 -08001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Brian Carlstromfc0e3212013-07-17 14:40:12 -070017#ifndef ART_RUNTIME_BASE_UNIX_FILE_NULL_FILE_H_
18#define ART_RUNTIME_BASE_UNIX_FILE_NULL_FILE_H_
Elliott Hughes76160052012-12-12 16:31:20 -080019
20#include "base/unix_file/random_access_file.h"
21#include "base/macros.h"
22
23namespace unix_file {
24
25// A RandomAccessFile implementation equivalent to /dev/null. Writes are
26// discarded, and there's no data to be read. Callers could use FdFile in
27// conjunction with /dev/null, but that's not portable and costs a file
28// descriptor. NullFile is "free".
29//
30// Thread safe.
31class NullFile : public RandomAccessFile {
32 public:
33 NullFile();
34 virtual ~NullFile();
35
36 // RandomAccessFile API.
37 virtual int Close();
38 virtual int Flush();
39 virtual int64_t Read(char* buf, int64_t byte_count, int64_t offset) const;
40 virtual int SetLength(int64_t new_length);
41 virtual int64_t GetLength() const;
42 virtual int64_t Write(const char* buf, int64_t byte_count, int64_t offset);
43
44 private:
45 DISALLOW_COPY_AND_ASSIGN(NullFile);
46};
47
48} // namespace unix_file
49
Brian Carlstromfc0e3212013-07-17 14:40:12 -070050#endif // ART_RUNTIME_BASE_UNIX_FILE_NULL_FILE_H_