package com.robonobo.midas.client;
import java.util.Collection;
import java.util.Stack;
import com.robonobo.core.api.model.User;
import com.robonobo.core.api.proto.CoreApi.StreamMsg;
import com.robonobo.core.api.proto.CoreApi.UserMsg;
import com.robonobo.core.metadata.UserCallback;
import com.robonobo.midas.client.Params.Operation;
public class GetUsersRequest implements Request {
MidasClientConfig cfg;
private UserCallback handler;
private Stack<Long> uids = new Stack<Long>();
public GetUsersRequest(MidasClientConfig cfg, Collection<Long> uids, UserCallback handler) {
this.cfg = cfg;
this.uids.addAll(uids);
this.handler = handler;
}
public GetUsersRequest(MidasClientConfig cfg, long uid, UserCallback handler) {
this.cfg = cfg;
this.uids.add(uid);
this.handler = handler;
}
@Override
public Params getNextParams() {
Long uid = uids.pop();
return new Params(Operation.Get, null, UserMsg.newBuilder(), cfg.getUserUrl(uid), uid);
}
@Override
public int remaining() {
return uids.size();
}
@Override
public void success(Object obj) {
UserMsg msg = (UserMsg) obj;
handler.success(new User(msg));
}
@Override
public void error(Params p, Exception e) {
Long uid = (Long) p.obj;
handler.error(uid, e);
}
}