/*
* Copyright 2013 The Netty Project
*
* The Netty Project licenses this file to you under the Apache License, version
* 2.0 (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.jboss.aerogear.io.netty.handler.codec.sockjs.protocol;
import static io.netty.buffer.Unpooled.unreleasableBuffer;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.DefaultByteBufHolder;
import io.netty.buffer.Unpooled;
/**
* A PreludeFrame the first message sent by the
* <a href="http://sockjs.github.io/sockjs-protocol/sockjs-protocol-0.3.3.html#section-85">xhr-streaming</a> protocol.
*/
public class PreludeFrame extends DefaultByteBufHolder implements Frame {
static final int CONTENT_SIZE = 2048;
private static final ByteBuf PRELUDE_FRAME = unreleasableBuffer(generateContent());
public PreludeFrame() {
super(PRELUDE_FRAME.duplicate());
}
public static ByteBuf generateContent() {
final ByteBuf buf = Unpooled.buffer(CONTENT_SIZE);
for (int i = 0; i < CONTENT_SIZE; i++) {
buf.writeByte('h');
}
return buf;
}
@Override
public PreludeFrame copy() {
return new PreludeFrame();
}
@Override
public PreludeFrame duplicate() {
return new PreludeFrame();
}
@Override
public PreludeFrame retain() {
PRELUDE_FRAME.retain();
return this;
}
@Override
public PreludeFrame retain(int increment) {
PRELUDE_FRAME.retain(increment);
return this;
}
}