VOL-1103 Transfer BCM error code to GRPC error codes
Change-Id: I7636bfdfbec40fc244407d3cd57bbc6e7f5cefd8
diff --git a/src/error_format.cc b/src/error_format.cc
new file mode 100644
index 0000000..5c88bc7
--- /dev/null
+++ b/src/error_format.cc
@@ -0,0 +1,41 @@
+#include "error_format.h"
+using grpc::Status;
+using grpc::StatusCode;
+
+
+Status bcm_to_grpc_err(bcmos_errno bcm_err, std::string message) {
+ StatusCode grpc_err = StatusCode::INTERNAL;
+
+ switch (bcm_err) {
+ case BCM_ERR_PARM:
+ grpc_err = StatusCode::INVALID_ARGUMENT;
+ break;
+ case BCM_ERR_RANGE:
+ grpc_err = StatusCode::OUT_OF_RANGE;
+ break;
+ case BCM_ERR_NOT_SUPPORTED:
+ grpc_err = StatusCode::UNIMPLEMENTED;
+ break;
+ case BCM_ERR_NOENT:
+ case BCM_ERR_NODEV:
+ grpc_err = StatusCode::NOT_FOUND;
+ break;
+ case BCM_ERR_TIMEOUT:
+ case BCM_ERR_TOO_LONG:
+ case BCM_ERR_TOO_MANY_REQS:
+ grpc_err = StatusCode::DEADLINE_EXCEEDED;
+ break;
+ case BCM_ERR_ALREADY:
+ grpc_err = StatusCode::ALREADY_EXISTS;
+ break;
+ case BCM_ERR_NO_MORE:
+ case BCM_ERR_INSUFFICIENT_LIST_MEM:
+ grpc_err = StatusCode::RESOURCE_EXHAUSTED;
+ break;
+ }
+
+ message.append(" BCM Error ");
+ message.append(std::to_string(bcm_err));
+
+ return Status(grpc_err, message);
+}