| 102 | } |
| 103 | |
| 104 | int Buffer::append_record(const Bytes &s){ |
| 105 | // 16 is the maximum length of literal string of s.size() |
| 106 | int size = 16 + s.size() + 1; |
| 107 | while(size > this->space()){ |
| 108 | if(this->grow() == -1){ |
| 109 | return -1; |
| 110 | } |
| 111 | } |
| 112 | |
| 113 | char len[16]; |
| 114 | int num = snprintf(len, sizeof(len), "%d\n", (int)s.size()); |
| 115 | |
| 116 | char *p = this->slot(); |
| 117 | memcpy(p, len, num); |
| 118 | p += num; |
| 119 | |
| 120 | memcpy(p, s.data(), s.size()); |
| 121 | p += s.size(); |
| 122 | |
| 123 | *p = '\n'; |
| 124 | p += 1; |
| 125 | this->size_ += (num + s.size() + 1); |
| 126 | return (num + s.size() + 1); |
| 127 | } |
| 128 | |
| 129 | int Buffer::append(char c){ |
| 130 | while(1 > this->space()){ |