Updated comments of MPPCommonUtils
This commit is contained in:
parent
2a53d78ae4
commit
c4c07acc1e
|
@ -26,7 +26,7 @@
|
|||
NSString *const MPPTasksErrorDomain = @"com.google.mediapipe.tasks";
|
||||
|
||||
namespace {
|
||||
using absl::StatusCode;
|
||||
using absl::StatusCode;
|
||||
}
|
||||
|
||||
@implementation MPPCommonUtils
|
||||
|
@ -72,95 +72,70 @@ namespace {
|
|||
return YES;
|
||||
}
|
||||
|
||||
// Creates the NSEror with the appropriate error
|
||||
// MPPTasksErrorCode and message. MPPTasksErrorCode has a one to one
|
||||
// mapping with MediaPipeTasksStatus starting from the value 1(MPPTasksErrorCodeError)
|
||||
// and hence will be correctly initialized if directly cast from the integer code derived from
|
||||
// MediaPipeTasksStatus stored in its payload. MPPTasksErrorCode omits kOk = 0 of
|
||||
// MediaPipeTasksStatusx.
|
||||
//
|
||||
// Stores a string including absl status code and message(if non empty) as the
|
||||
// error message See
|
||||
// https://github.com/abseil/abseil-cpp/blob/master/absl/status/status.h#L514
|
||||
// for explanation. absl::Status::message() can also be used but not always
|
||||
// guaranteed to be non empty.
|
||||
/** Converts the absl status message to an NSString. */
|
||||
NSString *description = [NSString
|
||||
stringWithCString:status.ToString(absl::StatusToStringMode::kWithNoExtraData).c_str()
|
||||
encoding:NSUTF8StringEncoding];
|
||||
|
||||
// Payload of absl::Status created by the MediaPipe task library stores an appropriate value of
|
||||
// the enum MediaPipeTasksStatus. The integer value corresponding to the MediaPipeTasksStatus enum
|
||||
// stored in the payload is extracted here to later map to the appropriate error code to be
|
||||
// returned. In cases where the enum is not stored in (payload is NULL or the payload string
|
||||
// cannot be converted to an integer), we set the error code value to be 1
|
||||
// (MPPTasksErrorCodeError of MPPTasksErrorCode used in the iOS library to signify
|
||||
// any errors not falling into other categories.) Since payload is of type absl::Cord that can be
|
||||
// type cast into an absl::optional<std::string>, we use the std::stoi function to convert it into
|
||||
// an integer code if possible.
|
||||
|
||||
MPPTasksErrorCode genericErrorCode = MPPTasksErrorCodeUnknownError;
|
||||
|
||||
MPPTasksErrorCode errorCode = genericErrorCode;
|
||||
|
||||
// If errorCode is outside the range of enum values possible or is
|
||||
// MPPTasksErrorCodeError, we try to map the absl::Status::code() to assign
|
||||
// appropriate MPPTasksErrorCode in default cases. Note:
|
||||
// The mapping to absl::Status::code() is done to generate a more specific error code than
|
||||
// MPPTasksErrorCodeError in cases when the payload can't be mapped to
|
||||
// MPPTasksErrorCode. This can happen when absl::Status returned by TFLite library are in turn
|
||||
// returned without modification by MediaPipe cc library methods.
|
||||
switch (status.code()) {
|
||||
case StatusCode::kCancelled:
|
||||
errorCode = MPPTasksErrorCodeCancelledError;
|
||||
break;
|
||||
case StatusCode::kUnknown:
|
||||
errorCode = MPPTasksErrorCodeUnknownError;
|
||||
break;
|
||||
case StatusCode::kInvalidArgument:
|
||||
errorCode = MPPTasksErrorCodeInvalidArgumentError;
|
||||
break;
|
||||
case StatusCode::kDeadlineExceeded:
|
||||
errorCode = MPPTasksErrorCodeDeadlineExceededError;
|
||||
break;
|
||||
case StatusCode::kNotFound:
|
||||
errorCode = MPPTasksErrorCodeNotFoundError;
|
||||
break;
|
||||
case StatusCode::kAlreadyExists:
|
||||
errorCode = MPPTasksErrorCodeAlreadyExistsError;
|
||||
break;
|
||||
case StatusCode::kPermissionDenied:
|
||||
errorCode = MPPTasksErrorCodePermissionDeniedError;
|
||||
break;
|
||||
case StatusCode::kResourceExhausted:
|
||||
errorCode = MPPTasksErrorCodeResourceExhaustedError;
|
||||
break;
|
||||
case StatusCode::kFailedPrecondition:
|
||||
errorCode = MPPTasksErrorCodeFailedPreconditionError;
|
||||
break;
|
||||
case StatusCode::kAborted:
|
||||
errorCode = MPPTasksErrorCodeAbortedError;
|
||||
break;
|
||||
case StatusCode::kOutOfRange:
|
||||
errorCode = MPPTasksErrorCodeOutOfRangeError;
|
||||
break;
|
||||
case StatusCode::kUnimplemented:
|
||||
errorCode = MPPTasksErrorCodeUnimplementedError;
|
||||
break;
|
||||
case StatusCode::kInternal:
|
||||
errorCode = MPPTasksErrorCodeInternalError;
|
||||
break;
|
||||
case StatusCode::kUnavailable:
|
||||
errorCode = MPPTasksErrorCodeUnavailableError;
|
||||
break;
|
||||
case StatusCode::kDataLoss:
|
||||
errorCode = MPPTasksErrorCodeDataLossError;
|
||||
break;
|
||||
case StatusCode::kUnauthenticated:
|
||||
errorCode = MPPTasksErrorCodeUnauthenticatedError;
|
||||
break;
|
||||
default:
|
||||
errorCode = genericErrorCode;
|
||||
break;
|
||||
}
|
||||
/** Maps the absl::StatusCode to the appropriate MPPTasksErrorCode. Note: MPPTasksErrorCode omits
|
||||
* absl::StatusCode::kOk. */
|
||||
switch (status.code()) {
|
||||
case StatusCode::kCancelled:
|
||||
errorCode = MPPTasksErrorCodeCancelledError;
|
||||
break;
|
||||
case StatusCode::kUnknown:
|
||||
errorCode = MPPTasksErrorCodeUnknownError;
|
||||
break;
|
||||
case StatusCode::kInvalidArgument:
|
||||
errorCode = MPPTasksErrorCodeInvalidArgumentError;
|
||||
break;
|
||||
case StatusCode::kDeadlineExceeded:
|
||||
errorCode = MPPTasksErrorCodeDeadlineExceededError;
|
||||
break;
|
||||
case StatusCode::kNotFound:
|
||||
errorCode = MPPTasksErrorCodeNotFoundError;
|
||||
break;
|
||||
case StatusCode::kAlreadyExists:
|
||||
errorCode = MPPTasksErrorCodeAlreadyExistsError;
|
||||
break;
|
||||
case StatusCode::kPermissionDenied:
|
||||
errorCode = MPPTasksErrorCodePermissionDeniedError;
|
||||
break;
|
||||
case StatusCode::kResourceExhausted:
|
||||
errorCode = MPPTasksErrorCodeResourceExhaustedError;
|
||||
break;
|
||||
case StatusCode::kFailedPrecondition:
|
||||
errorCode = MPPTasksErrorCodeFailedPreconditionError;
|
||||
break;
|
||||
case StatusCode::kAborted:
|
||||
errorCode = MPPTasksErrorCodeAbortedError;
|
||||
break;
|
||||
case StatusCode::kOutOfRange:
|
||||
errorCode = MPPTasksErrorCodeOutOfRangeError;
|
||||
break;
|
||||
case StatusCode::kUnimplemented:
|
||||
errorCode = MPPTasksErrorCodeUnimplementedError;
|
||||
break;
|
||||
case StatusCode::kInternal:
|
||||
errorCode = MPPTasksErrorCodeInternalError;
|
||||
break;
|
||||
case StatusCode::kUnavailable:
|
||||
errorCode = MPPTasksErrorCodeUnavailableError;
|
||||
break;
|
||||
case StatusCode::kDataLoss:
|
||||
errorCode = MPPTasksErrorCodeDataLossError;
|
||||
break;
|
||||
case StatusCode::kUnauthenticated:
|
||||
errorCode = MPPTasksErrorCodeUnauthenticatedError;
|
||||
break;
|
||||
default:
|
||||
errorCode = genericErrorCode;
|
||||
break;
|
||||
}
|
||||
|
||||
[MPPCommonUtils createCustomError:error withCode:errorCode description:description];
|
||||
return NO;
|
||||
|
|
Loading…
Reference in New Issue
Block a user