com.taobao.arthas.grpcweb.grpc.service.GrpcJobController Maven / Gradle / Ivy
package com.taobao.arthas.grpcweb.grpc.service;
import com.taobao.arthas.core.advisor.TransformerManager;
import com.taobao.arthas.grpcweb.grpc.observer.ArthasStreamObserver;
import com.taobao.arthas.grpcweb.grpc.view.GrpcResultViewResolver;
import java.lang.instrument.Instrumentation;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
public class GrpcJobController{
private Map jobs
= new ConcurrentHashMap();
// private Map jobs
// = new HashMap<>();
private final AtomicInteger idGenerator = new AtomicInteger(0);
private GrpcResultViewResolver resultViewResolver;
private Instrumentation instrumentation;
private TransformerManager transformerManager;
public GrpcJobController(Instrumentation instrumentation, TransformerManager transformerManager, GrpcResultViewResolver resultViewResolver){
this.instrumentation = instrumentation;
this.transformerManager = transformerManager;
this.resultViewResolver = resultViewResolver;
}
public Set getJobIds(){
return jobs.keySet();
}
public void registerGrpcJob(long jobId,ArthasStreamObserver arthasStreamObserver){
jobs.put(jobId, arthasStreamObserver);
}
public void unRegisterGrpcJob(long jobId){
if(jobs.containsKey(jobId)){
jobs.remove(jobId);
}
}
public boolean containsJob(long jobId){
return jobs.containsKey(jobId);
}
public ArthasStreamObserver getGrpcJob(long jobId){
if(this.containsJob(jobId)){
return jobs.get(jobId);
}else {
return null;
}
}
public int generateGrpcJobId(){
int jobId = idGenerator.incrementAndGet();
return jobId;
}
public GrpcResultViewResolver getResultViewResolver() {
return resultViewResolver;
}
public Instrumentation getInstrumentation() {
return instrumentation;
}
public void setInstrumentation(Instrumentation instrumentation) {
this.instrumentation = instrumentation;
}
public TransformerManager getTransformerManager() {
return transformerManager;
}
public void setTransformerManager(TransformerManager transformerManager) {
this.transformerManager = transformerManager;
}
}