OpFlex Framework 1.7.0
OFFramework.h
Go to the documentation of this file.
1/* -*- C++ -*-; c-basic-offset: 4; indent-tabs-mode: nil */
6/*
7 * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved.
8 *
9 * This program and the accompanying materials are made available under the
10 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
11 * and is available at http://www.eclipse.org/legal/epl-v10.html
12 */
13
571
572#pragma once
573#ifndef OPFLEX_CORE_OFFRAMEWORK_H
574#define OPFLEX_CORE_OFFRAMEWORK_H
575
576#include <vector>
577#include <string>
578
579#include <boost/noncopyable.hpp>
580
581#include "opflex/modb/Mutator.h"
584
596
597namespace opflex {
598namespace modb {
599class ObjectStore;
600class ModelMetadata;
601namespace mointernal {
602class MO;
603}
604}
605
606namespace ofcore {
607
612
619
644class OFFramework : private boost::noncopyable {
645public:
650
654 virtual ~OFFramework();
655
660 static const std::vector<int>& getVersion();
661
666 static const std::string& getVersionStr();
667
672
679 void setModel(const modb::ModelMetadata& model);
680
689 void setOpflexIdentity(const std::string& name,
690 const std::string& domain);
691
701 void setOpflexIdentity(const std::string& name,
702 const std::string& domain,
703 const std::string& location);
704
709 virtual void start();
710
714 virtual void stop();
715
727
734 virtual void dumpMODB(const std::string& file);
735
742 virtual void dumpMODB(FILE* file);
743
754 virtual void prettyPrintMODB(std::ostream& output,
755 bool tree = true,
756 bool includeProps = true,
757 bool utf8 = true,
758 size_t truncate = 0);
759
769 virtual void enableSSL(const std::string& caStorePath,
770 bool verifyPeers = true);
771
785 virtual void enableSSL(const std::string& caStorePath,
786 const std::string& keyAndCertFilePath,
787 const std::string& passphrase,
788 bool verifyPeers = true);
789
797 virtual void enableInspector(const std::string& socketName);
798
815 virtual void addPeer(const std::string& hostname,
816 int port);
817
826
827private:
835 modb::ObjectStore& getStore();
836
842 void registerTLMutator(modb::Mutator& mutator);
847 modb::Mutator& getTLMutator();
851 void clearTLMutator();
852
853 class OFFrameworkImpl;
854 OFFrameworkImpl* pimpl;
855
856 friend class OFFrameworkImpl;
857 friend class modb::Mutator;
858 friend class modb::mointernal::MO;
859 friend class MockOFFramework;
860};
861
869class MockOFFramework : public OFFramework {
870public:
871 MockOFFramework() : OFFramework() { }
872 virtual ~MockOFFramework() {};
873
874 virtual void start();
875 virtual void stop();
876};
877
879
884
886
887} /* namespace ofcore */
888} /* namespace opflex */
889
890#endif /* OPFLEX_CORE_OFFRAMEWORK_H */
Interface definition for main loop adaptor.
Interface definition file for Mutators.
Interface definition for peer status.
Model metadata encapsulated all the metadata for a given model.
Definition ModelMetadata.h:47
A mutator represents a set of changes to apply to the data store.
Definition Mutator.h:61
This is the base class for all managed objects, which are the primary point of interface with data st...
Definition MO.h:48
An adaptor that allows integrating libopflex with an external main loop.
Definition MainLoopAdaptor.h:31
virtual void stop()
Cleanly stop the framework.
virtual void start()
Start the framework.
virtual void start()
Start the framework.
void setOpflexIdentity(const std::string &name, const std::string &domain)
Set the opflex identity information for this framework instance.
static const std::string & getVersionStr()
Get the library version as a string of the format [major].
virtual ~OFFramework()
Destroy the framework instance.
virtual void stop()
Cleanly stop the framework.
OFFramework()
Create a new framework instance.
virtual void dumpMODB(FILE *file)
Dump the managed object database to the file specified as a JSON blob.
virtual MainLoopAdaptor * startSync()
Start the framework in synchronous mode using a main loop adaptor.
virtual void enableSSL(const std::string &caStorePath, bool verifyPeers=true)
Enable SSL for connections to opflex peers.
virtual void registerPeerStatusListener(PeerStatusListener *listener)
Register the given peer status listener to get updates on the health of the connection pool and on in...
static OFFramework & defaultInstance()
Get the static default instance of the framework.
static const std::vector< int > & getVersion()
Get the library version as an vector of three version numbers: major, minor, and release.
virtual void enableSSL(const std::string &caStorePath, const std::string &keyAndCertFilePath, const std::string &passphrase, bool verifyPeers=true)
Enable SSL for connections to opflex peers.
virtual void dumpMODB(const std::string &file)
Dump the managed object database to the file specified as a JSON blob.
virtual void prettyPrintMODB(std::ostream &output, bool tree=true, bool includeProps=true, bool utf8=true, size_t truncate=0)
Pretty print the current MODB to the provided output stream.
void setOpflexIdentity(const std::string &name, const std::string &domain, const std::string &location)
Set the opflex identity information for this framework instance.
void setModel(const modb::ModelMetadata &model)
Add the given model metadata to the managed object database.
virtual void addPeer(const std::string &hostname, int port)
Add an OpFlex peer.
virtual void enableInspector(const std::string &socketName)
Enable the MODB inspector service.
An interface for a listener that will get status update events for peer connection state.
Definition PeerStatusListener.h:30