Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- читаю данные с сокета
- std::optional<std::string> GetTaskFromSocket(tcp::socket &socket)
- {
- net::streambuf buffer;
- boost::system::error_code ec;
- auto sym_read = net::read_until(socket, buffer, '\0', ec);
- if (buffer.size() == 0)
- {
- return std::nullopt;
- }
- const char *data = boost::asio::buffer_cast<const char *>(buffer.data());
- std::size_t size = buffer.size();
- return std::string(data, size);
- }
- //Обработка сессии
- void HandleSession(tcp::socket socket)
- {
- std::vector<task> actions;
- while (auto action = Service::GetTaskFromSocket(socket))
- {
- std::cout << "->BEGIN___________________________________________<-\n";
- std::cout << "->" << *action << "<-\n";
- std::cout << "->END___________________________________________<-\n";
- }
- };
- ///@brief Сериализатор Unordered_Map
- template <typename T1, typename T2>
- std::string SerializeUmap(std::unordered_map<T1, T2> object)
- {
- std::ostringstream strm;
- boost::archive::text_oarchive arch(strm);
- arch << object;
- strm << '\0';
- return strm.str();
- }
- ---------------------------------------------------------------------------------------------------
- Сериализатор принудительно закачивает \0 В конец каждой сериализации
- ->BEGIN___________________________________________<-
- ->22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST<-
- ->END___________________________________________<-
- Сериализация начинается с "22 serialization::archive"
- ->BEGIN___________________________________________<-
- ->22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 20 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST22 serialization::archive 2<-
- ^^^^^^^^^--------ТУТ
- ->END___________________________________________<-
- ->BEGIN___________________________________________<-
- VVVVVV А должно быть тут
- -> 0 0 0 2 13 0 0 0 9 DIRECTION 16 DIRECTION_SERVER 6 ACTION 9 ROOM_LIST<-
- ->END___________________________________________<-
- Рвет даннные просто по частям.... , хотя ему принудительно в конце сериализации добавляю \0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement