summaryrefslogtreecommitdiff
path: root/xmake/core/base/socket.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-04 23:41:22 +0800
committerruki <[email protected]>2022-04-04 23:41:22 +0800
commitd19a15f735dbc8b07bed1178e1a077b495179a07 (patch)
tree576969f8ae155ed689d0826e39e10be03cc91e91 /xmake/core/base/socket.lua
parentd7115ae9ce36bf98d54d4c48705c304f543c8c7b (diff)
add socket.ctrl
Diffstat (limited to 'xmake/core/base/socket.lua')
-rw-r--r--xmake/core/base/socket.lua21
1 files changed, 21 insertions, 0 deletions
diff --git a/xmake/core/base/socket.lua b/xmake/core/base/socket.lua
index 4e6435c09..95a338ce7 100644
--- a/xmake/core/base/socket.lua
+++ b/xmake/core/base/socket.lua
@@ -45,6 +45,10 @@ socket.EV_SEND = 2
socket.EV_CONN = socket.EV_SEND
socket.EV_ACPT = socket.EV_RECV
+-- the socket control code
+socket.CTRL_SET_RECVBUFF = 2
+socket.CTRL_SET_SENDBUFF = 4
+
-- new a socket
function _instance.new(socktype, family, sock)
local instance = table.inherit(_instance)
@@ -92,6 +96,23 @@ function _instance:rawfd()
return result, errors
end
+-- control socket
+function _instance:ctrl(code, value)
+
+ -- ensure opened
+ local ok, errors = self:_ensure_opened()
+ if not ok then
+ return -1, errors
+ end
+
+ -- control it
+ local ok, errors = io.socket_ctrl(self:cdata(), code, value)
+ if not ok and errors then
+ errors = string.format("%s: %s", self, errors)
+ end
+ return ok, errors
+end
+
-- bind socket
function _instance:bind(addr, port)