ovyalov added a comment.

In http://reviews.llvm.org/D14085#275507, @zturner wrote:

> I think most of the time they are used in a Connection class, but I don't 
> think it's necessarily guaranteed they will always be that way.
>
> I can think of at least one use case in the future where we will need to open 
> a socket to a server we don't control and stream some data down from the 
> server.  I don't see the advantage of using a Connection in that case.
>
> So I would say: Right now it's probably always used in Connection, but I 
> dont' want to lose the flexibility to use it standalone either.
>
> That said, IMO low-level OS primitive abstractions are by definition what 
> Host is for, but higher level abstractions built on top of those can use the 
> plugin interface


There are some corner cases that don't fit into regular model:

- Creation of UDP connection - LLDB uses pair of send/receive sockets and 
that's why we need to use UDPSocket::Connect instead of using factory method.
- ConnectionFileDescriptor::Connect creates a new TCP socket without giving up 
the ownership of a socket handle.

As an option, we can introduce static std::unique_ptr<Socket> 
Socket::Create(const char* scheme, bool child_processes_inherit, Error& error); 
as socket class creator method but without moving socket classes into plugins.


http://reviews.llvm.org/D14085



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to