blob: 5c88bc701335185c9f719c17b84e9550c0d18061 [file] [log] [blame]
Nicolas Palpacuer73222e02018-07-16 12:20:26 -04001#include "error_format.h"
2using grpc::Status;
3using grpc::StatusCode;
4
5
6Status bcm_to_grpc_err(bcmos_errno bcm_err, std::string message) {
7 StatusCode grpc_err = StatusCode::INTERNAL;
8
9 switch (bcm_err) {
10 case BCM_ERR_PARM:
11 grpc_err = StatusCode::INVALID_ARGUMENT;
12 break;
13 case BCM_ERR_RANGE:
14 grpc_err = StatusCode::OUT_OF_RANGE;
15 break;
16 case BCM_ERR_NOT_SUPPORTED:
17 grpc_err = StatusCode::UNIMPLEMENTED;
18 break;
19 case BCM_ERR_NOENT:
20 case BCM_ERR_NODEV:
21 grpc_err = StatusCode::NOT_FOUND;
22 break;
23 case BCM_ERR_TIMEOUT:
24 case BCM_ERR_TOO_LONG:
25 case BCM_ERR_TOO_MANY_REQS:
26 grpc_err = StatusCode::DEADLINE_EXCEEDED;
27 break;
28 case BCM_ERR_ALREADY:
29 grpc_err = StatusCode::ALREADY_EXISTS;
30 break;
31 case BCM_ERR_NO_MORE:
32 case BCM_ERR_INSUFFICIENT_LIST_MEM:
33 grpc_err = StatusCode::RESOURCE_EXHAUSTED;
34 break;
35 }
36
37 message.append(" BCM Error ");
38 message.append(std::to_string(bcm_err));
39
40 return Status(grpc_err, message);
41}