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

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

package com.iteaj.iot.client.component;

import com.iteaj.iot.client.*;
import com.iteaj.iot.SocketMessage;
import com.iteaj.iot.AbstractProtocol;
import com.iteaj.iot.IotProtocolFactory;
import com.iteaj.iot.config.ConnectProperties;

/**
 * 默认的客户端
 */
public class DefaultClientComponent extends SocketClientComponent {

    private String name;
    private String desc;
    private SocketClient socketClient;
    private ClientFactory clientFactory;
    private IotProtocolFactory protocolFactory;
    private Class messageClass;

    /**
     * 单客户端 一个组件对应一个客户端
     * @param socketClient
     * @param protocolFactory
     * @param messageClass
     */
    public DefaultClientComponent(SocketClient socketClient
            , IotProtocolFactory protocolFactory, Class messageClass) {
        this(messageClass.getSimpleName(), messageClass.getSimpleName(), socketClient, protocolFactory, messageClass);
    }

    /**
     * 单客户端 一个组件对应一个客户端
     * @param name
     * @param desc
     * @param socketClient
     * @param protocolFactory
     * @param messageClass
     */
    public DefaultClientComponent(String name, String desc, SocketClient socketClient
            , IotProtocolFactory protocolFactory, Class messageClass) {
        super(socketClient.getConfig());
        this.name = name;
        this.desc = desc;
        this.socketClient = socketClient;
        this.messageClass = messageClass;
        this.protocolFactory = protocolFactory;
        if(this.socketClient.getClientComponent() == null) {
            this.socketClient.setClientComponent(this);
        }
    }

    /**
     * 多客户端  一个组件对应多个客户端(用于一套协议对应多台服务器 如分布式服务集群)
     * @param name
     * @param desc
     * @param config
     * @param clientFactory 创建客户端
     * @param protocolFactory
     * @param messageClass
     */
    public DefaultClientComponent(String name, String desc, ClientConnectProperties config
            , ClientFactory clientFactory, IotProtocolFactory protocolFactory
            , Class messageClass) {
        super(config);
        this.name = name;
        this.desc = desc;
        this.clientFactory = clientFactory;
        this.messageClass = messageClass;
        this.protocolFactory = protocolFactory;
    }

    @Override
    public SocketClient createNewClient(ClientConnectProperties config) {
        if(this.clientFactory != null) {
            return (SocketClient) this.clientFactory.createNewClient(config);
        }

        return this.socketClient;
    }

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

    @Override
    public String getName() {
        return this.name;
    }

    @Override
    public String getDesc() {
        return this.desc;
    }

    @Override
    public Class getMessageClass() {
        return this.messageClass;
    }

    public SocketClientComponent setName(String name) {
        this.name = name;
        return this;
    }

    public SocketClientComponent setDesc(String desc) {
        this.desc = desc;
        return this;
    }

    @Override
    public AbstractProtocol getProtocol(SocketMessage message) {
        throw new UnsupportedOperationException("不支持此方法");
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy