[
https://issues.apache.org/jira/browse/ARROW-4036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16722168#comment-16722168
]
Benjamin Kietzman commented on ARROW-4036:
------------------------------------------
A few ways I can think of to accomplish that without collisions
* Extend Status with something like std::error_category for each sub library
(could be as simple as adding a byte to Status::State identifying sub library)
* Replace StatusCode with the hardcoded timestamp of each code's definition
(== weaksauce uuid)
* RegisterStatusCode(&kSomeStatusCode) will not yield consistent codes; if we
add a new one in arrow then all the sub library codes will increment. Is that a
problem? It would break if, for example, different versions of arrow were
communicating Statuses
* RegisterStatusCode(timestamp, &kSomeStatusCode) will fix that if we have
guaranteed load order for sub libraries
Either of the latter two mean being a little careful about StatusCodes since
their values will not be defined until loading is complete. For example,
{{constexpr StatusCode my_code = kSomeStatusCode;}} would be undefined behavior
> [C++] Make status codes pluggable
> ---------------------------------
>
> Key: ARROW-4036
> URL: https://issues.apache.org/jira/browse/ARROW-4036
> Project: Apache Arrow
> Issue Type: Improvement
> Components: C++
> Affects Versions: 0.11.1
> Reporter: Antoine Pitrou
> Priority: Major
>
> Currently we're defining all Status codes in the Arrow base library, even
> those pertaining to sub-libraries such as arrow_python, plasma, gandiva, etc.
> We should try to devise some kind of simple registry system to avoid
> centralizing those.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)