( self: Dequeue<A, E>, min: number, max: number )
| 1858 | } |
| 1859 | |
| 1860 | const takeBetweenUnsafe = <A, E>( |
| 1861 | self: Dequeue<A, E>, |
| 1862 | min: number, |
| 1863 | max: number |
| 1864 | ): Exit<Array<A>, E> | undefined => { |
| 1865 | if (self.state._tag === "Done") { |
| 1866 | return self.state.exit |
| 1867 | } else if (max <= 0 || min <= 0) { |
| 1868 | return core.exitSucceed([]) |
| 1869 | } else if (self.capacity <= 0 && self.state.offers.size > 0) { |
| 1870 | self.capacity = 1 |
| 1871 | releaseCapacity(self) |
| 1872 | self.capacity = 0 |
| 1873 | const messages = [MutableList.take(self.messages)!] |
| 1874 | releaseCapacity(self) |
| 1875 | return core.exitSucceed(messages) |
| 1876 | } |
| 1877 | min = Math.min(min, self.capacity || 1) |
| 1878 | if (min <= self.messages.length) { |
| 1879 | const messages = MutableList.takeN(self.messages, max) |
| 1880 | releaseCapacity(self) |
| 1881 | return core.exitSucceed(messages) |
| 1882 | } |
| 1883 | } |
| 1884 | |
| 1885 | const offerRemainingSingle = <A, E>(self: Enqueue<A, E>, message: A) => { |
| 1886 | return internalEffect.callback<boolean>((resume) => { |
no test coverage detected