> On Mar 18, 2016, at 10:20 PM, Matthias Vallentin <vallen...@icir.org> wrote:
> 
> During Broker refactoring, I noticed the following: all headers in
> broker/* include either standard library headers or Broker headers. This
> appears to be by design, which makes sense to me. 
> 
> As a library writer, one faces the tricky question of exposing headers
> from dependencies. For example, Broker currently has it's own
> broker::util::optional, which ships as a (now outdated) copy of the
> corresponding CAF source. I am inclined to change this copy to an
> include that points directly into CAF headers, with the following
> rationale: Broker already depends on CAF, and a system that has CAF
> installed always ships with CAF headers. (Strictly speaking, we're not
> copying the code of <vector> into broker either, but relying on it via
> an include.)

Just thought I’d share the logic behind the original decision.  It was by 
design not to expose any CAF features directly in the public API of Broker, 
sort of as a proof that Broker’s interface would be sound enough to still work 
with arbitrary messaging back-ends/libraries besides CAF — i.e. treat the use 
of CAF an implementation detail.

Though, now I think this a case where including a CAF header might be an 
improvement and doesn’t defeat the original intention of treating CAF like an 
implementation detail since “optional” types aren’t a CAF-specific concept to 
begin with.  The problem was just that they don’t come standard until c++17, I 
needed to get them some place, but the arbitrary rule I had for myself at the 
time said to generally not include CAF things in Broker’s public API.  At the 
time, the risk of a copied version getting outdated seemed a lower priority to 
me than keeping Broker’s interface/design more simple/coherent in my head.

I think this is the only instance of this type of situation popping up when I 
was working on Broker and I can’t recall any other reasoning that led me handle 
it that way, so you’re proposed change looks good to me.  Hope the explanation 
helps.

- Jon

_______________________________________________
bro-dev mailing list
bro-dev@bro.org
http://mailman.icsi.berkeley.edu/mailman/listinfo/bro-dev

Reply via email to