Skip to content

Commit 28bc979

Browse files
committed
Rename #before_close to #shutdown
1 parent f5af429 commit 28bc979

File tree

10 files changed

+34
-23
lines changed

10 files changed

+34
-23
lines changed

src/crystal/event_loop/file_descriptor.cr

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,13 @@ abstract class Crystal::EventLoop
4646
# file descriptor.
4747
abstract def reopened(file_descriptor : Crystal::System::FileDescriptor) : Nil
4848

49-
# Hook to react on the file descriptor after the IO object has been marked
50-
# closed but before calling `#close` to actually close the system fd or
51-
# handle.
49+
# Internal shutdown of the file descriptor. Called after the
50+
# IO::FileDescriptor has been marked closed but before calling `#close` to
51+
# actually close the system fd or handle.
5252
#
53-
# On UNIX targets the event loop must resume pending waiters and let them
54-
# fail because the IO object is closed.
55-
def before_close(file_descriptor : Crystal::System::FileDescriptor) : Nil
56-
end
53+
# Implementations shall resume all pending waiters and let them fail because
54+
# the IO has been closed.
55+
abstract def shutdown(file_descriptor : Crystal::System::FileDescriptor) : Nil
5756

5857
# Closes the system fd or handle.
5958
abstract def close(file_descriptor : Crystal::System::FileDescriptor) : Nil

src/crystal/event_loop/iocp.cr

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,9 @@ class Crystal::EventLoop::IOCP < Crystal::EventLoop
307307
raise NotImplementedError.new("Crystal::System::IOCP#reopened(FileDescriptor)")
308308
end
309309

310+
def shutdown(file_descriptor : Crystal::System::FileDescriptor) : Nil
311+
end
312+
310313
def close(file_descriptor : Crystal::System::FileDescriptor) : Nil
311314
LibC.CancelIoEx(file_descriptor.windows_handle, nil) unless file_descriptor.system_blocking?
312315
file_descriptor.file_descriptor_close
@@ -445,6 +448,9 @@ class Crystal::EventLoop::IOCP < Crystal::EventLoop
445448
end
446449
end
447450

451+
def shutdown(socket : ::Socket) : Nil
452+
end
453+
448454
def close(socket : ::Socket) : Nil
449455
raise NotImplementedError.new("Crystal::System::IOCP#close(Socket)")
450456
end

src/crystal/event_loop/libevent.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ class Crystal::EventLoop::LibEvent < Crystal::EventLoop
178178
file_descriptor.evented_close
179179
end
180180

181-
def before_close(file_descriptor : Crystal::System::FileDescriptor) : Nil
181+
def shutdown(file_descriptor : Crystal::System::FileDescriptor) : Nil
182182
# perform cleanup before LibC.close. Using a file descriptor after it has
183183
# been closed is never defined and can always lead to undefined results
184184
file_descriptor.evented_close
@@ -302,7 +302,7 @@ class Crystal::EventLoop::LibEvent < Crystal::EventLoop
302302
end
303303
end
304304

305-
def before_close(socket : ::Socket) : Nil
305+
def shutdown(socket : ::Socket) : Nil
306306
# perform cleanup before LibC.close. Using a file descriptor after it has
307307
# been closed is never defined and can always lead to undefined results
308308
socket.evented_close

src/crystal/event_loop/polling.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ abstract class Crystal::EventLoop::Polling < Crystal::EventLoop
232232
resume_all(file_descriptor)
233233
end
234234

235-
def before_close(file_descriptor : System::FileDescriptor) : Nil
235+
def shutdown(file_descriptor : System::FileDescriptor) : Nil
236236
# perform cleanup before LibC.close. Using a file descriptor after it has
237237
# been closed is never defined and can always lead to undefined results
238238
resume_all(file_descriptor)
@@ -366,7 +366,7 @@ abstract class Crystal::EventLoop::Polling < Crystal::EventLoop
366366
end
367367
end
368368

369-
def before_close(socket : ::Socket) : Nil
369+
def shutdown(socket : ::Socket) : Nil
370370
# perform cleanup before LibC.close. Using a file descriptor after it has
371371
# been closed is never defined and can always lead to undefined results
372372
resume_all(socket)

src/crystal/event_loop/socket.cr

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ abstract class Crystal::EventLoop
7474
# and the source address.
7575
abstract def receive_from(socket : ::Socket, slice : Bytes) : Tuple(Int32, ::Socket::Address)
7676

77-
# Hook to react on the socket after the IO object has been marked closed but
78-
# before calling `#close` to actually close the system socket fd or handle.
77+
# Internal shutdown of the socket. Called after the Socket has been marked
78+
# closed but before calling `#close` to actually close the system socket fd
79+
# or handle.
7980
#
80-
# On UNIX targets the event loop must resume pending waiters and let them
81-
# fail because the IO object is closed.
82-
def before_close(socket : ::Socket) : Nil
83-
end
81+
# Implementations shall resume all pending waiters and let them fail because
82+
# the IO has been closed. They don't have to call the `shutdown` syscall.
83+
abstract def shutdown(socket : ::Socket) : Nil
8484

8585
# Closes the system socket fd or handle.
8686
abstract def close(socket : ::Socket) : Nil

src/crystal/event_loop/wasi.cr

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,10 +80,13 @@ class Crystal::EventLoop::Wasi < Crystal::EventLoop
8080
raise NotImplementedError.new("Crystal::EventLoop#reopened(FileDescriptor)")
8181
end
8282

83-
def before_close(file_descriptor : Crystal::System::FileDescriptor) : Nil
83+
def shutdown(file_descriptor : Crystal::System::FileDescriptor) : Nil
8484
file_descriptor.evented_close
8585
end
8686

87+
def shutdown(file_descriptor : Crystal::System::FileDescriptor) : Nil
88+
end
89+
8790
def close(file_descriptor : Crystal::System::FileDescriptor) : Nil
8891
file_descriptor.file_descriptor_close
8992
end
@@ -136,10 +139,13 @@ class Crystal::EventLoop::Wasi < Crystal::EventLoop
136139
raise NotImplementedError.new "Crystal::Wasi::EventLoop#accept"
137140
end
138141

139-
def before_close(socket : ::Socket) : Nil
142+
def shutdown(socket : ::Socket) : Nil
140143
socket.evented_close
141144
end
142145

146+
def shutdown(socket : ::Socket) : Nil
147+
end
148+
143149
def close(socket : ::Socket) : Nil
144150
socket.socket_close
145151
end

src/crystal/system/unix/file_descriptor.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ module Crystal::System::FileDescriptor
134134
end
135135

136136
private def system_close
137-
event_loop.before_close(self)
137+
event_loop.shutdown(self)
138138
event_loop.close(self)
139139
end
140140

src/crystal/system/unix/socket.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ module Crystal::System::Socket
224224
end
225225

226226
private def system_close
227-
event_loop.before_close(self)
227+
event_loop.shutdown(self)
228228
event_loop.close(self)
229229
end
230230

src/crystal/system/wasi/socket.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ module Crystal::System::Socket
152152
end
153153

154154
private def system_close
155-
event_loop.before_close(self)
155+
event_loop.shutdown(self)
156156
event_loop.close(self)
157157
end
158158

src/crystal/system/win32/file_descriptor.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ module Crystal::System::FileDescriptor
216216
end
217217

218218
private def system_close
219-
event_loop.before_close(self)
219+
event_loop.shutdown(self)
220220
event_loop.close(self)
221221
end
222222

0 commit comments

Comments
 (0)