| 56 | } |
| 57 | |
| 58 | Status ToArrowStatus(const google::cloud::Status& s) { |
| 59 | std::ostringstream os; |
| 60 | os << "google::cloud::Status(" << s << ")"; |
| 61 | Status st; |
| 62 | switch (s.code()) { |
| 63 | case GcsCode::kCancelled: |
| 64 | st = Status::Cancelled(os.str()); |
| 65 | break; |
| 66 | case GcsCode::kUnknown: |
| 67 | st = Status::UnknownError(os.str()); |
| 68 | break; |
| 69 | case GcsCode::kInvalidArgument: |
| 70 | st = Status::Invalid(os.str()); |
| 71 | break; |
| 72 | case GcsCode::kDeadlineExceeded: |
| 73 | case GcsCode::kNotFound: |
| 74 | st = Status::IOError(os.str()); |
| 75 | break; |
| 76 | case GcsCode::kAlreadyExists: |
| 77 | st = Status::AlreadyExists(os.str()); |
| 78 | break; |
| 79 | case GcsCode::kPermissionDenied: |
| 80 | case GcsCode::kUnauthenticated: |
| 81 | st = Status::IOError(os.str()); |
| 82 | break; |
| 83 | case GcsCode::kResourceExhausted: |
| 84 | st = Status::CapacityError(os.str()); |
| 85 | break; |
| 86 | case GcsCode::kFailedPrecondition: |
| 87 | case GcsCode::kAborted: |
| 88 | st = Status::IOError(os.str()); |
| 89 | break; |
| 90 | case GcsCode::kOutOfRange: |
| 91 | st = Status::Invalid(os.str()); |
| 92 | break; |
| 93 | case GcsCode::kUnimplemented: |
| 94 | st = Status::NotImplemented(os.str()); |
| 95 | break; |
| 96 | case GcsCode::kInternal: |
| 97 | case GcsCode::kUnavailable: |
| 98 | case GcsCode::kDataLoss: |
| 99 | st = Status::IOError(os.str()); |
| 100 | break; |
| 101 | default: |
| 102 | return Status::OK(); |
| 103 | } |
| 104 | int errnum = ErrnoFromStatus(s); |
| 105 | if (errnum) { |
| 106 | st = st.WithDetail(::arrow::internal::StatusDetailFromErrno(errnum)); |
| 107 | } |
| 108 | return st; |
| 109 | } |
| 110 | |
| 111 | namespace gcs = ::google::cloud::storage; |
| 112 | |