本文整理了Java中org.zstack.core.asyncbatch.While.run()
方法的一些代码示例,展示了While.run()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。While.run()
方法的具体详情如下:
包路径:org.zstack.core.asyncbatch.While
类名称:While
方法名:run
暂无
代码示例来源:origin: zstackio/zstack
public void run(NoErrorCompletion completion) {
DebugUtils.Assert(consumer != null, "each() or all() or step() must be called before run()");
if (items.isEmpty()) {
completion.done();
return;
}
if (mode == EACH) {
run(items.iterator(), completion);
} else if (mode == ALL) {
runAll(completion);
} else if (mode == STEP) {
runStep(completion);
} else {
DebugUtils.Assert(false, "should be here");
}
}
代码示例来源:origin: zstackio/zstack
@Override
public void send(List<? extends NeedReplyMessage> msgs, int parallelLevel, CloudBusListCallBack callBack) {
DebugUtils.Assert(!msgs.isEmpty(), "you cannot pass an empty message list to me");
msgs.forEach(this::evaluateMessageTimeout);
Map<String, MessageReply> replies = Collections.synchronizedMap(new HashMap<>(msgs.size()));
new While<>(msgs).step((msg, completion) -> send(msg, new CloudBusCallBack(completion) {
@Override
public void run(MessageReply reply) {
replies.put(msg.getId(), reply);
completion.done();
}
}), parallelLevel).run(new NoErrorCompletion(callBack) {
@Override
public void done() {
List<MessageReply> results = new ArrayList<>();
assert msgs.size() == replies.size();
msgs.forEach(msg -> results.add(replies.get(msg.getId())));
callBack.run(results);
}
});
}
代码示例来源:origin: zstackio/zstack
@Override
public void send(List<? extends NeedReplyMessage> msgs, int parallelLevel, CloudBusSteppingCallback callback) {
DebugUtils.Assert(!msgs.isEmpty(), "you cannot pass an empty message list to me");
msgs.forEach(this::evaluateMessageTimeout);
new While<>(msgs).step((msg, completion) -> send(msg, new CloudBusCallBack(completion) {
@Override
public void run(MessageReply reply) {
callback.run(msg, reply);
completion.done();
}
}), parallelLevel).run(new NopeNoErrorCompletion());
}
代码示例来源:origin: zstackio/zstack
private void pingFilter(PrimaryStorageInventory inv, int count, int oneStepLimit, Completion completion){
List<Integer> stepCount = new ArrayList<>();
for(int i = 0; i <= count/oneStepLimit; i ++){
stepCount.add(i);
}
List<ErrorCode> errs = new ArrayList<>();
new While<>(stepCount).each((currentStep, compl) -> {
pingFilterStep(inv, currentStep, oneStepLimit, new Completion(compl) {
@Override
public void success() {
compl.allDone();
}
@Override
public void fail(ErrorCode errorCode) {
errs.add(errorCode);
compl.done();
}
});
}).run(new NoErrorCompletion(completion) {
@Override
public void done() {
if(errs.size() == stepCount.size()){
completion.fail(errs.get(0));
}else {
completion.success();
}
}
});
}
代码示例来源:origin: zstackio/zstack
private void detachIpFromVmNicCascade(List<DetachIpAddressFromVmNicMsg> msgs, final Completion completion) {
if (msgs.isEmpty()) {
completion.success();
return;
}
new While<>(msgs).all((msg, compl) -> bus.send(msg, new CloudBusCallBack(compl) {
@Override
public void run(MessageReply reply) {
if (!reply.isSuccess()) {
logger.warn(String.format("failed to detach ip[uuid:%s] from vmNic [uuid:%s], %s." +
" However, detaching will go on", msg.getUsedIpUuid(), msg.getVmNicUuid(), reply.getError()));
}
compl.done();
}
})).run(new NoErrorCompletion(completion) {
@Override
public void done() {
completion.success();
}
});
}
代码示例来源:origin: zstackio/zstack
}).run(new NoErrorCompletion(completion) {
@Override
public void done() {
代码示例来源:origin: zstackio/zstack
})).run(new NoErrorCompletion(completion) {
@Override
public void done() {
代码示例来源:origin: zstackio/zstack
}).run(new NoErrorCompletion(completion) {
@Override
public void done() {
代码示例来源:origin: zstackio/zstack
}).run(new NoErrorCompletion(completion) {
@Override
public void done() {
代码示例来源:origin: zstackio/zstack
private void syncVolumeSize(){
new While<>(volumeUuids).step((volUuid, completion) -> {
if (!volumeInTracking.add(volUuid)) {
completion.done();
return;
}
SyncVolumeSizeMsg msg = new SyncVolumeSizeMsg();
msg.setVolumeUuid(volUuid);
bus.makeTargetServiceIdByResourceUuid(msg, VolumeConstant.SERVICE_ID, volUuid);
bus.send(msg, new CloudBusCallBack(msg) {
@Override
public void run(MessageReply reply) {
volumeInTracking.remove(msg.getVolumeUuid());
if (!reply.isSuccess()) {
logger.warn(String.format("fail to refresh volume[uuid:%s] size, try again soon", volUuid));
}
completion.done();
}
});
}, 50).run(new NopeNoErrorCompletion());
}
代码示例来源:origin: zstackio/zstack
}).run(new NoErrorCompletion() {
@Override
public void done() {
代码示例来源:origin: zstackio/zstack
}).run(new NoErrorCompletion() {
@Override
public void done() {
代码示例来源:origin: zstackio/zstack
@Override
public void rollback(FlowRollback trigger, Map data) {
List<UsedIpInventory> allocatedIps = (List<UsedIpInventory>) data.get(VmAllocateNicForStartingVmFlow.class);
if (allocatedIps == null || allocatedIps.isEmpty()) {
trigger.rollback();
return;
}
new While<>(allocatedIps).all((ip, cmpl) -> {
ReturnIpMsg rmsg = new ReturnIpMsg();
rmsg.setL3NetworkUuid(ip.getL3NetworkUuid());
rmsg.setUsedIpUuid(ip.getUuid());
bus.makeTargetServiceIdByResourceUuid(rmsg, L3NetworkConstant.SERVICE_ID, ip.getL3NetworkUuid());
bus.send(rmsg, new CloudBusCallBack(cmpl) {
@Override
public void run(MessageReply reply) {
for (VmNicExtensionPoint ext : pluginRgty.getExtensionList(VmNicExtensionPoint.class)) {
ext.afterDelIpAddress(ip.getVmNicUuid(), ip.getUuid());
}
cmpl.done();
}
});
}).run(new NoErrorCompletion(trigger) {
@Override
public void done() {
trigger.rollback();
}
});
}
}
代码示例来源:origin: zstackio/zstack
@Override
public void afterHostConnected(HostInventory inv) {
if (inv.getStatus().equals(HostStatus.Connected.toString())){
List<String> vmUuids = Q.New(VmInstanceVO.class).select(VmInstanceVO_.uuid)
.eq(VmInstanceVO_.hostUuid, inv.getUuid())
.listValues();
if(vmUuids.isEmpty()){
return;
}
new While<>(vmUuids).step((vmUuid, completion) -> {
VmCheckOwnStateMsg msg = new VmCheckOwnStateMsg();
msg.setVmInstanceUuid(vmUuid);
bus.makeTargetServiceIdByResourceUuid(msg, VmInstanceConstant.SERVICE_ID, vmUuid);
bus.send(msg, new CloudBusCallBack(completion) {
@Override
public void run(MessageReply reply) {
if(!reply.isSuccess()){
logger.warn(String.format("the host[uuid:%s] connected, but the vm[uuid:%s] fails to " +
"update it's state , %s", inv.getUuid(), vmUuid, reply.getError()));
}
completion.done();
}
});
}, 200).run(new NopeNoErrorCompletion());
}
}
}
代码示例来源:origin: zstackio/zstack
@Override
public void rollback(final FlowRollback chain, Map data) {
VmInstanceSpec spec = (VmInstanceSpec) data.get(VmInstanceConstant.Params.VmInstanceSpec.toString());
List<DetachIpAddressFromVmNicMsg> msgs = new ArrayList<>();
/* reload vmnic */
List<VmNicVO> vmNicVOS = Q.New(VmNicVO.class).eq(VmNicVO_.vmInstanceUuid, spec.getVmInventory().getUuid()).list();
for (VmNicVO nic : vmNicVOS) {
List<String> ipUuids = VmNicHelper.getCanDetachL3List(VmNicInventory.valueOf(nic), spec.getL3Networks());
for (String uuid : ipUuids) {
DetachIpAddressFromVmNicMsg msg = new DetachIpAddressFromVmNicMsg();
msg.setVmNicUuid(nic.getUuid());
msg.setUsedIpUuid(uuid);
bus.makeTargetServiceIdByResourceUuid(msg, VmInstanceConstant.SERVICE_ID, nic.getUuid());
msgs.add(msg);
}
}
new While<>(msgs).each((msg, comp) -> bus.send(msg, new CloudBusCallBack(comp) {
@Override
public void run(MessageReply reply) {
comp.done();
}
})).run(new NoErrorCompletion(chain) {
@Override
public void done() {
chain.rollback();
}
});
}
}
代码示例来源:origin: zstackio/zstack
}).run(new NoErrorCompletion(completion) {
@Override
public void done() {
代码示例来源:origin: zstackio/zstack
@Override
public void afterChangeHostStatus(String hostUuid, HostStatus before, HostStatus next) {
if(next == HostStatus.Disconnected) {
List<String> vmUuids = Q.New(VmInstanceVO.class).select(VmInstanceVO_.uuid)
.eq(VmInstanceVO_.hostUuid, hostUuid)
.listValues();
if(vmUuids.isEmpty()){
return;
}
new While<>(vmUuids).step((vmUuid, completion) -> {
VmStateChangedOnHostMsg msg = new VmStateChangedOnHostMsg();
msg.setVmInstanceUuid(vmUuid);
msg.setHostUuid(hostUuid);
msg.setStateOnHost(VmInstanceState.Unknown);
bus.makeTargetServiceIdByResourceUuid(msg, VmInstanceConstant.SERVICE_ID, vmUuid);
bus.send(msg, new CloudBusCallBack(completion) {
@Override
public void run(MessageReply reply) {
if(!reply.isSuccess()){
logger.warn(String.format("the host[uuid:%s] disconnected, but the vm[uuid:%s] fails to " +
"change it's state to Unknown, %s", hostUuid, vmUuid, reply.getError()));
} else {
logger.debug(String.format("the host[uuid:%s] disconnected, change the VM[uuid:%s]' state to Unknown", hostUuid, vmUuid));
}
completion.done();
}
});
}, 200).run(new NopeNoErrorCompletion());
}
}
代码示例来源:origin: zstackio/zstack
private void handleDeletion(final CascadeAction action, final Completion completion) {
List<VtepInventory> vteps = vtepFromAction(action);
if (vteps == null) {
completion.success();
return;
}
new While<>(vteps).all((vtep, completion1) -> {
DeleteVtepMsg msg = new DeleteVtepMsg();
msg.setL2NetworkUuid(vtep.getPoolUuid());
msg.setVtepUuid(vtep.getUuid());
bus.makeTargetServiceIdByResourceUuid(msg, L2NetworkConstant.SERVICE_ID, msg.getL2NetworkUuid());
bus.send(msg, new CloudBusCallBack(completion1) {
@Override
public void run(MessageReply reply) {
if (!reply.isSuccess()) {
logger.warn(reply.getError().toString());
}
completion1.done();
}
});
}).run(new NoErrorCompletion(completion) {
@Override
public void done() {
completion.success();
}
});
}
代码示例来源:origin: zstackio/zstack
private void rollbackCertificate(VirtualRouterVmInventory vr, List<LoadBalancerStruct> struct, final NoErrorCompletion completion){
Set<String> certificateUuids = getCertificates(struct);
new While<>(certificateUuids).each((uuid, wcmpl) -> {
VirtualRouterAsyncHttpCallMsg msg = new VirtualRouterAsyncHttpCallMsg();
msg.setVmInstanceUuid(vr.getUuid());
msg.setPath(DELETE_CERTIFICATE_PATH);
CertificateCmd cmd = new CertificateCmd();
cmd.setUuid(uuid);
msg.setCommand(cmd);
bus.makeTargetServiceIdByResourceUuid(msg, VmInstanceConstant.SERVICE_ID, vr.getUuid());
bus.send(msg, new CloudBusCallBack(wcmpl) {
@Override
public void run(MessageReply reply) {
wcmpl.done();
}
});
}).run(new NoErrorCompletion(completion) {
@Override
public void done() {
completion.done();
}
});
}
代码示例来源:origin: zstackio/zstack
}).run(new NoErrorCompletion() {
@Override
public void done() {
内容来源于网络,如有侵权,请联系作者删除!