package org.skywalking.apm.plugin.jedis.v2;
import org.skywalking.apm.agent.core.plugin.interceptor.EnhancedClassInstanceContext;
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.ConstructorInvokeContext;
import org.skywalking.apm.agent.core.plugin.interceptor.enhance.InstanceConstructorInterceptor;
import redis.clients.jedis.HostAndPort;
import static org.skywalking.apm.plugin.jedis.v2.JedisMethodInterceptor.*;
/**
* {@link JedisClusterConstructorWithHostAndPortArgInterceptor} record the host and port information from {@link
* EnhancedClassInstanceContext#context}, and each host and port will spilt ;.
*
* @author zhangxin
*/
public class JedisClusterConstructorWithHostAndPortArgInterceptor implements InstanceConstructorInterceptor {
@Override
public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) {
StringBuilder redisConnInfo = new StringBuilder();
HostAndPort hostAndPort = (HostAndPort) interceptorContext.allArguments()[0];
redisConnInfo.append(hostAndPort.toString());
context.set(KEY_OF_REDIS_CONN_INFO, redisConnInfo.toString());
context.set(KEY_OF_REDIS_HOST, hostAndPort.getHost());
context.set(KEY_OF_REDIS_PORT, hostAndPort.getPort());
}
}