realtime: avoid unnecessary mallocs
[nit.git] / lib / socket / socket.nit
index 6e036b7..96944f1 100644 (file)
@@ -71,7 +71,7 @@ class TCPStream
        # 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)
@@ -216,7 +216,7 @@ class TCPStream
                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
@@ -401,13 +401,13 @@ class UDPSocket
        # 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`
@@ -416,7 +416,7 @@ class UDPSocket
        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
@@ -426,7 +426,7 @@ class UDPSocket
                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`