package com.thoughtworks.go.agent;
import com.thoughtworks.go.domain.JobIdentifier;
import com.thoughtworks.go.domain.JobResult;
import com.thoughtworks.go.domain.JobState;
import com.thoughtworks.go.remote.AgentIdentifier;
import com.thoughtworks.go.remote.AgentInstruction;
import com.thoughtworks.go.remote.BuildRepositoryRemote;
import com.thoughtworks.go.remote.work.Work;
import com.thoughtworks.go.server.service.AgentRuntimeInfo;
import com.thoughtworks.go.websocket.*;
class BuildRepositoryRemoteAdapter implements BuildRepositoryRemote {
private JobRunner runner;
private WebSocketSessionHandler webSocketSessionHandler;
BuildRepositoryRemoteAdapter(JobRunner runner, WebSocketSessionHandler webSocketSessionHandler) {
this.runner = runner;
this.webSocketSessionHandler = webSocketSessionHandler;
}
@Override
public AgentInstruction ping(AgentRuntimeInfo info) {
throw new UnsupportedOperationException();
}
@Override
public Work getWork(AgentRuntimeInfo runtimeInfo) {
throw new UnsupportedOperationException();
}
@Override
public void reportCurrentStatus(AgentRuntimeInfo agentRuntimeInfo, JobIdentifier jobIdentifier, JobState jobState) {
Report report = new Report(agentRuntimeInfo, jobIdentifier, jobState);
webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCurrentStatus, MessageEncoding.encodeData(report)));
}
@Override
public void reportCompleting(AgentRuntimeInfo agentRuntimeInfo, JobIdentifier jobIdentifier, JobResult result) {
Report report = new Report(agentRuntimeInfo, jobIdentifier, result);
webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCompleting, MessageEncoding.encodeData(report)));
}
@Override
public void reportCompleted(AgentRuntimeInfo agentRuntimeInfo, JobIdentifier jobIdentifier, JobResult result) {
Report report = new Report(agentRuntimeInfo, jobIdentifier, result);
webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.reportCompleted, MessageEncoding.encodeData(report)));
}
@Override
public boolean isIgnored(JobIdentifier jobIdentifier) {
return runner.isJobCancelled();
}
@Override
public String getCookie(AgentIdentifier identifier, String location) {
throw new UnsupportedOperationException();
}
@Override
public void consumeLine(String line, JobIdentifier jobIdentifier) {
taggedConsumeLine(null, line, jobIdentifier);
}
@Override
public void taggedConsumeLine(String tag, String line, JobIdentifier jobIdentifier) {
ConsoleTransmission consoleTransmission = new ConsoleTransmission(tag, line, jobIdentifier);
webSocketSessionHandler.sendAndWaitForAcknowledgement(new Message(Action.consoleOut, MessageEncoding.encodeData(consoleTransmission)));
}
}