| 118 | // �����߳������̳߳�֮��� IPC ͨ���ඨ�� |
| 119 | |
| 120 | class db_ipc : public ipc_client |
| 121 | { |
| 122 | public: |
| 123 | db_ipc(db_service* dbs, acl_int64 magic) |
| 124 | : ipc_client(magic) |
| 125 | , dbservice_(dbs) |
| 126 | { |
| 127 | } |
| 128 | |
| 129 | ~db_ipc(void) |
| 130 | { |
| 131 | } |
| 132 | |
| 133 | virtual void on_message(int nMsg, void* data, int dlen acl_unused) |
| 134 | { |
| 135 | DB_IPC_DAT* dat = (DB_IPC_DAT*) data; |
| 136 | db_query* query = dat->query; |
| 137 | |
| 138 | switch (nMsg) { |
| 139 | case DB_OK: |
| 140 | query->on_ok(dat->rows, dat->affected_rows); |
| 141 | break; |
| 142 | case DB_ERR_OPEN: |
| 143 | query->on_error(DB_ERR_OPEN); |
| 144 | break; |
| 145 | case DB_ERR_EXEC_SQL: |
| 146 | query->on_error(DB_ERR_EXEC_SQL); |
| 147 | break; |
| 148 | default: |
| 149 | break; |
| 150 | } |
| 151 | |
| 152 | dat->db->free_result(); |
| 153 | dbservice_->push_back(dat->db); |
| 154 | query->destroy(); |
| 155 | } |
| 156 | protected: |
| 157 | virtual void on_close(void) |
| 158 | { |
| 159 | delete this; |
| 160 | } |
| 161 | private: |
| 162 | db_service* dbservice_; |
| 163 | }; |
| 164 | |
| 165 | ////////////////////////////////////////////////////////////////////////// |
| 166 | #ifdef ACL_WINDOWS |
no outgoing calls
no test coverage detected
searching dependent graphs…