@@ -343,6 +343,49 @@ impl TcpSocket {
343
343
} ) ,
344
344
}
345
345
}
346
+
347
+ /// Checks if Nagle's algorithm is enabled for this TCP socket.
348
+ #[ inline]
349
+ pub fn nodelay ( & self ) -> AxResult < bool > {
350
+ if let Some ( h) = unsafe { self . handle . get ( ) . read ( ) } {
351
+ Ok ( SOCKET_SET . with_socket :: < tcp:: Socket , _ , _ > ( h, |socket| socket. nagle_enabled ( ) ) )
352
+ } else {
353
+ ax_err ! ( NotConnected , "socket is not connected" )
354
+ }
355
+ }
356
+
357
+ /// Enables or disables Nagle's algorithm for this TCP socket.
358
+ #[ inline]
359
+ pub fn set_nodelay ( & self , enabled : bool ) -> AxResult < ( ) > {
360
+ if let Some ( h) = unsafe { self . handle . get ( ) . read ( ) } {
361
+ SOCKET_SET . with_socket_mut :: < tcp:: Socket , _ , _ > ( h, |socket| {
362
+ socket. set_nagle_enabled ( enabled) ;
363
+ } ) ;
364
+ Ok ( ( ) )
365
+ } else {
366
+ ax_err ! ( NotConnected , "socket is not connected" )
367
+ }
368
+ }
369
+
370
+ /// Returns the maximum capacity of the receive buffer in bytes.
371
+ #[ inline]
372
+ pub fn recv_capacity ( & self ) -> AxResult < usize > {
373
+ if let Some ( h) = unsafe { self . handle . get ( ) . read ( ) } {
374
+ Ok ( SOCKET_SET . with_socket :: < tcp:: Socket , _ , _ > ( h, |socket| socket. recv_capacity ( ) ) )
375
+ } else {
376
+ ax_err ! ( NotConnected , "socket is not connected" )
377
+ }
378
+ }
379
+
380
+ /// Returns the maximum capacity of the send buffer in bytes.
381
+ #[ inline]
382
+ pub fn send_capacity ( & self ) -> AxResult < usize > {
383
+ if let Some ( h) = unsafe { self . handle . get ( ) . read ( ) } {
384
+ Ok ( SOCKET_SET . with_socket :: < tcp:: Socket , _ , _ > ( h, |socket| socket. send_capacity ( ) ) )
385
+ } else {
386
+ ax_err ! ( NotConnected , "socket is not connected" )
387
+ }
388
+ }
346
389
}
347
390
348
391
/// Private methods
0 commit comments