MCPcopy Create free account
hub / github.com/couchbase/couchbase-python-client / close

Method close

src/connection.cxx:186–233  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

184}
185
186PyObject*
187Connection::close(PyObject* kwargs)
188{
189 PyObject* pyObj_callback = kwargs ? PyDict_GetItemString(kwargs, "callback") : nullptr;
190 PyObject* pyObj_errback = kwargs ? PyDict_GetItemString(kwargs, "errback") : nullptr;
191
192 if (!validate_and_incref_callbacks(pyObj_callback, pyObj_errback)) {
193 return nullptr;
194 }
195
196 std::shared_ptr<std::promise<PyObject*>> barrier = nullptr;
197 std::future<PyObject*> fut;
198 if (nullptr == pyObj_callback && nullptr == pyObj_errback) {
199 barrier = std::make_shared<std::promise<PyObject*>>();
200 fut = barrier->get_future();
201 }
202
203 try {
204 Py_BEGIN_ALLOW_THREADS
205 {
206 cluster_.close([callback = pyObj_callback, errback = pyObj_errback, barrier, this]() {
207 handle_connection_operation_callback(std::error_code{},
208 "close",
209 callback,
210 errback,
211 barrier,
212 connection_state_action::set_disconnected);
213 });
214 }
215 Py_END_ALLOW_THREADS
216
217 if (barrier)
218 {
219 PyObject* result = nullptr;
220 Py_BEGIN_ALLOW_THREADS result = fut.get();
221 Py_END_ALLOW_THREADS return result;
222 }
223 Py_RETURN_NONE;
224 } catch (const std::exception& e) {
225 if (barrier) {
226 barrier->set_value(nullptr);
227 }
228 PyErr_SetString(PyExc_RuntimeError, e.what());
229 Py_XDECREF(pyObj_callback);
230 Py_XDECREF(pyObj_errback);
231 return nullptr;
232 }
233}
234
235PyObject*
236Connection::open_bucket(PyObject* kwargs)

Callers 12

~ConnectionMethod · 0.45
dealloc_transactionsMethod · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
mainFunction · 0.45
filtering_logs.pyFile · 0.45
env_based_file.pyFile · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected