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

com.iteaj.iot.client.component.SingleTcpClientComponent Maven / Gradle / Ivy

package com.iteaj.iot.client.component;

import com.iteaj.iot.client.*;
import com.iteaj.iot.*;
import com.iteaj.iot.codec.IotMessageDecoder;
import com.iteaj.iot.config.ConnectProperties;
import io.netty.channel.ChannelInboundHandler;
import io.netty.channel.nio.NioEventLoopGroup;

import java.util.Collection;
import java.util.List;

/**
 * 此适配器可以自定义实现各个组件的实现细节
 * 只能使用单客户端
 * @see MultiClientManager 无效
 * @param 
 */
public abstract class SingleTcpClientComponent extends TcpSocketClient
        implements IotProtocolFactory, ClientComponent {

    private ProtocolFactory delegation;

    public SingleTcpClientComponent(ClientConnectProperties config) {
        super(null, config);
        this.setClientComponent(this);
        this.delegation = new ProtocolFactoryDelegation(this, new ProtocolTimeoutStorage(getDesc()));
    }

    @Override
    public void addClient(Object clientKey, IotClient value) { }

    @Override
    public IotClient getClient(Object clientKey) {
        return this;
    }

    @Override
    public IotClient removeClient(Object clientKey) { return null; }

    @Override
    public List clients() {
        return null;
    }

    @Override
    public final void init(NioEventLoopGroup clientGroup) {
        super.init(clientGroup);
    }

    @Override
    public void connect() {
        this.getClient().connect(null, 3000);
    }

    /**
     * 默认使用单客户端, 需要多客户端请自行覆写实现
     * @param config
     * @return
     */
    @Override
    public TcpSocketClient createNewClient(ClientConnectProperties config) {
        return this;
    }

    @Override
    public abstract String getName();

    @Override
    public AbstractProtocol get(String key) {
        return delegation.get(key);
    }

    @Override
    public AbstractProtocol add(String key, Protocol val) {
        return delegation.add(key, val);
    }

    @Override
    public AbstractProtocol add(String key, Protocol protocol, long timeout) {
        return delegation.add(key, protocol, timeout);
    }

    @Override
    public AbstractProtocol remove(String key) {
        return delegation.remove(key);
    }

    @Override
    public boolean isExists(String key) {
        return delegation.isExists(key);
    }

    @Override
    public Object getStorage() {
        return delegation.getStorage();
    }

    @Override
    protected abstract ChannelInboundHandler createProtocolDecoder();

    @Override
    public String getDesc() {
        return "Tcp客户端组件("+this.getClass().getSimpleName()+")";
    }

    @Override
    public void init(Object... args) {
        super.init((NioEventLoopGroup) args[0]);
    }

    @Override
    public TcpSocketClient getClient() {
        return this;
    }

    @Override
    public IotProtocolFactory protocolFactory() {
        return this.delegation;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy