# Creates a socket connection to host `host` on port `port`
init connect(host: String, port: Int)
do
- _buffer = new NativeString(1024)
+ _buffer = new CString(1024)
_buffer_pos = 0
native = new NativeSocket.socket(new NativeSocketAddressFamilies.af_inet,
new NativeSocketTypes.sock_stream, new NativeSocketProtocolFamilies.pf_null)
if _buffer_capacity >= len then return
_buffer_capacity = len
- var ns = new NativeString(_buffer_capacity)
+ var ns = new CString(_buffer_capacity)
_buffer.copy_to(ns, _buffer_length - _buffer_pos, _buffer_pos, 0)
_buffer = ns
end
# On error, returns an empty string and sets `error` appropriately.
fun recv(length: Int): String
do
- var buf = new NativeString(length)
+ var buf = new CString(length)
var len = native.recvfrom(buf, length, 0, new NativeSocketAddrIn.nul)
if len == -1 then
error = new IOError.from_errno
return ""
end
- return buf.to_s_with_length(len)
+ return buf.to_s_unsafe(len, copy=false)
end
# Receive `length` bytes of data from any sender and store the sender info in `sender.item`
fun recv_from(length: Int, sender: Ref[nullable SocketAddress]): String
do
var src = new NativeSocketAddrIn
- var buf = new NativeString(length)
+ var buf = new CString(length)
var len = native.recvfrom(buf, length, 0, src)
if len == -1 then
end
sender.item = new SocketAddress(src)
- return buf.to_s_with_length(len)
+ return buf.to_s_unsafe(len, copy=false)
end
# Send `data` to `dest_address` on `port`