Advertisement
avr39ripe

cppFollyIOBufDemo

Mar 14th, 2022
642
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1.    const size_t bufSize{ 20 };
  2.     char* text{ new char[bufSize] };
  3.     memcpy (text, "Hello,World! :)\n", bufSize);
  4.     //auto storage{ folly::IOBuf::create (bufSize) };
  5.     //auto storage{ folly::IOBuf::wrapBuffer(text, bufSize) };
  6.     std::unique_ptr<folly::IOBuf>* storage{ new std::unique_ptr<folly::IOBuf>};
  7.     *storage = folly::IOBuf::takeOwnership (text, bufSize, [](void* ptr, void* ud) { std::cout << "Free owned buffer!\n"; delete[] static_cast<char*>(ptr);  });
  8.  
  9.     //storage->append (bufSize);
  10.     //memcpy (storage->writableData(), "Hello,World! :)\n", bufSize);
  11.     std::cout << (*storage)->length () << ' ' << (*storage)->capacity () << '\n';
  12.     std::cout << "isShared: " << std::boolalpha << (*storage)->isShared () << '\n';
  13.     std::cout << "storage->buffer(): " << reinterpret_cast<const void*>((*storage)->writableData ()) << '\n';
  14.     {
  15.         auto data{ (*storage)->clone () };
  16.         std::cout << data->length () << ' ' << data->capacity () << '\n';
  17.         //data->append (bufSize);
  18.         //std::cout << data->length () << ' ' << data->capacity () << '\n';
  19.         std::cout << "isShared: " << std::boolalpha << data->isShared () << '\n';
  20.         std::cout << "data->buffer(): " << reinterpret_cast<const void*>(data->buffer ()) << '\n';
  21.         std::cout << "data->writableData(): " << reinterpret_cast<const void*>(data->writableData ()) << '\n';
  22.         // MODIFY
  23.         //data->unshare ();
  24.         data->trimStart (2);
  25.         std::cout << "data->buffer(): " << reinterpret_cast<const void*>(data->buffer ()) << '\n';
  26.         std::cout << "data->writableData(): " << reinterpret_cast<const void*>(data->writableData ()) << '\n';
  27.         *(data->writableData()) = 'Z';
  28.  
  29.         //std::cout << "isShared: " << std::boolalpha << data->isShared () << '\n';
  30.         //auto begin{ data->writableData () };
  31.         //auto end{ begin + data->length () };
  32.  
  33.         delete storage;
  34.  
  35.         //memcpy (begin, "Hello,World! :)\n", bufSize);
  36.         std::cout << data->data () << '\n';
  37.     }
  38.     //std::cout << "isShared: " << std::boolalpha << (*storage)->isShared () << '\n';
  39.     //std::cout << (*storage)->data () << '\n';
  40.            
  41.     //for (uint16_t i{ 0 }; begin < end; *(begin++) = static_cast<uint8_t>(i), ++i);
  42.  
  43.  
  44.  
  45.     return 0;
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement