| // Copyright 2018 The Chromium OS 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 SMBPROVIDER_FAKE_SAMBA_PROXY_H_ |
| #define SMBPROVIDER_FAKE_SAMBA_PROXY_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| #include <base/memory/weak_ptr.h> |
| |
| #include "smbprovider/fake_samba_interface.h" |
| #include "smbprovider/samba_interface.h" |
| |
| namespace smbprovider { |
| |
| // Proxy for FakeSambaInterface. Allows us to take a unique_ptr to this class |
| // all backed by one FakeSambaInterface. All calls are direct pass throughs to |
| // FakeSambaInterface. |
| class FakeSambaProxy : public SambaInterface { |
| public: |
| explicit FakeSambaProxy(FakeSambaInterface* fake_samba_interface); |
| FakeSambaProxy(const FakeSambaProxy&) = delete; |
| FakeSambaProxy& operator=(const FakeSambaProxy&) = delete; |
| |
| // FakeSambaInterface overrides. |
| int32_t OpenDirectory(const std::string& directory_path, |
| int32_t* dir_id) override; |
| |
| int32_t CloseDirectory(int32_t dir_id) override; |
| |
| int32_t GetDirectoryEntry(int32_t dir_id, |
| const struct smbc_dirent** dirent) override; |
| |
| int32_t GetDirectoryEntryWithMetadata( |
| int32_t dir_id, const struct libsmb_file_info** file_info) override; |
| |
| int32_t GetEntryStatus(const std::string& entry_path, |
| struct stat* stat) override; |
| |
| int32_t OpenFile(const std::string& file_path, |
| int32_t flags, |
| int32_t* file_id) override; |
| |
| int32_t CloseFile(int32_t file_id) override; |
| |
| int32_t ReadFile(int32_t file_id, |
| uint8_t* buffer, |
| size_t buffer_size, |
| size_t* bytes_read) override; |
| |
| int32_t Seek(int32_t file_id, int64_t offset) override; |
| |
| int32_t Unlink(const std::string& file_path) override; |
| |
| int32_t RemoveDirectory(const std::string& dir_path) override; |
| |
| int32_t CreateFile(const std::string& file_path, int32_t* file_id) override; |
| |
| int32_t Truncate(int32_t file_id, size_t size) override; |
| |
| int32_t WriteFile(int32_t file_id, |
| const uint8_t* buffer, |
| size_t buffer_size) override; |
| |
| int32_t CreateDirectory(const std::string& directory_path) override; |
| |
| int32_t MoveEntry(const std::string& source_path, |
| const std::string& target_path) override; |
| |
| int32_t CopyFile(const std::string& source_path, |
| const std::string& target_path) override; |
| |
| int32_t SpliceFile(int32_t source_fd, |
| int32_t target_fd, |
| off_t length, |
| off_t* bytes_written) override; |
| |
| SambaInterfaceId GetSambaInterfaceId() override; |
| |
| WeakPtr AsWeakPtr() override; |
| |
| private: |
| FakeSambaInterface* const fake_samba_interface_; // Not owned. |
| |
| // Every fake samba proxy interface must have its own unique id. |
| static SambaInterfaceId count_; |
| const SambaInterfaceId samba_interface_id_ = ++count_; |
| |
| // Weak pointer factory. Should be the last member. |
| base::WeakPtrFactory<FakeSambaProxy> weak_factory_{this}; |
| }; |
| |
| } // namespace smbprovider |
| |
| #endif // SMBPROVIDER_FAKE_SAMBA_PROXY_H_ |