in source/io.c [23:74]
bool aws_py_socket_options_init(struct aws_socket_options *socket_options, PyObject *py_socket_options) {
AWS_ZERO_STRUCT(*socket_options);
bool success = false;
socket_options->domain = PyObject_GetAttrAsIntEnum(py_socket_options, "SocketOptions", "domain");
if (PyErr_Occurred()) {
goto done;
}
socket_options->type = PyObject_GetAttrAsIntEnum(py_socket_options, "SocketOptions", "type");
if (PyErr_Occurred()) {
goto done;
}
socket_options->connect_timeout_ms =
PyObject_GetAttrAsUint32(py_socket_options, "SocketOptions", "connect_timeout_ms");
if (PyErr_Occurred()) {
goto done;
}
socket_options->keepalive = PyObject_GetAttrAsBool(py_socket_options, "SocketOptions", "keep_alive");
if (PyErr_Occurred()) {
goto done;
}
socket_options->keep_alive_interval_sec =
PyObject_GetAttrAsUint16(py_socket_options, "SocketOptions", "keep_alive_interval_secs");
if (PyErr_Occurred()) {
goto done;
}
socket_options->keep_alive_timeout_sec =
PyObject_GetAttrAsUint16(py_socket_options, "SocketOptions", "keep_alive_timeout_secs");
if (PyErr_Occurred()) {
goto done;
}
socket_options->keep_alive_max_failed_probes =
PyObject_GetAttrAsUint16(py_socket_options, "SocketOptions", "keep_alive_max_probes");
if (PyErr_Occurred()) {
goto done;
}
success = true;
done:
if (!success) {
AWS_ZERO_STRUCT(*socket_options);
}
return success;
}