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

Method handle_connection_operation_callback

src/connection.cxx:77–127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

75}
76
77void
78Connection::handle_connection_operation_callback(std::error_code ec,
79 const char* operation,
80 PyObject* pyObj_callback,
81 PyObject* pyObj_errback,
82 std::shared_ptr<std::promise<PyObject*>> barrier,
83 connection_state_action state_action)
84{
85 PyGILState_STATE state = PyGILState_Ensure();
86
87 PyObject* result = nullptr;
88
89 if (ec) {
90 std::string msg = "Failed to ";
91 msg += operation;
92 result = build_exception(ec, __FILE__, __LINE__, msg.c_str());
93
94 if (pyObj_errback != nullptr) {
95 PyObject* ret = PyObject_CallFunctionObjArgs(pyObj_errback, result, nullptr);
96 Py_XDECREF(ret);
97 Py_XDECREF(result);
98 } else if (barrier) {
99 barrier->set_value(result);
100 } else {
101 Py_XDECREF(result);
102 }
103 } else {
104 if (state_action == connection_state_action::set_connected) {
105 connected_ = true;
106 } else if (state_action == connection_state_action::set_disconnected) {
107 connected_ = false;
108 }
109
110 Py_INCREF(Py_None);
111 result = Py_None;
112
113 if (pyObj_callback != nullptr) {
114 PyObject* ret = PyObject_CallFunctionObjArgs(pyObj_callback, result, nullptr);
115 Py_XDECREF(ret);
116 Py_XDECREF(result);
117 } else if (barrier) {
118 barrier->set_value(result);
119 } else {
120 Py_XDECREF(result);
121 }
122 }
123
124 Py_XDECREF(pyObj_callback);
125 Py_XDECREF(pyObj_errback);
126 PyGILState_Release(state);
127}
128
129PyObject*
130Connection::connect(PyObject* kwargs)

Callers

nothing calls this directly

Calls 1

build_exceptionFunction · 0.85

Tested by

no test coverage detected