2
2
{-# LANGUAGE DeriveDataTypeable #-}
3
3
{-# LANGUAGE PatternSynonyms #-}
4
4
{-# LANGUAGE ScopedTypeVariables #-}
5
+ {-# LANGUAGE ViewPatterns #-}
5
6
6
7
#include "HsNet.h"
7
8
##include "HsNetDef.h"
@@ -14,7 +15,8 @@ module Network.Socket.Options (
14
15
,RecvLowWater ,SendLowWater ,RecvTimeOut ,SendTimeOut
15
16
,UseLoopBack ,UserTimeout ,IPv6Only
16
17
,RecvIPv4TTL ,RecvIPv4TOS ,RecvIPv4PktInfo
17
- ,RecvIPv6HopLimit ,RecvIPv6TClass ,RecvIPv6PktInfo )
18
+ ,RecvIPv6HopLimit ,RecvIPv6TClass ,RecvIPv6PktInfo
19
+ ,CustomSockOpt )
18
20
, isSupportedSocketOption
19
21
, whenSupported
20
22
, getSocketType
@@ -273,6 +275,12 @@ pattern RecvIPv6PktInfo = SockOpt (-1) (-1)
273
275
#endif
274
276
#endif // HAVE_DECL_IPPROTO_IPV6
275
277
278
+ pattern CustomSockOpt :: (CInt , CInt ) -> SocketOption
279
+ pattern CustomSockOpt xy <- ((\ (SockOpt x y) -> (x, y)) -> xy)
280
+ where
281
+ CustomSockOpt (x, y) = SockOpt x y
282
+
283
+ {-# COMPLETE CustomSockOpt #-}
276
284
#ifdef SO_LINGER
277
285
data StructLinger = StructLinger CInt CInt
278
286
0 commit comments