-
Notifications
You must be signed in to change notification settings - Fork 201
Add SockOptValue and setSockOptValue
#588
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add SockOptValue and setSockOptValue
#588
Conversation
The existing interface did not allow one to set both `Linger` and `NoDelay` socket options. With the `SocketOptionValue` introduced in [this `network` PR](haskell/network#588), this is now possible.
kazu-yamamoto
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that setSocketOptionValue is an extended version of setSockOpt.
So, the name should be setSockOptValue and SockOptValue.
The export list should be setSockOpt, SockOptValue and setSockOptValue in order.
3893a87 to
2c2a445
Compare
|
That makes sense to me, I've updated this! |
2c2a445 to
39d6b8d
Compare
The existing interface did not allow one to set both `Linger` and `NoDelay` socket options. With the `SocketOptValue` introduced in [this `network` PR](haskell/network#588), this is now possible.
Network/Socket/Options.hsc
Outdated
| (#poke struct linger, l_linger) p linger | ||
| #endif | ||
|
|
||
| -- | Existential socket option value |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I feel that "existential" is too academic to understand for many users.
How about this?
"A data type to hold several different socket option types such as Int and StructLinger".
Please feel free to fix my broken English.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah yes, thanks, I was also a bit worried about that. What you wrote sounds great, I'll update this!
39d6b8d to
85a4b71
Compare
kazu-yamamoto
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm sorry for not noticing this yesterday.
Socket should be Sock.
I will merge this PR with this modifications.
85a4b71 to
da15ef8
Compare
|
Whoops, sorry about that. Fixed! |
See docs for `setSockOptValue`
da15ef8 to
f0b472e
Compare
SocketOptionValue and setSocketOptionValueSockOptValue and setSockOptValue
The existing interface did not allow one to set both `Linger` and `NoDelay` socket options. With the `SockOptValue` introduced in [this `network` PR](haskell/network#588), this is now possible.
|
Merged. |
|
Looks good to me, thank you! |
|
A new version has been released. |
## Version 3.2.7.0 * Using nested `bracket` for `gracefulClose`. [#591](haskell/network#590) * Fix memory leak in getaddrinfo and make it async exception safe. [#591](haskell/network#591) * Make call to c_free async exception safe. [#592](haskell/network#592) ## Version 3.2.6.0 * fixing the Show instance of IPv4-mapped IPv6 address on little endian machines ## Version 3.2.5.0 * `gracefulClose` based on STM racing and `timeout`. [#587](haskell/network#587) ## Version 3.2.4.0 * New API: setSockOptValue. [#588](haskell/network#588) ## Version 3.2.3.0 * Making getAddrInfo polymorphic [#587](haskell/network#587) ## Version 3.2.2.0 * New API: waitReadSocketSTM, waitAndCancelReadSocketSTM, waitWriteSocketSTM, waitAndCancelWriteSocketSTM [#586](haskell/network#586) * Checking the length of ASCII string allowing trailing 0. [#585](haskell/network#585) ## Version 3.2.1.0 * Trying to release with the latest autoreconf. Packing "network" in the local directory instead of CI. * Remove includes from .cabal-file [#583](haskell/network#583) * making gracefulClose more graceful [#580](haskell/network#580) * Update config.guess, config.sub to their latest versions [#579](haskell/network#579)
The motivation for this is to enable an interface in
network-runsimilar to theopen{Client,Server,TCPServer}SocketWithOptionsthat allows users to set multiple socket option values of potentially different value types, e.g.NoDelayandLinger. See the corresponding PR innetwork-run