[ 
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)

Reply via email to