C++ Replication API
Concepts for using the C++ Replication API
Concepts for using the C++ Replication API
Section | Description |
---|---|
This section summarizes the JSON Replication API. | |
This section lists the formations of the C++ interface. | |
This section lists classes that depict the file system and its hierarchy. | |
The replication plan is the link between two database engines: the source and the target. | |
This section shows a figure that summarizes classes and their relationships. | |
The replication API requires a running Replication Manager server. You will find this server in the Replication Manager package. Its executable name is called Memphis as a metaphor for a central management hub. | |
Two tutorials are provided to assist you in learning to use the Replication API. | |
Error codes contained in |
Section | Description |
---|---|
An action can be pushed from the central point of control to any node in the site and executed by that node. | |
Each machine in the Site must have at least one Replication Agent running to be included in the site. | |
This class provides connection management. | |
Each DBEngine can host one or more databases. | |
Each OpSystem (operating system) may contain one or more database servers. | |
A Volume may contain one or more files. Files and folders are both considered to belong to the File class. | |
Each Site may contain one or more physical devices, including computers, tablets, phones, and so forth that are referred to as hardware. | |
This class is used to retrieve a log or a Trace. | |
Each piece of physical Hardware may contain one or more operating systems — for example, a single computer could have a virtual machine with Windows installed and another running Linux. | |
A publication is a list of Files to be replicated. | |
A replication plan defines which files are being replicated. | |
The site class represents all the Hardware that is eligible for replication. | |
A sSubscription contains one Publication and indicates the target where the published files are to be replicated. | |
This class allows you to manage debug and tracing. | |
Each OPSystem (operating system) can host one or more volumes (a volume may contain one or more Files). |
The system is distributed, with a FairCom DB database and Replication Agent on each node.
The metadata about the system is centralized in the Memphis database.
This means that any point on the system that can connect to the centralized metadata can access and control any part of the system.
The C++ API allows you to access and control the whole system by connecting to it through the Replication Manager. The replication API is a programmatic interface to the centralized replication metadata in the Memphis database.
The Replication Manager uses the API to manage the Replication Agent on each node. Developers can use the API to integrate the same functionality provided by the Replication Manager into their own custom applications.
The FairCom DB development environment includes the JSON Replication API as well as the C++ interface based on this API.
The architecture of the JSON RPC API defines a hierarchy of objects that represent the various components of a replication environment, such as physical hardware, operating systems, volumes, folders, files, database servers, and databases.
Note
Both are documented in the header files in the \ctreeApps\FcFatDB\source\fcRepl
directory.
Class definitions
High-level function headers
Site
At the highest level, the site class represents all the systems eligible for replication. To be eligible for replication, a system must have a Replication Agent installed. The site includes every replication-eligible system that is connected via local networks, remote networks, the cloud, and so forth.
Hardware
Each site may contain one or more physical devices, such as computers, tablets, phones, and so forth. These devices are referred to as hardware.
OpSystem
Each piece of physical hardware may contain one or more operating systems, referred to as OpSystems. For example, a single computer could have a virtual machine with Windows installed and another VM running Linux.
DBEngine
Each OpSystem may contain one or more database servers. In this release, only FairCom DB database servers are recognized.
Database
Each DBEngine can host one or more databases. The FairCom replication APIs recognize both c-treeDB and FairCom DB SQL databases.
Volume
Each operating system can host one or more volumes. A volume is a logical drive with a single file system. It may refer to a physical drive (fixed or removable) or a mount point within another volume.
File
A volume may contain zero or more files or folders. The terms file and folder are used interchangeably in this API as files and folders are both considered to belong to the file class.
The replication plan is the link between two database engines: the source and the target. The FairCom replication APIs use a publish-and-subscribe metaphor for defining which files will be replicated from the source to the target.
Note
Two-way replication is supported, in which case the data is replicated in both directions (from the source to the target and from the target to the source).
Publication
A publication is a list of files to be replicated. The files are defined using the hierarchy of file system classes defined above. These files will be the source for replication.
Subscription
A subscription contains one publication and indicates the target where the published files are to be replicated.
replication plan
A replication plan defines which files are being replicated. It can contain one or more subscriptions and, therefore, defines the replication target (the subscription) and the source (the publication used by the subscription).
In addition to the classes shown above, several secondary classes are defined. These classes are used primarily internally. A complete list of classes and functions is contained in all the header files in the \repl\include\fcRepl
directory.
The Replication API requires a running Replication Manager server that is in the Replication Manager package. Its executable name is called Memphis as a metaphor for a central management hub. Similarly, all methods in the API are prefixed with ctMemphis
. Memphis is a synonym for Replication Manager.
Servers on a network must register with Memphis to be replicated.
Connection management
The Replication Manager normally communicates to registered servers by using their hostname or list of IP addresses retrieved from the local network adapters. There are cases, depending on the network topology, that both Replication Manager and the other servers need to use some specific IP address to connect. The DBENGINE_IP_ADDRESS
keyword found in the ctagent.json
file facilitates this feature.
Replication Manager has an automated process for connecting with registered servers.
All IP addresses of servers that can be identified in a local network are automatically detected and listed in a DBEngine table.
The list is used to connect servers with the Replication Manager server. When a connection is made, the Replication Manager checks to see if the agent server is registered.
If a registered server has specified a dbengine_ip_address in its ctagent.json file, that IP address replaces the original in the DBEngine table.
JSON Replication API
This feature impacts ctMemphisGetDBEngines
, ctMemphisPersistDBEngine
, ctMemphisGetReplPlansDetails
, ctMemphisGetArchivedReplPlansDetails
, and ctMemphisGetDBEnginesByGroup
web APIs.
C++ API
This feature also impacts the FCREPLDBEngine
class with the extra Getters and Setters for this information.
Symbolic | Code | Description |
---|---|---|
FCREPL_SUCCESS | 0 | Success |
FCREPL_EOF | 1 | Cursor is EOF (end of file) |
FCREPL_DUPKEY | 2 | Key value already exists |
FCREPL_NOTFOUND | 100 | Record not found |
FCREPL_DISCONNECTED | 129 | Disconnected server |
FCREPL_SERVERNOTFOUND | 133 | Unable to connect to server |
FCREPL_SHUTDOWN_ERR | 150 | Shutdown error |
FCREPL_TIMEOUT_ERR | 156 | Timeout error |
FCREPL_BATFINISHED | 428 | No more info (batch canceled) |
FCREPL_NOTSUP_ERR | 454 | Feature not supported |
FCREPL_WARNING | 9000 | Warning |
FCREPL_CONFIG_ERR | 9001 | Could not initialize the configuration object |
FCREPL_LOGGER_ERR | 9002 | Could not initialize the logger object |
FCREPL_NOTIF_ERR | 9003 | Could not initialize the notification object |
FCREPL_FILESYSTEM_ERR | 9004 | Could not initialize the file system object |
FCREPL_PROVIDER_ERR | 9005 | Could not initialize the data provider object |
FCREPL_INVARG_ERR | 9006 | Invalid argument count |
FCREPL_INVARGVAL_ERR | 9007 | Invalid argument value |
FCREPL_MISARG_ERR | 9008 | Missing required argument |
FCREPL_HASHFULL_ERR | 9009 | Hash table exceeded the max size |
FCREPL_MEM_ERR | 9010 | Memory allocation error |
FCREPL_QUEUEFULL_ERR | 9011 | Queue exceeded max size |
FCREPL_INVACTION_ERR | 9012 | Invalid notification action |
FCREPL_QUEUE_ERR | 9013 | Queue is not initialized |
FCREPL_MUTEX_ERR | 9014 | Mutex is not initialized |
FCREPL_PROCTHRD_ERR | 9015 | Mutex has not started the process thread |
FCREPL_ACTION_ERR | 9016 | Invalid action |
FCREPL_DB_TYPE_ERR | 9017 | Mismatch provider DB type |
FCREPL_LOCALCT_ERR | 9018 | Could not load local c-tree libirary |
FCREPL_SESSION_ERR | 9019 | Could not allocate c-tree session |
FCREPL_INVFLD_ERR | 9020 | Invalid field number |
FCREPL_SCHEMATHRD_ERR | 9021 | Could not start schema update thread |
FCREPL_INTERN_ERR | 9022 | Internal error |
FCREPL_REPL_ERR | 9023 | Could not initialize the replication object |
FCREPL_INVREPLOBJ_ERR | 9024 | Invalid replication object |
FCREPL_STARTED_ERR | 9025 | Already started |
FCREPL_CONSUMER_ERR | 9026 | Consumer not found |
FCREPL_ALREADYEX_ERR | 9027 | Already exists |
FCREPL_INVFILTYP_ERR | 9028 | Invalid file type |
FCREPL_INVFILVOL_ERR | 9029 | Invalid file volume |
FCREPL_REPLNDEP_ERR | 9030 | Replication plan is not deployed |
FCREPL_MISAUTH_ERR | 9031 | Missing authentication information |
FCREPL_FTRNSFR_ERR | 9032 | File transfer not initialized |
FCREPL_REPLACT_ERR | 9033 | Replication plan is not stopped |
FCREPL_REPLNFOUND_ERR | 9034 | Replication plan is not found |
FCREPL_INUSE_ERR | 9035 | Entity is in use |
FCREPL_MISREPL_ERR | 9036 | Missing replication plan error |
FCREPL_MISDB_ERR | 9037 | Missing database in subscription |
FCREPL_MISVOL_ERR | 9038 | Missing volume information |
FCREPL_FNOTFOUND_ERR | 9039 | File not found error |
FCREPL_INVSUBS_ERR | 9040 | Invalid subscription |
FCREPL_INVPATH_ERR | 9041 | Invalid file path |
FCREPL_INVFUNC_ERR | 9042 | Invalid function |
FCREPL_INVOS_ERR | 9043 | Invalid opSystem |
FCREPL_NOTRUN_ERR | 9044 | Thread is not running |
FCREPL_NACTIVE_ERR | 9045 | replication plan is not started |
FCREPL_MISLPOS_ERR | 9046 | replication plan is missing log position |
FCREPL_NCONN_ERR | 9047 | Agent is not connected |
FCREPL_INVTOK_ERR | 9048 | Invalid token (wrong or expired) |
FCREPL_DBINUSE_ERR | 9049 | DBEngine is in use |
FCREPL_REPLAGENT_ERR | 9050 | Replication agent error |
FCREPL_MASTERNOTRDY_ERR | 9051 | Master server is not ready yet |
FCREPL_MISSUBS_ERR | 9052 | Replication does not have any subscription |
FCREPL_TARFIL_ERR | 9053 | Target file already exists |
FCREPL_REPLDISC_ERR | 9054 | Replication Agent is disconnected |
FCREPL_RESYNC_ERR | 9055 | Replication resync failed |
FCREPL_INRESYNC_ERR | 9056 | Replication is in a resync operation now |
FCREPL_EREPLFILE_ERR | 9057 | Replication does not have any file |
FCREPL_CANCELLED_ERR | 9058 | Operation has been cancelled |
FCREPL_RESTORE_ERR | 9059 | File dump restore error |
FCREPL_SQLPORT_ERR | 9060 | SQL port mismatch |
FCREPL_REPLEXIST_ERR | 9061 | replication plan information already exists |
FCREPL_NINACTIVE_ERR | 9062 | replication plan is not inactive |
Symbolic | Code | Description |
---|---|---|
FCREPLDP_SUCCESS | 0 | RCESSDP API returned OK |
FCREPLDP_MEM_ERR | 9501 | Could no allocate memory |
FCREPLDP_INVHDL_ERR | 9502 | Invalid handle |
FCREPLDP_INVSTR_ERR | 9503 | Invalid connection string |
FCREPLDP_PREPARE_ERR | 9504 | Error during the SQL command prepare |
FCREPLDP_MORE_RESULT | 9505 | There are more records to be retrieved |
FCREPLDP_INVFILETYPE_ERR | 9506 | Invalid file type |
FCREPLDP_INVARG_ERR | 9507 | Invalid argument |
FCREPLDP_MISSYM_ERR | 9508 | Missing symbol |
FCREPLDP_CIRFIL_ERR | 9509 | Circular file replication |
FCREPLDP_NOFILE_ERR | 9510 | Empty publication |