All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tech.guyi.component.channel.MessageChannel Maven / Gradle / Ivy

package tech.guyi.component.channel;

import io.netty.channel.EventLoopGroup;

import java.net.InetSocketAddress;
import java.util.Map;
import java.util.Optional;

/**
 * 消息管道抽象
 * @author guyi
 * @version 2021/1/12 12:57
 */
public interface MessageChannel {

    /**
     * 获取配置项的值
     * @param key 键
     * @param  值类型
     * @return 值
     */
    default  Optional getOption(MessageChannelOption key){
        return Optional.ofNullable(this.options().get(key)).map(key.getCast());
    }

    /**
     * 获取管道配置
     * @return 管道配置
     */
    Map, Object> options();

    /**
     * 批量管道配置
     * @param options 管道集合
     * @return 当前管道
     */
    default MessageChannel options(Map, Object> options){
        options.forEach(this::option);
        return this;
    }

    /**
     * 管道配置
     * @param key 键
     * @param value 值
     * @param  值类型
     * @return 当前管道
     */
     MessageChannel option(MessageChannelOption key, T value);

    /**
     * 监听消息
     * @param address 监听地址及端口
     */
    void listen(InetSocketAddress address);

    /**
     * 监听消息
     * @param address 监听地址及端口
     * @param group 线程组
     */
    void listen(InetSocketAddress address, EventLoopGroup group);

    /**
     * 发布消息
     * @param target 目标
     * @param bytes 消息内容
     */
    void publish(InetSocketAddress target, byte[] bytes);

    /**
     * 

发布消息

*

当为UDP管道时表示广播消息

*

当为TCP管道时表示给所有客户端发送消息

* @param bytes 消息内容 */ void publish(byte[] bytes); /** * 关闭管道 */ void close(); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy