MCPcopy Create free account
hub / github.com/ceph/ceph / do_write_request

Method do_write_request

src/test/msgr/test_async_networkstack.cc:861–901  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

859 }
860
861 void do_write_request() {
862 if (dead)
863 return ;
864
865 while (!buffers.empty()) {
866 bufferlist bl;
867 auto it = buffers.begin();
868 for (size_t i = 0; i < buffers.size(); ++i) {
869 bl.push_back(bufferptr((char*)it->data(), it->size()));
870 ++it;
871 }
872
873 ssize_t r = socket.send(bl, false);
874 std::cerr << " server " << this << " send " << r << std::endl;
875 if (r == 0)
876 break;
877 ASSERT_TRUE(r >= 0);
878 while (r > 0) {
879 ASSERT_TRUE(!buffers.empty());
880 string &buffer = buffers.front();
881 if (r >= (int)buffer.size()) {
882 r -= (int)buffer.size();
883 buffers.pop_front();
884 } else {
885 std::cerr << " server " << this << " sent " << r << std::endl;
886 buffer = buffer.substr(r, buffer.size());
887 break;
888 }
889 }
890 }
891 if (buffers.empty()) {
892 if (write_enabled) {
893 center->delete_file_event(socket.fd(), EVENT_WRITABLE);
894 write_enabled = false;
895 }
896 } else if (!write_enabled) {
897 ASSERT_EQ(0, center->create_file_event(
898 socket.fd(), EVENT_WRITABLE, &write_ctxt));
899 write_enabled = true;
900 }
901 }
902
903 bool finish() {
904 return dead;

Callers

nothing calls this directly

Calls 13

substrMethod · 0.80
delete_file_eventMethod · 0.80
create_file_eventMethod · 0.80
bufferptrClass · 0.50
emptyMethod · 0.45
beginMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45
dataMethod · 0.45
sendMethod · 0.45
frontMethod · 0.45
pop_frontMethod · 0.45

Tested by

no test coverage detected