Skip to Content.
Sympa Menu

freetds - Re: [freetds] tds_socketpair on windows

freetds AT lists.ibiblio.org

Subject: FreeTDS Development Group

List archive

Chronological Thread  
  • From: "James K. Lowden" <jklowden AT freetds.org>
  • To: FreeTDS Development Group <freetds AT lists.ibiblio.org>
  • Subject: Re: [freetds] tds_socketpair on windows
  • Date: Sun, 1 Apr 2012 14:43:35 -0400

On Sun, 1 Apr 2012 17:27:09 +0100
Frediano Ziglio <freddy77 AT gmail.com> wrote:
> Il giorno 01/apr/2012, alle ore 16:35, "James K. Lowden"
> <jklowden AT freetds.org> ha scritto:
> > On Sun, 1 Apr 2012 11:24:18 +0100
> > Frediano Ziglio <freddy77 AT gmail.com> wrote:
> >
> >> Probably I'll rewrite this code using events (on Windows), for the
> >> moment streams are also ok.
> >
> > Could you explain that a little bit? Are you thinking of abandoning
> > the winsocket API?
>
> No, socket are required to use tcp/ip. In this case socketpair is
> used to stop select.

I'm looking at the changes in mem.c 1.223 to use a socketpair. I don't
understand what you mean by "to stop select". I don't understand why
we need a pair of sockets. To support MARS?

>To do this in Windows you can associate a system
> event to a socket with WSAEventSelect so you can wait for events with
> WaitForSingleObject and stop it just setting the event. More Windows
> style and less resources used. I think in Linux I could use event_fd.
> Using socketpair is the more portable way.

WaitForSingleObject() requires threads. event_fd is not portable and
not POSIX.

We put a lot of work into making the network layer as portable and
simple as possible. (We could do more: I am not convinced we need to
inhibit the Nagel algorithm, for example.) I hope we will continue to
use POSIX constructs wherever possible, and not introduce OS-specific
calls unless there is no other choice.

--jkl




Archive powered by MHonArc 2.6.24.

Top of Page