<div dir="ltr">There's another issue with it being in Host, which is that it inherits from Connection, which is in Core.  It seems there's already a cyclic dependency between Host and Core, are we ok with this?  Granted, the circular dependency exists presently, but if that happened on accident, then we shouldn't make it worse.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 30, 2014 at 2:23 PM,  <span dir="ltr"><<a href="mailto:jingham@apple.com" target="_blank">jingham@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Seems to me that if it needs separate host implementations then it should be in the Host specific directories.  I sympathize with leaving it in Core as a promise that later on somebody will figure out how to pull just the Host specific parts into some lower level abstraction, but in the medium term that just makes the lldb structure less clear.<br>
<br>
However, if it turns out that there is a lot of code duplication between the Windows and Posix versions of this class, it would be better to keep the common code in core and use either inheritance or some other pattern to just put the Host specific implementation parts in their appropriate Host directories.<br>
<span class="HOEnZb"><font color="#888888"><br>
Jim<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
> On Sep 30, 2014, at 2:06 PM, Zachary Turner <<a href="mailto:zturner@google.com">zturner@google.com</a>> wrote:<br>
><br>
> Good question.  Logically it seems a little too high level for Host to me.  Conceptually speaking, CFD is just a wrapper around one of any number of host primitives.  For example, it's a wrapper around a file, or a socket, or a pipe, etc.  It just allows you to treat all those things using the same interface.  Host seems more appropriate for providing lower-level primitives.  It's kind of a grey area here though, because the implementation of CFD uses select(), which doesn't lend itself to a nice port on Windows, basically the whole thing has to be re-written.<br>
><br>
> I brainstormed ways of lowering a select-like abstraction into Host so that CFD could just be implemented without any platform specific stuff, but it's not that easy since the semantics have some subtle differences that make it difficult to present a generic interface.<br>
><br>
> On Tue, Sep 30, 2014 at 1:42 PM, Ed Maste <<a href="mailto:emaste@freebsd.org">emaste@freebsd.org</a>> wrote:<br>
> I haven't looked closely at the proposed patch, but should CFD instead migrate to source/Host/...?<br>
><br>
> <a href="http://reviews.llvm.org/D5548" target="_blank">http://reviews.llvm.org/D5548</a><br>
><br>
><br>
><br>
<br>
</div></div></blockquote></div><br></div>