blob: f7a6ab4c842ae0f169bd77445a982a80cd166b3e [file] [log] [blame]
henrike@webrtc.orgf0488722014-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
Henrik Kjellanderc0362762017-06-29 08:03:04 +020011#ifndef WEBRTC_RTC_BASE_WIN32FILESYSTEM_H_
12#define WEBRTC_RTC_BASE_WIN32FILESYSTEM_H_
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000013
Henrik Kjellanderec78f1c2017-06-29 07:52:50 +020014#include "fileutils.h"
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000015
Henrik Kjellanderec78f1c2017-06-29 07:52:50 +020016namespace rtc {
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000017
Henrik Kjellanderec78f1c2017-06-29 07:52:50 +020018class Win32Filesystem : public FilesystemInterface {
19 public:
20 // This will attempt to delete the path located at filename.
21 // If the path points to a folder, it will fail with VERIFY
22 bool DeleteFile(const Pathname& filename) override;
23
24 // Creates a directory. This will call itself recursively to create /foo/bar even if
25 // /foo does not exist.
26 // Returns TRUE if function succeeds
27 bool CreateFolder(const Pathname& pathname) override;
28
Henrik Kjellanderc0362762017-06-29 08:03:04 +020029 // This moves a file from old_path to new_path. If the new path is on a
Henrik Kjellanderec78f1c2017-06-29 07:52:50 +020030 // different volume than the old, it will attempt to copy and then delete
31 // the folder
32 // Returns true if the file is successfully moved
33 bool MoveFile(const Pathname& old_path, const Pathname& new_path) override;
34
35 // Returns true if a pathname is a directory
36 bool IsFolder(const Pathname& pathname) override;
37
38 // Returns true if a file exists at path
39 bool IsFile(const Pathname& path) override;
40
41 // Returns true if pathname refers to no filesystem object, every parent
42 // directory either exists, or is also absent.
43 bool IsAbsent(const Pathname& pathname) override;
44
45 // All of the following functions set pathname and return true if successful.
46 // Returned paths always include a trailing backslash.
47 // If create is true, the path will be recursively created.
48 // If append is non-null, it will be appended (and possibly created).
49
50 std::string TempFilename(const Pathname& dir,
51 const std::string& prefix) override;
52
53 bool GetFileSize(const Pathname& path, size_t* size) override;
54
55 // A folder appropriate for storing temporary files (Contents are
56 // automatically deleted when the program exists)
57 bool GetTemporaryFolder(Pathname& path,
58 bool create,
59 const std::string* append) override;
60};
61
62} // namespace rtc
63
Henrik Kjellanderc0362762017-06-29 08:03:04 +020064#endif // WEBRTC_RTC_BASE_WIN32FILESYSTEM_H_