#pragma once #include "db/Status.h" #include "MemTableFile.h" #include "VectorSource.h" #include namespace zilliz { namespace milvus { namespace engine { class MemTable { public: using Ptr = std::shared_ptr; using MemTableFileList = std::vector; using MetaPtr = meta::Meta::Ptr; MemTable(const std::string &table_id, const std::shared_ptr &meta, const Options &options); Status Add(VectorSource::Ptr &source, IDNumbers &vector_ids); void GetCurrentMemTableFile(MemTableFile::Ptr &mem_table_file); size_t GetTableFileCount(); Status Serialize(); bool Empty(); const std::string &GetTableId() const; size_t GetCurrentMem(); private: const std::string table_id_; MemTableFileList mem_table_file_list_; MetaPtr meta_; Options options_; std::mutex mutex_; }; //MemTable } // namespace engine } // namespace milvus } // namespace zilliz