package com.robonobo.midas.client;
import java.util.*;
import com.robonobo.core.api.model.Stream;
import com.robonobo.core.api.proto.CoreApi.StreamMsg;
import com.robonobo.core.metadata.StreamCallback;
import com.robonobo.midas.client.Params.Operation;
public class GetStreamRequest implements Request {
MidasClientConfig cfg;
private StreamCallback handler;
private Stack<String> sids = new Stack<String>();
public GetStreamRequest(MidasClientConfig cfg, Collection<String> sids, StreamCallback handler) {
this.cfg = cfg;
this.sids.addAll(sids);
this.handler = handler;
}
@Override
public Params getNextParams() {
String sid = sids.pop();
return new Params(Operation.Get, null, StreamMsg.newBuilder(), cfg.getStreamUrl(sid), sid);
}
@Override
public int remaining() {
return sids.size();
}
@Override
public void success(Object obj) {
StreamMsg msg = (StreamMsg) obj;
handler.success(new Stream(msg));
}
@Override
public void error(Params p, Exception e) {
String sid = (String) p.obj;
handler.error(sid, e);
}
}