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

Method open_bucket

src/connection.cxx:235–282  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

233}
234
235PyObject*
236Connection::open_bucket(PyObject* kwargs)
237{
238 PyObject* pyObj_bucket_name = PyDict_GetItemString(kwargs, "bucket_name");
239 PyObject* pyObj_callback = PyDict_GetItemString(kwargs, "callback");
240 PyObject* pyObj_errback = PyDict_GetItemString(kwargs, "errback");
241
242 if (!validate_and_incref_callbacks(pyObj_callback, pyObj_errback)) {
243 return nullptr;
244 }
245
246 std::shared_ptr<std::promise<PyObject*>> barrier = nullptr;
247 std::future<PyObject*> fut;
248 if (nullptr == pyObj_callback && nullptr == pyObj_errback) {
249 barrier = std::make_shared<std::promise<PyObject*>>();
250 fut = barrier->get_future();
251 }
252
253 try {
254 std::string bucket_name = std::string(PyUnicode_AsUTF8(pyObj_bucket_name));
255
256 Py_BEGIN_ALLOW_THREADS
257 {
258 cluster_.open_bucket(
259 bucket_name,
260 [callback = pyObj_callback, errback = pyObj_errback, barrier, this](std::error_code ec) {
261 handle_connection_operation_callback(ec, "open_bucket", callback, errback, barrier);
262 });
263 }
264 Py_END_ALLOW_THREADS
265
266 if (barrier)
267 {
268 PyObject* result = nullptr;
269 Py_BEGIN_ALLOW_THREADS result = fut.get();
270 Py_END_ALLOW_THREADS return result;
271 }
272 Py_RETURN_NONE;
273 } catch (const std::exception& e) {
274 if (barrier) {
275 barrier->set_value(nullptr);
276 }
277 PyErr_SetString(PyExc_RuntimeError, e.what());
278 Py_XDECREF(pyObj_callback);
279 Py_XDECREF(pyObj_errback);
280 return nullptr;
281 }
282}
283
284PyObject*
285Connection::close_bucket(PyObject* kwargs)

Callers 2

handle_range_scan_opMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected