1515
1616#include " WiresharkSyncLayer.h"
1717
18+ #include " WiresharkField.h"
1819#include " WiresharkGenerator.h"
1920
21+ #include " commsdsl/gen/strings.h"
22+ #include " commsdsl/gen/util.h"
23+
24+ #include < cassert>
25+
26+ namespace strings = commsdsl::gen::strings;
27+ namespace util = commsdsl::gen::util;
28+
2029namespace commsdsl2wireshark
2130{
2231
@@ -26,4 +35,44 @@ WiresharkSyncLayer::WiresharkSyncLayer(WiresharkGenerator& generator, ParseLayer
2635{
2736}
2837
38+ std::string WiresharkSyncLayer::wiresharkDissectBodyImpl () const
39+ {
40+ auto parseObj = genSyncLayerParseObj ();
41+ if (parseObj.parseIsAfterPayload ()) {
42+ return wiresharkSuffixDissectCodeInternal ();
43+ }
44+
45+ static const std::string Templ =
46+ " #^#FIELD#$#\n "
47+ " #^#OFFSET#$# = #^#NEXT_OFFSET#$#\n "
48+ " #^#NEXT#$#\n "
49+ ;
50+
51+ util::GenReplacementMap repl = {
52+ {" FIELD" , wiresharkDissectFieldCodeInternal ()},
53+ {" NEXT" , wiresharkNextFuncCode ()},
54+ {" OFFSET" , WiresharkField::wiresharkOffsetStr ()},
55+ {" NEXT_OFFSET" , WiresharkField::wiresharkNextOffsetStr ()},
56+ };
57+
58+ return util::genProcessTemplate (Templ, repl);
59+ }
60+
61+ std::string WiresharkSyncLayer::wiresharkSuffixDissectCodeInternal () const
62+ {
63+ // TODO
64+ return " -- TODO: implement sync suffix" ;
65+ }
66+
67+ std::string WiresharkSyncLayer::wiresharkDissectFieldCodeInternal () const
68+ {
69+ auto parseObj = genSyncLayerParseObj ();
70+ if (!parseObj.parseSeekField ()) {
71+ return WiresharkLayer::wiresharkDissectFieldCode ();
72+ }
73+
74+ // TODO
75+ return " -- TODO: implement seeked sync suffix" ;
76+ }
77+
2978} // namespace commsdsl2wireshark
0 commit comments