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

com.jd.blockchain.sdk.service.SimpleConsensusClientManager Maven / Gradle / Ivy

The newest version!
package com.jd.blockchain.sdk.service;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.jd.blockchain.consensus.SessionCredential;
import com.jd.blockchain.consensus.client.ConsensusClient;
import com.jd.blockchain.crypto.HashDigest;

public class SimpleConsensusClientManager implements ConsensusClientManager {

	private Map ledgerConsensusClients = new ConcurrentHashMap<>();

	@Override
	public synchronized ConsensusClient getConsensusClient(HashDigest ledgerHash, SessionCredential sessionCredential,
			ConsensusClientFactory factory) {
		ConsensusClient client = ledgerConsensusClients.get(ledgerHash);
		if (client == null) {
			client = factory.create();
			ledgerConsensusClients.put(ledgerHash, client);
		}
		return client;
	}
	

	@Override
	public void reset() {
		ConsensusClient[] pooledClients = ledgerConsensusClients.values().toArray(new ConsensusClient[ledgerConsensusClients.size()]);
		ledgerConsensusClients.clear();
		for (ConsensusClient client : pooledClients) {
			client.close();
		}
	}

	@Override
	public synchronized void remove(HashDigest ledger) {
		ConsensusClient client = ledgerConsensusClients.get(ledger);
		ledgerConsensusClients.remove(ledger);
		if(null != client) {
			client.close();
		}
	}


}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy