diff options
Diffstat (limited to 'src/org/gnunet/construct/parsers/SequenceParser.java')
-rw-r--r-- | src/org/gnunet/construct/parsers/SequenceParser.java | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/org/gnunet/construct/parsers/SequenceParser.java b/src/org/gnunet/construct/parsers/SequenceParser.java index 7d35cc4..f472533 100644 --- a/src/org/gnunet/construct/parsers/SequenceParser.java +++ b/src/org/gnunet/construct/parsers/SequenceParser.java | |||
@@ -21,6 +21,7 @@ | |||
21 | package org.gnunet.construct.parsers; | 21 | package org.gnunet.construct.parsers; |
22 | 22 | ||
23 | import org.gnunet.construct.Message; | 23 | import org.gnunet.construct.Message; |
24 | import org.gnunet.construct.ReflectUtil; | ||
24 | 25 | ||
25 | import java.lang.reflect.Field; | 26 | import java.lang.reflect.Field; |
26 | import java.nio.ByteBuffer; | 27 | import java.nio.ByteBuffer; |
@@ -58,7 +59,6 @@ public class SequenceParser implements Parser { | |||
58 | Message frameObj, final Message dst, List<Field> frameSizePath) { | 59 | Message frameObj, final Message dst, List<Field> frameSizePath) { |
59 | int size = 0; | 60 | int size = 0; |
60 | for (final Parser p : childParsers) { | 61 | for (final Parser p : childParsers) { |
61 | List<Field> path; | ||
62 | size += p.parse(srcBuf, frameOffset, frameObj, dst, | 62 | size += p.parse(srcBuf, frameOffset, frameObj, dst, |
63 | frameSizePath == null ? myFrameSizePath : frameSizePath); | 63 | frameSizePath == null ? myFrameSizePath : frameSizePath); |
64 | } | 64 | } |
@@ -76,6 +76,11 @@ public class SequenceParser implements Parser { | |||
76 | 76 | ||
77 | @Override | 77 | @Override |
78 | public void patch(Message m, int frameSize, List<Field> frameSizePath, Message frameObj) { | 78 | public void patch(Message m, int frameSize, List<Field> frameSizePath, Message frameObj) { |
79 | // todo: this should be optimized / only be done by the topmost sequence parse => introduce a boolean parameter | ||
80 | if (myFrameSizePath != null) { | ||
81 | ReflectUtil.justSetInt(frameObj, myFrameSizePath, frameSize); | ||
82 | } | ||
83 | |||
79 | for (final Parser p : childParsers) { | 84 | for (final Parser p : childParsers) { |
80 | p.patch(m, frameSize, frameSizePath == null ? myFrameSizePath : frameSizePath, frameObj); | 85 | p.patch(m, frameSize, frameSizePath == null ? myFrameSizePath : frameSizePath, frameObj); |
81 | } | 86 | } |