下面列出了io.netty.buffer.ByteBufUtil#writeAscii ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Test that the handler correctly supports http error codes i.e. 404 (NOT FOUND) with a
* Content-Length header.
*/
@Test
public void httpErrorsWithContentAreSupported() {
EmbeddedChannel ch = new EmbeddedChannel(new HttpUploadHandler(null, ImmutableList.of()));
ByteArrayInputStream data = new ByteArrayInputStream(new byte[] {1, 2, 3, 4, 5});
ChannelPromise writePromise = ch.newPromise();
ch.writeOneOutbound(new UploadCommand(CACHE_URI, true, "abcdef", data, 5), writePromise);
HttpRequest request = ch.readOutbound();
assertThat(request).isInstanceOf(HttpRequest.class);
HttpChunkedInput content = ch.readOutbound();
assertThat(content).isInstanceOf(HttpChunkedInput.class);
ByteBuf errorMsg = ByteBufUtil.writeAscii(ch.alloc(), "error message");
FullHttpResponse response =
new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND, errorMsg);
response.headers().set(HttpHeaders.CONNECTION, HttpHeaderValues.KEEP_ALIVE);
ch.writeInbound(response);
assertThat(writePromise.isDone()).isTrue();
assertThat(writePromise.cause()).isInstanceOf(HttpException.class);
assertThat(((HttpException) writePromise.cause()).response().status())
.isEqualTo(HttpResponseStatus.NOT_FOUND);
assertThat(ch.isOpen()).isTrue();
}
@Override
protected void encode(ChannelHandlerContext ctx, Socks4CommandRequest msg, ByteBuf out) throws Exception {
out.writeByte(msg.version().byteValue());
out.writeByte(msg.type().byteValue());
out.writeShort(msg.dstPort());
if (NetUtil.isValidIpV4Address(msg.dstAddr())) {
out.writeBytes(NetUtil.createByteArrayFromIpAddressString(msg.dstAddr()));
ByteBufUtil.writeAscii(out, msg.userId());
out.writeByte(0);
} else {
out.writeBytes(IPv4_DOMAIN_MARKER);
ByteBufUtil.writeAscii(out, msg.userId());
out.writeByte(0);
ByteBufUtil.writeAscii(out, msg.dstAddr());
out.writeByte(0);
}
}
/**
* Copied over from {@link DefaultDnsRecordEncoder#encodeName(String, ByteBuf)} as it is not accessible.
*/
private void encodeName(String name, ByteBuf buf) {
if (".".equals(name)) {
// Root domain
buf.writeByte(0);
return;
}
final String[] labels = name.split("\\.");
for (String label : labels) {
final int labelLen = label.length();
if (labelLen == 0) {
// zero-length label means the end of the name.
break;
}
buf.writeByte(labelLen);
ByteBufUtil.writeAscii(buf, label);
}
buf.writeByte(0); // marks end of name field
}
@SuppressFBWarnings("VA_FORMAT_STRING_USES_NEWLINE") // we shouldn't use platform-specific newlines for SMTP
private ByteBuf getBdatRequestWithData(ByteBuf data, boolean isLast) {
String request = String.format("BDAT %d%s\r\n", data.readableBytes(), isLast ? " LAST" : "");
ByteBuf requestBuf = channel.alloc().buffer(request.length());
ByteBufUtil.writeAscii(requestBuf, request);
return channel.alloc().compositeBuffer().addComponents(true, requestBuf, data);
}
@Override
public void onHeadersRead(ChannelHandlerContext ctx, int streamId,
Http2Headers headers, int padding, boolean endOfStream) {
if (endOfStream) {
ByteBuf content = ctx.alloc().buffer();
content.writeBytes(RESPONSE_BYTES.duplicate());
ByteBufUtil.writeAscii(content, " -established");
sendResponse(ctx, streamId, content);
}
}
private static void encodePasswordAuthRequest(Socks5PasswordAuthRequest msg, ByteBuf out) {
out.writeByte(0x01);
final String username = msg.username();
out.writeByte(username.length());
ByteBufUtil.writeAscii(out, username);
final String password = msg.password();
out.writeByte(password.length());
ByteBufUtil.writeAscii(out, password);
}
static void writeFloat(final ByteBuf buffer, final float f) {
if (Float.isNaN(f)) {
ByteBufUtil.writeAscii(buffer, "\"NaN\"");
return;
}
if (Float.isInfinite(f)) {
ByteBufUtil.writeAscii(buffer, (f < 0 ? "\"-Inf\"" : "\"+Inf\""));
return;
}
Floats.writeFloatString(buffer, f);
}
@Override
public DataBuffer write(CharSequence charSequence, Charset charset) {
Assert.notNull(charSequence, "CharSequence must not be null");
Assert.notNull(charset, "Charset must not be null");
if (StandardCharsets.UTF_8.equals(charset)) {
ByteBufUtil.writeUtf8(this.byteBuf, charSequence);
}
else if (StandardCharsets.US_ASCII.equals(charset)) {
ByteBufUtil.writeAscii(this.byteBuf, charSequence);
}
else {
return PooledDataBuffer.super.write(charSequence, charset);
}
return this;
}
@Benchmark
public void writeAsciiString() {
buffer.resetWriterIndex();
ByteBufUtil.writeAscii(buffer, ascii);
}
@Override
public Buffer writeAscii(CharSequence seq) {
ByteBufUtil.writeAscii(buffer, seq);
return this;
}
@Benchmark
public void writeAscii() {
buffer.resetWriterIndex();
ByteBufUtil.writeAscii(buffer, asciiSequence);
}
@Benchmark
public void writeAsciiWrapped() {
wrapped.resetWriterIndex();
ByteBufUtil.writeAscii(wrapped, asciiSequence);
}
@Benchmark
public void writeAsciiString() {
buffer.resetWriterIndex();
ByteBufUtil.writeAscii(buffer, ascii);
}
@Benchmark
public void writeAsciiStringWrapped() {
wrapped.resetWriterIndex();
ByteBufUtil.writeAscii(wrapped, ascii);
}
void write(final ByteBuf buffer) {
ByteBufUtil.writeAscii(buffer, encoded);
}
@Benchmark
public void writeAsciiWrapped() {
wrapped.resetWriterIndex();
ByteBufUtil.writeAscii(wrapped, asciiSequence);
}
static void writeNull(final ByteBuf buffer) {
ByteBufUtil.writeAscii(buffer, "null");
}
@Benchmark
public void writeAsciiStringSliceAbstract() {
slicedAbstractByteBuf.resetWriterIndex();
ByteBufUtil.writeAscii(slicedAbstractByteBuf, ascii);
}
void encode(ByteBuf buffer) {
ByteBufUtil.writeAscii(buffer, name);
}
static void writeLong(final ByteBuf buffer, final long l) {
ByteBufUtil.writeAscii(buffer, Long.toString(l));
}