package org.yamcs.management;
import javax.management.NotCompliantMBeanException;
import javax.management.StandardMBean;
import org.yamcs.Processor;
import org.yamcs.ProcessorClient;
import org.yamcs.ProcessorException;
import org.yamcs.protobuf.YamcsManagement.ClientInfo;
import org.yamcs.security.AuthenticationToken;
import org.yamcs.utils.TimeEncoding;
public class ClientControlImpl extends StandardMBean implements ClientControl {
ClientInfo clientInfo;
ProcessorClient client;
ClientControlImpl(String yamcsInstance, int id, String username, String applicationName, String yprocName, ProcessorClient client) throws NotCompliantMBeanException {
super(ClientControl.class);
this.client=client;
long loginTime = TimeEncoding.getWallclockTime();
clientInfo=ClientInfo.newBuilder().setInstance(yamcsInstance)
.setApplicationName(applicationName)
.setProcessorName(yprocName).setUsername(username)
.setLoginTime(loginTime)
.setLoginTimeUTC(TimeEncoding.toString(loginTime))
.setId(id).build();
}
@Override
public String getApplicationName() {
return clientInfo.getApplicationName();
}
public ClientInfo getClientInfo() {
return clientInfo;
}
public ProcessorClient getClient(){
return client;
}
public void switchYProcessor(Processor chan, AuthenticationToken authToken) throws ProcessorException {
client.switchProcessor(chan, authToken);
clientInfo=ClientInfo.newBuilder().mergeFrom(clientInfo)
.setInstance(chan.getInstance()).setProcessorName(chan.getName())
.build();
}
}