equal
deleted
inserted
replaced
40 |
40 |
41 |
41 |
42 PacketHistory::PacketHistory () |
42 PacketHistory::PacketHistory () |
43 : m_data (0), |
43 : m_data (0), |
44 m_end (0), |
44 m_end (0), |
45 m_n (0) |
45 m_n (0), |
|
46 m_aggregated (false) |
46 { |
47 { |
47 Construct (0, 0); |
48 Construct (0, 0); |
48 } |
49 } |
49 PacketHistory::PacketHistory (uint32_t uid, uint32_t size) |
50 PacketHistory::PacketHistory (uint32_t uid, uint32_t size) |
50 : m_data (0), |
51 : m_data (0), |
51 m_end (0), |
52 m_end (0), |
52 m_n (0) |
53 m_n (0), |
|
54 m_aggregated (false) |
53 { |
55 { |
54 Construct (uid, size); |
56 Construct (uid, size); |
55 } |
57 } |
56 void |
58 void |
57 PacketHistory::Construct (uint32_t uid, uint32_t size) |
59 PacketHistory::Construct (uint32_t uid, uint32_t size) |
64 } |
66 } |
65 } |
67 } |
66 PacketHistory::PacketHistory (PacketHistory const &o) |
68 PacketHistory::PacketHistory (PacketHistory const &o) |
67 : m_data (o.m_data), |
69 : m_data (o.m_data), |
68 m_end (o.m_end), |
70 m_end (o.m_end), |
69 m_n (o.m_n) |
71 m_n (o.m_n), |
|
72 m_aggregated (o.m_aggregated) |
70 { |
73 { |
71 if (m_data != 0) |
74 if (m_data != 0) |
72 { |
75 { |
73 m_data->m_count++; |
76 m_data->m_count++; |
74 } |
77 } |
90 } |
93 } |
91 } |
94 } |
92 m_data = o.m_data; |
95 m_data = o.m_data; |
93 m_end = o.m_end; |
96 m_end = o.m_end; |
94 m_n = o.m_n; |
97 m_n = o.m_n; |
|
98 m_aggregated = o.m_aggregated; |
95 if (m_data != 0) |
99 if (m_data != 0) |
96 { |
100 { |
97 m_data->m_count++; |
101 m_data->m_count++; |
98 } |
102 } |
99 return *this; |
103 return *this; |
362 *pBuffer = *pBuffer - n; |
366 *pBuffer = *pBuffer - n; |
363 return result; |
367 return result; |
364 } |
368 } |
365 |
369 |
366 PacketHistory |
370 PacketHistory |
367 PacketHistory::CreateFragment (uint32_t start, uint32_t length) const |
371 PacketHistory::CreateFragment (uint32_t start, uint32_t end) const |
368 { |
372 { |
369 return *this; |
373 PacketHistory fragment = *this; |
|
374 fragment.RemoveAtStart (start); |
|
375 fragment.RemoveAtEnd (end); |
|
376 return fragment; |
370 } |
377 } |
371 |
378 |
372 void |
379 void |
373 PacketHistory::AddHeader (uint32_t uid, Chunk const & header, uint32_t size) |
380 PacketHistory::AddHeader (uint32_t uid, Chunk const & header, uint32_t size) |
374 { |
381 { |
404 void |
411 void |
405 PacketHistory::AddAtEnd (PacketHistory const&o) |
412 PacketHistory::AddAtEnd (PacketHistory const&o) |
406 { |
413 { |
407 if (m_enable) |
414 if (m_enable) |
408 { |
415 { |
|
416 m_aggregated = true; |
409 uint32_t n = GetUleb128Size (PacketHistory::ADD_AT_END); |
417 uint32_t n = GetUleb128Size (PacketHistory::ADD_AT_END); |
410 n += o.m_end; |
418 n += o.m_end; |
411 Reserve (n); |
419 Reserve (n); |
412 memcpy (&m_data->m_data[m_end], o.m_data->m_data, o.m_end); |
420 memcpy (&m_data->m_data[m_end], o.m_data->m_data, o.m_end); |
413 m_end += o.m_end; |
421 m_end += o.m_end; |
442 AppendOneCommand (PacketHistory::REM_AT_END, end); |
450 AppendOneCommand (PacketHistory::REM_AT_END, end); |
443 } |
451 } |
444 } |
452 } |
445 |
453 |
446 void |
454 void |
447 PacketHistory::PrintDefault (std::ostream &os, Buffer buffer) const |
455 PacketHistory::PrintSimple (std::ostream &os, Buffer buffer) const |
448 { |
456 { |
449 if (!m_enable) |
|
450 { |
|
451 return; |
|
452 } |
|
453 |
|
454 Buffer original = buffer; |
457 Buffer original = buffer; |
455 HeadersToPrint headersToPrint; |
458 HeadersToPrint headersToPrint; |
456 TrailersToPrint trailersToPrint; |
459 TrailersToPrint trailersToPrint; |
457 uint8_t *dataBuffer = &m_data->m_data[m_end] - 1; |
460 uint8_t *dataBuffer = &m_data->m_data[m_end] - 1; |
458 int32_t start = 0; |
461 int32_t start = 0; |
595 Buffer tmp = original; |
598 Buffer tmp = original; |
596 tmp.RemoveAtEnd (offset); |
599 tmp.RemoveAtEnd (offset); |
597 Chunk *chunk = CreateStatic (uid); |
600 Chunk *chunk = CreateStatic (uid); |
598 chunk->Deserialize (tmp.End ()); |
601 chunk->Deserialize (tmp.End ()); |
599 chunk->Print (os); |
602 chunk->Print (os); |
|
603 } |
|
604 } |
|
605 |
|
606 void |
|
607 PacketHistory::PrintComplex (std::ostream &os, Buffer buffer) const |
|
608 { |
|
609 } |
|
610 |
|
611 void |
|
612 PacketHistory::PrintDefault (std::ostream &os, Buffer buffer) const |
|
613 { |
|
614 if (!m_enable) |
|
615 { |
|
616 return; |
|
617 } |
|
618 |
|
619 if (m_aggregated) |
|
620 { |
|
621 PrintComplex (os, buffer); |
|
622 } |
|
623 else |
|
624 { |
|
625 PrintSimple (os, buffer); |
600 } |
626 } |
601 } |
627 } |
602 |
628 |
603 |
629 |
604 Chunk * |
630 Chunk * |