| 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 | |
|---|
| 17 | class Arm4dbBackEnd { |
|---|
| 18 | public: |
|---|
| 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 | |
|---|
| 140 | protected: |
|---|
| 141 | Arm4dbBackEnd () {} |
|---|
| 142 | |
|---|
| 143 | private: |
|---|
| 144 | /* Mark these as private to prevent their use */ |
|---|
| 145 | Arm4dbBackEnd (const Arm4dbBackEnd &); |
|---|
| 146 | Arm4dbBackEnd &operator= (const Arm4dbBackEnd &); |
|---|
| 147 | }; |
|---|
| 148 | |
|---|
| 149 | #endif /* ARM4DBBACKEND_H */ |
|---|