(self: Enqueue<A, E>)
| 1135 | * @since 2.0.0 |
| 1136 | */ |
| 1137 | export const shutdown = <A, E>(self: Enqueue<A, E>): Effect<boolean> => |
| 1138 | internalEffect.sync(() => { |
| 1139 | if (self.state._tag === "Done") { |
| 1140 | return true |
| 1141 | } |
| 1142 | MutableList.clear(self.messages) |
| 1143 | const offers = self.state.offers |
| 1144 | finalize(self, self.state._tag === "Open" ? exitInterrupt : self.state.exit) |
| 1145 | if (offers.size > 0) { |
| 1146 | for (const entry of offers) { |
| 1147 | if (entry._tag === "Single") { |
| 1148 | entry.resume(exitFalse) |
| 1149 | } else { |
| 1150 | entry.resume(core.exitSucceed(entry.remaining.slice(entry.offset))) |
| 1151 | } |
| 1152 | } |
| 1153 | offers.clear() |
| 1154 | } |
| 1155 | return true |
| 1156 | }) |
| 1157 | |
| 1158 | /** |
| 1159 | * Takes and returns all currently buffered messages without waiting for more. |
no test coverage detected