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

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

package com.iteaj.iot.client.component;

import com.iteaj.iot.ConcurrentStorageManager;
import com.iteaj.iot.client.ClientComponent;
import com.iteaj.iot.client.ClientConnectProperties;
import com.iteaj.iot.client.IotClient;
import com.iteaj.iot.client.MultiClientManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.ArrayList;
import java.util.List;

/**
 * 默认的客户端管理实现
 */
public class SimpleMultiClientManager extends ConcurrentStorageManager implements MultiClientManager {

    private ClientComponent clientComponent;
    protected Logger logger = LoggerFactory.getLogger(getClass());
    public SimpleMultiClientManager(ClientComponent clientComponent) {
        this.clientComponent = clientComponent;
    }

    @Override
    public synchronized void addClient(Object clientKey, IotClient value) {
        String clientKeyStr;
        if(clientKey instanceof ClientConnectProperties) {
            clientKeyStr = ((ClientConnectProperties) clientKey).connectKey();
        } else {
            clientKeyStr = clientKey.toString();
        }

        if(!isExists(clientKeyStr)) {
            add(clientKeyStr, value);
        } else {
            if(logger.isDebugEnabled()) {
                logger.warn("客户端管理({}) 客户端已存在 - 客户端标识:{} - 当前数量:{}", this.clientComponent.getName(), clientKeyStr, size());
            }
        }
    }

    @Override
    public IotClient getClient(Object clientKey) {
        String clientKeyStr;
        if(clientKey instanceof ClientConnectProperties) {
            clientKeyStr = ((ClientConnectProperties) clientKey).connectKey();
        } else {
            clientKeyStr = clientKey.toString();
        }

        return get(clientKeyStr);
    }

    @Override
    public IotClient removeClient(Object clientKey) {
        String clientKeyStr;
        if(clientKey instanceof ClientConnectProperties) {
            clientKeyStr = ((ClientConnectProperties) clientKey).connectKey();
        } else {
            clientKeyStr = clientKey.toString();
        }

        return remove(clientKeyStr);
    }

    @Override
    public List clients() {
        return new ArrayList<>(getMapper().values());
    }

    @Override
    public ClientComponent getClientComponent() {
        return this.clientComponent;
    }

    @Override
    public void setClientComponent(ClientComponent clientComponent) {
        this.clientComponent = clientComponent;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy