summaryrefslogtreecommitdiff
path: root/src/loadbalance.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/loadbalance.cc')
-rw-r--r--src/loadbalance.cc110
1 files changed, 110 insertions, 0 deletions
diff --git a/src/loadbalance.cc b/src/loadbalance.cc
new file mode 100644
index 0000000..a48ace0
--- /dev/null
+++ b/src/loadbalance.cc
@@ -0,0 +1,110 @@
+/*
+ * Module: loadbalance.cc
+ *
+ * **** License ****
+ * Version: VPL 1.0
+ *
+ * The contents of this file are subject to the Vyatta Public License
+ * Version 1.0 ("License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.vyatta.com/vpl
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ * the License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * This code was originally developed by Vyatta, Inc.
+ * Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
+ * All Rights Reserved.
+ *
+ * Author: Michael Larson
+ * Date: 2007
+ * Description:
+ *
+ * **** End License ****
+ *
+ */
+#include <string>
+#include "lbpathtest.hh"
+#include "loadbalance.hh"
+
+using namespace std;
+
+/**
+ *
+ **/
+LoadBalance::LoadBalance() :
+ _cycle_interval(5000)
+{
+}
+
+/**
+ *
+ **/
+LoadBalance::~LoadBalance()
+{
+ _decision.shutdown();
+}
+
+/**
+ *
+ **/
+bool
+LoadBalance::set_conf(const string &conf)
+{
+ _lbdata_factory.load(conf);
+ _lbdata = _lbdata_factory.get();
+ if (_lbdata.error()) {
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ *
+ **/
+void
+LoadBalance::init()
+{
+ _decision.init(_lbdata);
+}
+
+/**
+ *
+ **/
+bool
+LoadBalance::start_cycle()
+{
+ _lbdata.reset_state_changed();
+ return true;
+}
+
+/**
+ *
+ **/
+void
+LoadBalance::health_test()
+{
+ _ph.start(_lbdata);
+}
+
+/**
+ *
+ **/
+void
+LoadBalance::apply_rules()
+{
+ _decision.run(_lbdata);
+}
+
+/**
+ *
+ **/
+void
+LoadBalance::output()
+{
+ _output.write(_lbdata);
+}
+