<div dir="ltr">Unless you're using a connection string, the instantion site would just instantiate the exact thing it wants.  e.g.<div><br></div><div>ConnectionTcpListen *listener = new ConnectionTcpListen();</div><div>listener->Connect();</div><div>listener->GetBoundPort();</div><div><br></div><div>something like that.</div><div><br></div><div>For the connection string case, you would call a factory method that returns a Connection *</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 2, 2014 at 10:29 AM, Todd Fiala <span dir="ltr"><<a href="mailto:tfiala@google.com" target="_blank">tfiala@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hey Zachary,<span class=""><div><br></div><div><span style="font-family:arial,sans-serif;font-size:13px">>> On posix in cases where it's user specified or don't know, it seems we could just create a FileConnection and that would be equivalent to the current behavior, since it seems to treat everything the same anyway.</span><br></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div></span><div><span style="font-family:arial,sans-serif;font-size:13px">What would the instantiation sites for these classes look like?  Would it be a call into some kind of Host level "'Create{Socket,File,Pipe}(...)" factory method that knows what kind of underlying object to create based on that?  In which case you can fork off to the right versions for Windows, while POSIX-y systems would (as you noted) be able to use a single file-descriptor-based impl?</span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="h5">On Thu, Oct 2, 2014 at 10:04 AM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Wed, Oct 1, 2014 at 1:44 PM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>I was thinking about splitting CFD into multiple classes, one for each type of descriptor.  A FileConnection, PipeConnection, TcpSocketConnection, ListeningConnection, etc.  Then, the caller would have to instantiate the right kind.  This has its own set of problems, but at least seems to solve the problem of requiring the creator of the CFD to specify what they're actually giving us.  On posix in cases where it's user specified or don't know, it seems we could just create a FileConnection and that would be equivalent to the current behavior, since it seems to treat everything the same anyway.</div></div></blockquote><div><br></div></span><div>The more I think about this, the more I feel like it's the right approach (it might even be the only approach that even works, I can't really come up with anything else that solves the problem, much less does it nicely).  We've already got cases where people create a ConnectionFileDescriptor of a specific type, and use it in a way that would break if it weren't of that type.  Separating out the cases into different classes this way would allow these cases to be cleaner, as many methods that are publicly exposed on CFD, and some of the class members as well are specific to the type of fd being wrapped.  So the interfaces of the other types could become cleaner as well.  </div></div></div></div>
<br></div></div>_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank">lldb-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
<br></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><table cellspacing="0" cellpadding="0" style="color:rgb(136,136,136);font-family:'Times New Roman'"><tbody><tr style="color:rgb(85,85,85);font-family:sans-serif;font-size:small"><td nowrap style="border-top-style:solid;border-top-color:rgb(213,15,37);border-top-width:2px">Todd Fiala |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(51,105,232);border-top-width:2px"> Software Engineer |</td><td nowrap style="border-top-style:solid;border-top-color:rgb(0,153,57);border-top-width:2px"> <a href="mailto:tfiala@google.com" style="color:rgb(17,85,204)" target="_blank"><span style="background-color:rgb(255,255,204);color:rgb(34,34,34);background-repeat:initial initial">tfiala@google.com</span></a></td><td nowrap style="border-top-style:solid;border-top-color:rgb(238,178,17);border-top-width:2px"><br></td></tr></tbody></table><br></div>
</font></span></div>
</blockquote></div><br></div>