ClientHolderImpl.java 1.06 KB
package com.taover.heartbeat;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.taover.heartbeat.bean.ClientInstance;
import com.taover.heartbeat.bean.ClientRequest;

public class ClientHolderImpl implements ClientHolder{
	Map<String, ClientInstance> clientMap = new HashMap<String, ClientInstance>();

	@Override
	public List<ClientInstance> getClientInstanceList() {
		return new ArrayList<ClientInstance>(clientMap.values());
	}

	@Override
	public void flushClientStatus(ClientInstance clientInstance) {
		clientInstance.flush();
	}

	@Override
	public void registryClientInstance(ClientRequest clientRequest) {
		synchronized (this.clientMap) {
			ClientInstance client = null;
			if(clientMap.containsKey(clientRequest.getIdentity())) {
				client = clientMap.get(clientRequest.getIdentity());				
				clientMap.put(client.getIdentity(), client);
			}else {
				client = new ClientInstance(clientRequest);
				clientMap.put(client.getIdentity(), client);
			}
			client.dealClientRequest(clientRequest);
		}
	}
}