
com.taobao.tair.comm.TairClient Maven / Gradle / Ivy
/**
* (C) 2007-2010 Taobao Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
*/
package com.taobao.tair.comm;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.mina.common.IoFuture;
import org.apache.mina.common.IoFutureListener;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.WriteFuture;
import com.taobao.tair.etc.TairClientException;
import com.taobao.tair.packet.BasePacket;
public class TairClient {
private static final Log LOGGER = LogFactory.getLog(TairClient.class);
private static final boolean isDebugEnabled = LOGGER.isDebugEnabled();
private static ConcurrentHashMap callbackTasks=
new ConcurrentHashMap();
private static long minTimeout=100L;
private static ConcurrentHashMap> responses=
new ConcurrentHashMap>();
private final IoSession session;
private String key;
private TairClientFactory clientFactory;
private static Thread callBackTaskScan = new Thread(new CallbackTasksScan());
static{
callBackTaskScan.setName("Thread-" + CallbackTasksScan.class.getName());
callBackTaskScan.setDaemon(true);
callBackTaskScan.start();
}
protected TairClient(TairClientFactory factory, IoSession session,String key) {
this.session = session;
this.key=key;
this.clientFactory = factory;
}
public Object invoke(final BasePacket packet, final long timeout)
throws TairClientException {
if (isDebugEnabled) {
LOGGER.debug("send request [" + packet.getChid() + "],time is:"
+ System.currentTimeMillis());
}
ArrayBlockingQueue
© 2015 - 2025 Weber Informatics LLC | Privacy Policy