SaslMessageEncoder.java
/*
* SPDX-FileCopyrightText: 2023-2025 Lucimber UG
* SPDX-License-Identifier: Apache-2.0
*/
package com.lucimber.dbus.netty.sasl;
import com.lucimber.dbus.connection.sasl.SaslMessage;
import com.lucimber.dbus.util.LoggerUtils;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import java.nio.charset.StandardCharsets;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Encodes a SaslMessage into a US-ASCII line terminated with CRLF, as required by the D-Bus SASL
* protocol.
*/
public final class SaslMessageEncoder extends MessageToByteEncoder<SaslMessage> {
private static final Logger LOGGER = LoggerFactory.getLogger(SaslMessageEncoder.class);
@Override
protected void encode(ChannelHandlerContext ctx, SaslMessage msg, ByteBuf out)
throws Exception {
// Write as ASCII followed by CRLF
out.writeCharSequence(msg.toString(), StandardCharsets.US_ASCII);
out.writeByte('\r');
out.writeByte('\n');
LOGGER.debug(LoggerUtils.SASL, "Encoded {}", msg);
}
@Override
public void handlerAdded(ChannelHandlerContext ctx) {
LOGGER.debug(
LoggerUtils.HANDLER_LIFECYCLE,
"Added to pipeline using context name '{}'.",
ctx.name());
}
@Override
public void handlerRemoved(ChannelHandlerContext ctx) {
LOGGER.debug(
LoggerUtils.HANDLER_LIFECYCLE,
"Removed from pipeline using context name '{}'.",
ctx.name());
}
}