#pragma once #include #include #include #include namespace DB { class RemoteFileMetadataFactory : private boost::noncopyable { public: using MetadataCreator = std::function; ~RemoteFileMetadataFactory() = default; static RemoteFileMetadataFactory & instance(); IRemoteFileMetadataPtr get(const String & name); void registerRemoteFileMatadata(const String &name, MetadataCreator creator); protected: RemoteFileMetadataFactory() = default; private: std::unordered_map remote_file_metadatas; }; }