MCPcopy Create free account
hub / github.com/alibaba/tair / SetFlowLimit

Method SetFlowLimit

src/dataserver/flow_controller_impl.cpp:370–421  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

368}
369
370bool FlowControllerImpl::SetFlowLimit(int ns, FlowType type, int64_t lower, int64_t upper) {
371 log_debug("set(or get) flow limit bound, ns %d; type %s; lower %ld; upper %ld",
372 ns, FlowTypeStr(type), lower, upper);
373 if (lower < -1 || upper < -1) {
374 log_error("invliad flow limit parameter, lower %ld; upper %ld", lower, upper);
375 return false;
376 }
377 if (ns == -1) {
378 bool success = true;
379 for (size_t i = 0; i < MAXAREA; ++i)
380 if (SetFlowLimit(i, type, lower, upper) == false)
381 success = false;
382 return success;
383 } else {
384 FlowLimit limit = GetFlowLimit(ns, type);
385 if (upper != -1)
386 limit.upper = upper;
387 if (lower != -1)
388 limit.lower = lower;
389
390 if (limit.lower > limit.upper) {
391 log_error("%ld > %ld is invalid", limit.lower, limit.upper);
392 return false;
393 }
394
395 if (ns < 0 || ns > MAXAREA) ns = MAXAREA;
396 switch (type) {
397 case IN:
398 if (lower >= 0)
399 flows_[ns].in.lower_bound = lower;
400 if (upper >= 0)
401 flows_[ns].in.upper_bound = upper;
402 break;
403 case OUT:
404 if (lower >= 0)
405 flows_[ns].out.lower_bound = lower;
406 if (upper >= 0)
407 flows_[ns].out.upper_bound = upper;
408 break;
409 case OPS:
410 if (lower >= 0)
411 flows_[ns].ops.lower_bound = lower;
412 if (upper >= 0)
413 flows_[ns].ops.upper_bound = upper;
414 break;
415 default:
416 log_error("unknow type %d", type);
417 break;
418 }
419 }
420 return true;
421}
422
423void FlowControllerImpl::SetAreaFlowPolicy(int ns, bool flag) {
424 area_flow_policy_.set(ns, flag);

Callers 2

update_setMethod · 0.80
processMethod · 0.80

Calls 1

FlowTypeStrFunction · 0.70

Tested by

no test coverage detected