| 713 | } |
| 714 | |
| 715 | bool ReadMetaFromStream(std::ifstream& ifs, std::string* key, std::string* value) { |
| 716 | uint32_t key_size = 0, value_size = 0; |
| 717 | ifs.read((char*)&key_size, sizeof(key_size)); |
| 718 | if (ifs.eof() && ifs.gcount() == 0) { |
| 719 | key->clear(); |
| 720 | value->clear(); |
| 721 | return true; |
| 722 | } |
| 723 | key->resize(key_size); |
| 724 | ifs.read((char*)key->data(), key_size); |
| 725 | if (ifs.fail()) { |
| 726 | return false; |
| 727 | } |
| 728 | ifs.read((char*)&value_size, sizeof(value_size)); |
| 729 | if (ifs.fail()) { |
| 730 | return false; |
| 731 | } |
| 732 | value->resize(value_size); |
| 733 | ifs.read((char*)value->data(), value_size); |
| 734 | if (ifs.fail()) { |
| 735 | return false; |
| 736 | } |
| 737 | return true; |
| 738 | } |
| 739 | |
| 740 | int ReadMetaTabletFromFile(const std::string& filename) { |
| 741 | std::ifstream ifs(filename.c_str(), std::ofstream::binary); |
no test coverage detected