@@ -47,15 +47,13 @@ Connection& Connection::operator=(Connection&& other) noexcept {
4747}
4848
4949Result Connection::Create (const Configuration& config, Connection& out) {
50- try {
51- auto ffi_config = utils::to_ffi_config (config);
52- out.conn_ = ffi::new_connection (ffi_config);
53- return utils::make_ok ();
54- } catch (const rust::Error& e) {
55- return utils::make_client_error (e.what ());
56- } catch (const std::exception& e) {
57- return utils::make_client_error (e.what ());
50+ auto ffi_config = utils::to_ffi_config (config);
51+ auto ffi_result = ffi::new_connection (ffi_config);
52+ auto result = utils::from_ffi_result (ffi_result.result );
53+ if (result.Ok ()) {
54+ out.conn_ = utils::ptr_from_ffi<ffi::Connection>(ffi_result);
5855 }
56+ return result;
5957}
6058
6159bool Connection::Available () const { return conn_ != nullptr ; }
@@ -65,30 +63,26 @@ Result Connection::GetAdmin(Admin& out) {
6563 return utils::make_client_error (" Connection not available" );
6664 }
6765
68- try {
69- out.admin_ = conn_->get_admin ();
70- return utils::make_ok ();
71- } catch (const rust::Error& e) {
72- return utils::make_client_error (e.what ());
73- } catch (const std::exception& e) {
74- return utils::make_client_error (e.what ());
66+ auto ffi_result = conn_->get_admin ();
67+ auto result = utils::from_ffi_result (ffi_result.result );
68+ if (result.Ok ()) {
69+ out.admin_ = utils::ptr_from_ffi<ffi::Admin>(ffi_result);
7570 }
71+ return result;
7672}
7773
7874Result Connection::GetTable (const TablePath& table_path, Table& out) {
7975 if (!Available ()) {
8076 return utils::make_client_error (" Connection not available" );
8177 }
8278
83- try {
84- auto ffi_path = utils::to_ffi_table_path (table_path);
85- out.table_ = conn_->get_table (ffi_path);
86- return utils::make_ok ();
87- } catch (const rust::Error& e) {
88- return utils::make_client_error (e.what ());
89- } catch (const std::exception& e) {
90- return utils::make_client_error (e.what ());
79+ auto ffi_path = utils::to_ffi_table_path (table_path);
80+ auto ffi_result = conn_->get_table (ffi_path);
81+ auto result = utils::from_ffi_result (ffi_result.result );
82+ if (result.Ok ()) {
83+ out.table_ = utils::ptr_from_ffi<ffi::Table>(ffi_result);
9184 }
85+ return result;
9286}
9387
9488} // namespace fluss
0 commit comments