diff --git a/src/main/java/com/nhn/pinpoint/profiler/modifier/arcus/SpyVersion.java b/src/main/java/com/nhn/pinpoint/profiler/modifier/arcus/SpyVersion.java new file mode 100644 index 000000000..76c176a58 --- /dev/null +++ b/src/main/java/com/nhn/pinpoint/profiler/modifier/arcus/SpyVersion.java @@ -0,0 +1,40 @@ +package com.nhn.pinpoint.profiler.modifier.arcus; + +import com.nhn.pinpoint.profiler.interceptor.bci.InstrumentClass; + +public enum SpyVersion { + + SPYMEMCACHED_2_11, + ARCUSCLIENT_1_6, + ERROR + ; + + public SpyVersion identifyWithMemcachedConnection(InstrumentClass aClass) { + String className = aClass.getName(); + if (! "net/spy/memcached/MemcachedConnection".equals(className)) { + return ERROR; + } + + String[] createConnectionArgs = {"java.util.Collection"}; + boolean isSpy = aClass.hasDeclaredMethod("createConnection", createConnectionArgs); + + if (isSpy) { + return SPYMEMCACHED_2_11; + } else { + return ARCUSCLIENT_1_6; + } + } + + public SpyVersion identifyWithMemcachedClient(InstrumentClass aClass) { + String className = aClass.getName(); + if (! "net/spy/memcached/MemcachedClient".equals(className)) { + return ERROR; + } + + String[] addOpArgs = {"java.lang.String", "net.spy.memcached.ops.Operation"}; + boolean isArcus = aClass.hasDeclaredMethod("addOp", addOpArgs); + + return SPYMEMCACHED_2_11; + } + +}