source: trunk/include/Arm4dbBackEnd.h @ 704

Revision 677, 8.6 KB checked in by dcarter, 3 years ago (diff)

see #118: use C++ exception mechanism

Line 
1/**********************************************************************
2 * Copyright (c) 2005-2008 David Carter <dcarter@arm4.org> and others.
3 * All rights reserved.   This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * David Carter - Initial API and implementation
10 **********************************************************************/
11
12#ifndef ARM4DBBACKEND_H /* Prevent multiple inclusion */
13#define ARM4DBBACKEND_H 1
14
15#include "arm4_db.h"
16
17class Arm4dbBackEnd {
18public:
19        /* Constructors */
20
21        /* Destructors */
22        virtual ~Arm4dbBackEnd () {}
23
24        /* Accessors */
25
26        /* Mutators */
27
28        /* Operations */
29        virtual void initializeLibrary (void) = 0;
30        virtual void initializeThread (void) = 0;
31
32        virtual arm_error_t openDatabases (void) = 0;
33        virtual arm_error_t openDatabasesReadOnly (void) = 0;
34        virtual arm_error_t closeDatabasesNoLock (void) = 0;
35
36        virtual arm_error_t initializeSequences (arm4_shm_header_t *header_ptr) = 0;
37
38        virtual arm_error_t processApplicationInstances (const arm4_shm_application_instance_t *app_instance_ptr) = 0;
39        virtual arm_error_t processApplicationGroup (const arm4_shm_property_t *group_ptr) = 0;
40        virtual arm_error_t processApplicationInstanceId (const arm4_shm_property_t *property_ptr) = 0;
41        virtual arm_error_t processApplicationContext (const arm4_shm_context_property_t *property_ptr) = 0;
42        virtual arm_error_t processApplicationAddress (const arm4_shm_address_t *address_ptr) = 0;
43        virtual arm_error_t processTransactionInstances (const arm4_shm_transaction_instance_t *tran_instance_ptr) = 0;
44        virtual arm_error_t processTransactionContext (const arm4_shm_context_property_t *property_ptr) = 0;
45        virtual arm_error_t processTransactionUri (const arm4_shm_uri_t *uri_ptr) = 0;
46        virtual arm_error_t processTransactionMetricValue (const arm4_shm_metric_value_t *metric_ptr) = 0;
47        virtual arm_error_t processTransactionUser (const arm4_shm_user_t *user_ptr) = 0;
48        virtual arm_error_t processTransactionDiag (const arm4_shm_diag_t *diag_ptr) = 0;
49        virtual arm_error_t processCorrelators (const arm4_shm_correlator_t *correlator_ptr) = 0;
50        virtual arm_error_t processSequence (const arm4_shm_db_sequence_t *sequence_ptr) = 0;
51        virtual arm_error_t processRegisterApplication (const arm4_shm_register_application_t *application_ptr,
52                arm_id_t *appid_ptr,
53                arm_boolean_t *is_new_ptr) = 0;
54        virtual arm_error_t processRegisterApplicationIdentity (const arm4_shm_register_application_identity_t *identity_ptr) = 0;
55        virtual arm_error_t processRegisterApplicationContext (const arm4_shm_register_application_context_t *context_ptr) = 0;
56        virtual arm_error_t processRegisterTransaction (const arm4_shm_register_transaction_t *transaction_ptr,
57                arm_id_t *tranid_ptr,
58                arm_boolean_t *is_new_ptr) = 0;
59        virtual arm_error_t processRegisterTransactionIdentity (const arm4_shm_register_application_identity_t *identity_ptr) = 0;
60        virtual arm_error_t processRegisterTransactionContext (const arm4_shm_register_application_context_t *context_ptr) = 0;
61        virtual arm_error_t processRegisterTransactionUri (const arm4_shm_register_transaction_uri_t *uri_ptr) = 0;
62        virtual arm_error_t processRegisterTransactionMetricBinding (const arm4_shm_register_transaction_metric_t *metric_ptr) = 0;
63        virtual arm_error_t processRegisterMetric (arm4_shm_register_metric_t *metric_ptr, arm_id_t *metricid_ptr) = 0;
64        virtual arm_error_t processTraceStats (arm_time_t sample_time, arm4db_transaction_trace_stats_t *stats_ptr, int transaction_count) = 0;
65
66        virtual void saveApplicationDefinition (const arm_id_t &appl_id, const application_record_t &application) = 0;
67        virtual void saveApplicationIdentity (const arm_id_t &appl_id, const property_record_t &property) = 0;
68        virtual void saveApplicationContext (const arm_id_t &appl_id, const indexed_property_name_record_t &property) = 0;
69       
70        virtual void saveMetricDefinition (const arm_id_t &metric_id, const metric_record_t &metric) = 0;
71       
72        virtual void saveTransactionDefinition (const arm_id_t &tran_id, const transaction_record_t &transaction) = 0;
73        virtual void saveTransactionIdentity (const arm_id_t &tran_id, const property_record_t &property) = 0;
74        virtual void saveTransactionContext (const arm_id_t &tran_id, const indexed_property_name_record_t &property) = 0;
75        virtual void saveTransactionUri (const arm_id_t &tran_id, const char *uri_ptr) = 0;
76        virtual void saveTransactionMetric (const arm_id_t &tran_id, const arm_metric_binding_t &binding) = 0;
77       
78        virtual void saveApplicationInstance (const arm_app_start_handle_t app_handle, const application_instance_record_t &application) = 0;
79        virtual void saveAppInstanceContextValue (const arm_app_start_handle_t app_handle, const indexed_property_value_record_t &property) = 0;
80        virtual void saveAppInstanceGroup (const arm_app_start_handle_t app_handle, const char *group_ptr) = 0;
81        virtual void saveAppInstanceName (const arm_app_start_handle_t app_handle, const char *name_ptr) = 0;
82        virtual void saveAppInstanceAddress (const arm_app_start_handle_t app_handle, const application_address_record_t &address_value) = 0;
83
84        virtual void saveTransactionInstance (const arm_tran_start_handle_t tran_handle, const transaction_instance_record_t &transaction) = 0;
85        virtual void saveTranInstanceContextValue (const arm_tran_start_handle_t tran_handle, const indexed_property_value_record_t &property) = 0;
86        virtual void saveTranInstanceMetricValue (const arm_tran_start_handle_t tran_handle, const metric_value_record_t &metric) = 0;
87        virtual void saveTranInstanceUri (const arm_tran_start_handle_t tran_handle, const char *uri_ptr) = 0;
88        virtual void saveTranInstanceUser (const arm_tran_start_handle_t tran_handle, const user_record_t &user) = 0;
89        virtual void saveTranInstanceDiag (const arm_tran_start_handle_t tran_handle, const char *diag_ptr) = 0;
90        virtual void saveTranCorrelator (const arm_tran_start_handle_t tran_handle, const arm_correlator_t *correlator_ptr) = 0;
91        virtual void saveTranParentCorrelator (const arm_tran_start_handle_t tran_handle, const arm_correlator_t *correlator_ptr) = 0;
92
93        virtual void saveTraceStats (const arm_time_t sample_time, const arm4db_transaction_trace_stats_t &trace_stats) = 0;
94
95        /* Checkpoint the database transactions */
96        virtual void checkpoint (void) = 0;
97       
98        /* Get transaction stats */
99        virtual void *getStats (void) = 0;
100
101        /* Debugging routines */
102        virtual void dump (void) const = 0;
103       
104        /* Database backup and rollover */
105        virtual void backup (void) = 0;
106
107    /* Reporting functions */
108    virtual void printSummaries (void) const = 0;
109    virtual void printTransactions (void) const = 0;
110   
111    virtual std::list<arm_id_t> *getApplicationList (void) = 0;
112    virtual std::list<arm_id_t> *getTransactionList (void) = 0;
113    virtual std::list<arm_id_t> *getTransactionList (const arm_id_t &app_id) = 0;
114        virtual std::list<arm_tran_start_handle_t> *getTransactionInstanceList (const arm_id_t &tran_id) = 0;
115        virtual int getApplicationCount (void) = 0;
116        virtual int getTransactionCount (void) = 0;
117        virtual int getTransactionCount (const arm_id_t &app_id) = 0;
118   
119    virtual arm_error_t getApplicationInformation (const arm_id_t &app_id, arm4db_application_summary_t *summary_ptr) = 0;
120    virtual arm_error_t getTransactionInformation (const arm_id_t &tran_id, arm4db_transaction_summary_t *summary_ptr) = 0;
121        virtual const arm_correlator_t *getCorrelator (arm_tran_start_handle_t tran_handle, arm_correlator_t *correlator_ptr) = 0;
122        virtual const arm_correlator_t *getParentCorrelator (arm_tran_start_handle_t tran_handle, arm_correlator_t *correlator_ptr) = 0;
123   
124    virtual void setTransactionTraceInformation (const arm_id_t &tran_id, const arm4db_transaction_summary_t &summary) = 0;
125   
126    virtual std::ostream& exportApplicationDefinitions (std::ostream &os) const = 0;
127    virtual std::ostream& exportTransactionDefinitions (std::ostream &os) const = 0;
128    virtual std::ostream& exportMetricDefinitions (std::ostream &os) const = 0;
129    virtual std::ostream& exportApplications (std::ostream &os) const = 0;
130    virtual std::ostream& exportTransactions (std::ostream &os) const = 0;
131    virtual std::ostream& exportTraceStats (std::ostream &os) const = 0;
132
133    std::ostream& exportDefinitions (std::ostream &os) const;
134    std::ostream& exportAll (std::ostream &os) const;
135    void import (const char *filename_ptr);
136        void importFromMemory (const std::string &xml);
137
138        /* Operators */
139
140protected:
141        Arm4dbBackEnd () {}
142
143private:
144        /* Mark these as private to prevent their use */
145        Arm4dbBackEnd (const Arm4dbBackEnd &);
146        Arm4dbBackEnd &operator= (const Arm4dbBackEnd &);
147};
148
149#endif /* ARM4DBBACKEND_H */
Note: See TracBrowser for help on using the repository browser.