| 203 | } |
| 204 | |
| 205 | uint64_t DecodedLengthBinary(const char * buf, int len, int & len_field_size) { |
| 206 | uint8_t first_bit = (uint8_t)(buf[0]); |
| 207 | uint64_t package_len = 0; |
| 208 | switch (first_bit) { |
| 209 | case 251: { |
| 210 | package_len = 0; |
| 211 | len_field_size = 1; |
| 212 | break; |
| 213 | } |
| 214 | case 252: { |
| 215 | if (len < 3) { |
| 216 | package_len = -1; |
| 217 | } else { |
| 218 | memcpy(&package_len, buf + 1, sizeof(char) * 2); |
| 219 | len_field_size = 3; |
| 220 | } |
| 221 | break; |
| 222 | } |
| 223 | case 253: { |
| 224 | if (len < 4) { |
| 225 | package_len = -1; |
| 226 | } else { |
| 227 | memcpy(&package_len, buf + 1, sizeof(char) * 3); |
| 228 | len_field_size = 4; |
| 229 | } |
| 230 | break; |
| 231 | } |
| 232 | case 254: { |
| 233 | if (len < 9) { |
| 234 | package_len = -1; |
| 235 | } else { |
| 236 | memcpy(&package_len, buf + 1, sizeof(char) * 8); |
| 237 | len_field_size = 9; |
| 238 | } |
| 239 | break; |
| 240 | } |
| 241 | default: |
| 242 | package_len = first_bit; |
| 243 | len_field_size = 1; |
| 244 | break; |
| 245 | } |
| 246 | return package_len; |
| 247 | } |
| 248 | |
| 249 | std::string UIntToStr(uint32_t i) { |
| 250 | char buf[16]; |
no outgoing calls
no test coverage detected