blob: 7812a5fd88fc837a7c7b05a9565d55931b6b50ea [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_SMB_CLIENT_TEMP_FILE_MANAGER_H_
#define CHROME_BROWSER_CHROMEOS_SMB_CLIENT_TEMP_FILE_MANAGER_H_
#include <vector>
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/files/scoped_temp_dir.h"
namespace chromeos {
namespace smb_client {
// Helper class to handle construction and deletion of a temporary directory
// containing temporary files.
class TempFileManager {
public:
TempFileManager();
~TempFileManager();
// Returns the path of the temporary directory.
const base::FilePath& GetTempDirectoryPath() const;
// Creates a temporary file in temp_dir_ path and writes in |data|. Before
// returning, this seeks to the beginning of the file in preparation for
// reading. This also calls unlink() on the created file. Returns a file
// descriptor which will be invalid on failure.
base::ScopedFD CreateTempFile(const std::vector<uint8_t>& data);
private:
// Creates a temporary file in temp_dir_ path. This also calls unlink() on the
// created file. Returns a file descriptor which will be invalid on failure.
base::ScopedFD CreateTempFile();
// Scoped class that handles deletion of the temporary directory.
base::ScopedTempDir temp_dir_;
DISALLOW_COPY_AND_ASSIGN(TempFileManager);
};
} // namespace smb_client
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_SMB_CLIENT_TEMP_FILE_MANAGER_H_