1 /* 2 * Copyright 2022 The Netty Project 3 * 4 * The Netty Project licenses this file to you under the Apache License, 5 * version 2.0 (the "License"); you may not use this file except in compliance 6 * with the License. You may obtain a copy of the License at: 7 * 8 * https://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 * License for the specific language governing permissions and limitations 14 * under the License. 15 */ 16 package io.netty5.channel; 17 18 import io.netty5.buffer.api.Buffer; 19 20 import java.net.SocketAddress; 21 22 /** 23 * The default {@link AddressedEnvelope} implementation for {@link Buffer} messages. 24 * 25 * @param <A> the type of the recipient and sender addresses. 26 */ 27 public class DefaultBufferAddressedEnvelope<A extends SocketAddress> 28 extends BufferAddressedEnvelope<A, DefaultBufferAddressedEnvelope<A>> { 29 /** 30 * Creates a new instance with the specified {@code message}, {@code recipient} address, and 31 * {@code sender} address. 32 */ 33 public DefaultBufferAddressedEnvelope(Buffer message, A recipient, A sender) { 34 super(message, recipient, sender); 35 } 36 37 /** 38 * Creates a new instance with the specified {@code message} and {@code recipient} address. 39 * The sender address becomes {@code null}. 40 */ 41 public DefaultBufferAddressedEnvelope(Buffer message, A recipient) { 42 super(message, recipient); 43 } 44 45 @Override 46 public DefaultBufferAddressedEnvelope<A> replace(Buffer content) { 47 return new DefaultBufferAddressedEnvelope<>(content, recipient(), sender()); 48 } 49 50 @Override 51 public DefaultBufferAddressedEnvelope<A> touch(Object hint) { 52 content().touch(hint); 53 return this; 54 } 55 }