type file_descriptor_handling = | Close_file_descriptor of socket_handling |
| Do_not_close_file_descriptor |
val close : ?file_descriptor_handling:file_descriptor_handling -> t -> unit Async_kernel.Deferred.tclose t prevents further use of t, and makes shutdown() and close() system calls on t's underlying file descriptor according to the file_descriptor_handling argument and whether or not t is a socket, i.e., kind
t = Socket `Active:
| file_descriptor_handling | shutdown() | close() |
|----------------------------------------------+------------+---------|
| Do_not_close_file_descriptor | no | no |
| Close_file_descriptor Shutdown_socket | if socket | yes |
| Close_file_descriptor Do_not_shutdown_socket | no | yes |The result of close becomes determined once the system calls complete. It is OK to call close multiple times on the same t; calls subsequent to the initial call will have no effect, but will return the same deferred as the original call.