summaryrefslogtreecommitdiffstats
path: root/src/tw_cfg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tw_cfg.cpp')
-rw-r--r--src/tw_cfg.cpp82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/tw_cfg.cpp b/src/tw_cfg.cpp
new file mode 100644
index 00000000..af079532
--- /dev/null
+++ b/src/tw_cfg.cpp
@@ -0,0 +1,82 @@
+/*
+ Hanoh Haim
+ Cisco Systems, Inc.
+*/
+
+/*
+Copyright (c) 2015-2015 Cisco Systems, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+#include "tw_cfg.h"
+
+
+bool CTimerWheelYamlInfo::Verify(std::string & err){
+ bool res=true;
+ if ( (m_levels>4) || (m_levels <1) ){
+ err="tw number of levels should be betwean 1..4";
+ res=false;
+ }
+ if ( (m_buckets >=(0xffff)) || ((m_buckets <256)) ){
+ err="tw number of bucket should be betwean 256-2^16 and log2";
+ res=false;
+ }
+
+ if ( (m_bucket_time_usec <10.0) || (((m_bucket_time_usec> 200.0))) ){
+ res=false;
+ err="bucket time should be betwean 10-200 usec ";
+ }
+ return (res);
+}
+
+void CTimerWheelYamlInfo::Dump(FILE *fd){
+
+ if ( m_info_exist ==false ){
+ fprintf(fd,"CTimerWheelYamlInfo does not exist \n");
+ return;
+ }
+
+ fprintf(fd," tw buckets : %lu \n",(ulong)m_buckets);
+ fprintf(fd," tw levels : %lu \n",(ulong)m_levels);
+ fprintf(fd," tw bucket time : %.02f usec\n",(double)m_bucket_time_usec);
+
+}
+
+void operator >> (const YAML::Node& node, CTimerWheelYamlInfo & info) {
+
+ uint32_t val;
+
+ if ( node.FindValue("buckets") ){
+ node["buckets"] >> val;
+ info.m_buckets=(uint16_t)val;
+ info.m_info_exist = true;
+ }
+
+ if ( node.FindValue("levels") ){
+ node["levels"] >> val;
+ info.m_levels = (uint16_t)val;
+ info.m_info_exist = true;
+ }
+
+ if ( node.FindValue("bucket_time_usec") ){
+ node["bucket_time_usec"] >>info.m_bucket_time_usec;
+ info.m_info_exist = true;
+ }
+}
+
+
+
+
+
+