diff options
author | 2018-04-25 19:11:15 +0200 | |
---|---|---|
committer | 2018-04-27 11:35:07 +0000 | |
commit | 164e5f8c63652028ecb9c3570e1ea8618b163071 (patch) | |
tree | 7423f5abbc61b761df9a679c7974f17613736020 /src/vpp-api/vom/object_base.hpp | |
parent | aa682a39b76ee043f65313f23e134bf18fe7a47e (diff) |
Move VOM to extras/vom
Change-Id: Iea174f03dfba3bd06024db0f0cc373532300dcae
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vpp-api/vom/object_base.hpp')
-rw-r--r-- | src/vpp-api/vom/object_base.hpp | 146 |
1 files changed, 0 insertions, 146 deletions
diff --git a/src/vpp-api/vom/object_base.hpp b/src/vpp-api/vom/object_base.hpp deleted file mode 100644 index 2edafc58466..00000000000 --- a/src/vpp-api/vom/object_base.hpp +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2017 Cisco and/or its affiliates. - * 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. - */ - -#ifndef __VOM_OBJECT_H__ -#define __VOM_OBJECT_H__ - -#include <memory> -#include <string> - -#include "vom/types.hpp" - -namespace VOM { -/** - * A base class for all object_base in the VPP object_base-Model. - * provides the abstract interface. - */ -class object_base -{ -public: - /** - * convert to string format for debug purposes - */ - virtual std::string to_string() const = 0; - - /** - * Sweep/reap the object if still stale - */ - virtual void sweep(void) = 0; - - /** - * replay the object to create it in hardware - */ - virtual void replay(void) = 0; - -protected: - /** - * Constructable by derived classes only - */ - object_base() = default; - /** - * Destructor - */ - virtual ~object_base() = default; - -private: - /** - * note we are not maintaining dependencies back to the - * keys. i.e. this object does not know all the keys that - * refer to it. - */ -}; - -/** - * object state - */ -enum obj_state_t -{ - OBJECT_STATE_NONE = 0, - /** - * indicates the object is stale. This flag is set - * when a new epoch is declared. the flag is cleared - * when the object is updated in the new epoch. If the - * flag is still set after convergence is declared then - * the object is deleted - */ - OBJECT_STATE_STALE, -}; - -/** - * A represenation of a reference to a VPP object. - * the reference counting is held through the use of shared pointers. - * We also maintain the state of the object ready for mark n' sweep. - */ -class object_ref -{ -public: - /** - * Constructor - */ - object_ref(std::shared_ptr<object_base> obj); - - /** - * less than operator - */ - bool operator<(const object_ref& other) const; - - /** - * Return the shared pointer - */ - std::shared_ptr<object_base> obj() const; - - /** - * Mark the reference object as stale - */ - void mark() const; - - /** - * Clear the stale flag on the object - */ - void clear() const; - - /** - * Query if the object is stale - */ - bool stale() const; - -private: - /** - * The reference object - */ - std::shared_ptr<object_base> m_obj; - - /** - * Not part of the key (in the set) so we can change it - * whilst iterating - */ - mutable obj_state_t m_state; -}; - -/** - * ostream print of a VPP Obect - */ -std::ostream& operator<<(std::ostream& os, const object_base& o); -}; - -/* - * fd.io coding-style-patch-verification: ON - * - * Local Variables: - * eval: (c-set-style "mozilla") - * End: - */ - -#endif |