@@ -331,6 +331,50 @@ ::grpc::Status ToGrpcStatus(const Status& arrow_status, ::grpc::ServerContext* c
331331 return status;
332332}
333333
334+ // Abseil is included.
335+ #ifdef ABSL_NAMESPACE_BEGIN
336+ Status FromAbslStatus (const ::absl::Status& absl_status) {
337+ switch (absl_status.code ()) {
338+ case ::absl::StatusCode::kOk :
339+ return Status::OK ();
340+ case ::absl::StatusCode::kCancelled :
341+ return Status::Cancelled (absl_status.ToString ());
342+ case ::absl::StatusCode::kUnknown :
343+ return Status::UnknownError (absl_status.ToString ());
344+ case ::absl::StatusCode::kInvalidArgument :
345+ return Status::Invalid (absl_status.ToString ());
346+ case ::absl::StatusCode::kDeadlineExceeded :
347+ return Status::IOError (absl_status.ToString ());
348+ case ::absl::StatusCode::kNotFound :
349+ return Status::KeyError (absl_status.ToString ());
350+ case ::absl::StatusCode::kAlreadyExists :
351+ return Status::AlreadyExists (absl_status.ToString ());
352+ case ::absl::StatusCode::kPermissionDenied :
353+ return Status::IOError (absl_status.ToString ());
354+ case ::absl::StatusCode::kResourceExhausted :
355+ return Status::IOError (absl_status.ToString ());
356+ case ::absl::StatusCode::kFailedPrecondition :
357+ return Status::IOError (absl_status.ToString ());
358+ case ::absl::StatusCode::kAborted :
359+ return Status::IOError (absl_status.ToString ());
360+ case ::absl::StatusCode::kOutOfRange :
361+ return Status::Invalid (absl_status.ToString ());
362+ case ::absl::StatusCode::kUnimplemented :
363+ return Status::NotImplemented (absl_status.ToString ());
364+ case ::absl::StatusCode::kInternal :
365+ return Status::IOError (absl_status.ToString ());
366+ case ::absl::StatusCode::kUnavailable :
367+ return Status::IOError (absl_status.ToString ());
368+ case ::absl::StatusCode::kDataLoss :
369+ return Status::IOError (absl_status.ToString ());
370+ case ::absl::StatusCode::kUnauthenticated :
371+ return Status::IOError (absl_status.ToString ());
372+ default :
373+ return Status::UnknownError (absl_status.ToString ());
374+ }
375+ }
376+ #endif
377+
334378} // namespace grpc
335379} // namespace transport
336380} // namespace flight
0 commit comments