| 2123 | |
| 2124 | |
| 2125 | void Attachment::executeDyn(CheckStatusWrapper* status, ITransaction* apiTra, unsigned int length, |
| 2126 | const unsigned char* dyn) |
| 2127 | { |
| 2128 | /************************************** |
| 2129 | * |
| 2130 | * g d s _ d d l |
| 2131 | * |
| 2132 | ************************************** |
| 2133 | * |
| 2134 | * Functional description |
| 2135 | * |
| 2136 | **************************************/ |
| 2137 | try |
| 2138 | { |
| 2139 | reset(status); |
| 2140 | |
| 2141 | CHECK_HANDLE(rdb, isc_bad_db_handle); |
| 2142 | rem_port* port = rdb->rdb_port; |
| 2143 | RefMutexGuard portGuard(*port->port_sync, FB_FUNCTION); |
| 2144 | |
| 2145 | Rtr* transaction = remoteTransaction(apiTra); |
| 2146 | CHECK_HANDLE(transaction, isc_bad_trans_handle); |
| 2147 | |
| 2148 | // Validate data length |
| 2149 | |
| 2150 | CHECK_LENGTH(port, length); |
| 2151 | |
| 2152 | // Make up a packet for the remote guy |
| 2153 | |
| 2154 | PACKET* packet = &rdb->rdb_packet; |
| 2155 | packet->p_operation = op_ddl; |
| 2156 | P_DDL* ddl = &packet->p_ddl; |
| 2157 | ddl->p_ddl_database = rdb->rdb_id; |
| 2158 | ddl->p_ddl_transaction = transaction->rtr_id; |
| 2159 | ddl->p_ddl_blr.cstr_length = length; |
| 2160 | ddl->p_ddl_blr.cstr_address = dyn; |
| 2161 | |
| 2162 | send_and_receive(status, rdb, packet); |
| 2163 | } |
| 2164 | catch (const Exception& ex) |
| 2165 | { |
| 2166 | ex.stuffException(status); |
| 2167 | } |
| 2168 | } |
| 2169 | |
| 2170 | |
| 2171 | void Attachment::freeClientData(CheckStatusWrapper* status, bool force) |
no test coverage detected