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.JedisShardInfo; /** * {@link JedisClusterConstructorWithHostAndPortArgInterceptor} will record the host * and port information from {@link EnhancedClassInstanceContext#context}. * * @author zhangxin */ public class JedisConstructorWithShardInfoArgInterceptor implements InstanceConstructorInterceptor { @Override public void onConstruct(EnhancedClassInstanceContext context, ConstructorInvokeContext interceptorContext) { String redisConnInfo; JedisShardInfo shardInfo = (JedisShardInfo) interceptorContext.allArguments()[0]; redisConnInfo = shardInfo.getHost() + ":" + shardInfo.getPort(); context.set(JedisMethodInterceptor.KEY_OF_REDIS_CONN_INFO, redisConnInfo); context.set(JedisMethodInterceptor.KEY_OF_REDIS_HOST, shardInfo.getHost()); context.set(JedisMethodInterceptor.KEY_OF_REDIS_PORT, shardInfo.getPort()); } }