Fixing PingPayloadParser with new FrameParser.copyBuffer() method
This commit is contained in:
parent
17a7b12df1
commit
6bbeba9f59
|
@ -34,9 +34,22 @@ public class PingFrame extends ControlFrame
|
|||
return OpCode.PING;
|
||||
}
|
||||
|
||||
public String getPayloadAsString()
|
||||
{
|
||||
if (hasPayload())
|
||||
{
|
||||
ByteBuffer payload = getPayload();
|
||||
return payload.asCharBuffer().toString();
|
||||
}
|
||||
else
|
||||
{
|
||||
return "<n/a>";
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return String.format("%s ping, payload[has=%b, string=%s]",super.toString(),hasPayload(),getPayload().toString());
|
||||
return String.format("%s ping, payload[has=%b, string=%s]",super.toString(),hasPayload(),getPayloadAsString());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,7 +30,9 @@ public class PongFrame extends ControlFrame
|
|||
|
||||
/**
|
||||
* Construct appropriate PongFrame from PingFrame
|
||||
* @param ping the ping frame to base pong from
|
||||
*
|
||||
* @param ping
|
||||
* the ping frame to base pong from
|
||||
*/
|
||||
public PongFrame(PingFrame ping)
|
||||
{
|
||||
|
|
|
@ -54,6 +54,15 @@ public abstract class FrameParser<T extends BaseFrame>
|
|||
this.settings = settings;
|
||||
}
|
||||
|
||||
protected int copyBuffer(ByteBuffer src, ByteBuffer dest, int length)
|
||||
{
|
||||
int amt = Math.min(length,src.remaining());
|
||||
byte b[] = new byte[amt];
|
||||
src.get(b,0,amt);
|
||||
dest.put(b,0,amt);
|
||||
return amt;
|
||||
}
|
||||
|
||||
/**
|
||||
* The frame that is being parsed
|
||||
*
|
||||
|
|
|
@ -38,15 +38,10 @@ public class PingPayloadParser extends FrameParser<PingFrame>
|
|||
payload = ByteBuffer.allocate(payloadLength);
|
||||
}
|
||||
|
||||
int size = Math.min(payloadLength,buffer.remaining());
|
||||
int limit = buffer.limit();
|
||||
buffer.limit(buffer.position() + size);
|
||||
ByteBuffer bytes = buffer.slice(); // TODO: make sure reference to subsection is acceptable
|
||||
buffer.limit(limit);
|
||||
payload.put(bytes);
|
||||
copyBuffer(buffer,payload,payloadLength);
|
||||
if (payload.position() >= payloadLength)
|
||||
{
|
||||
frame.setPayload(bytes);
|
||||
frame.setPayload(payload);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public class FrameParseCapture implements Parser.Listener
|
|||
{
|
||||
int count = 0;
|
||||
for(BaseFrame frame: frames) {
|
||||
if (frame.getClass().isInstance(frameType))
|
||||
if (frameType.isInstance(frame))
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue