0001
0025 import CLibvenice
0026
0027 protocol SelectCaseSelect.swift:32 | final class ChannelReceiveCase<T>: SelectCase { |
Select.swift:52 | final class ReceivingChannelReceiveCase<T>: SelectCase { |
Select.swift:72 | final class FallibleChannelReceiveCase<T>: SelectCase { |
Select.swift:92 | final class FallibleReceivingChannelReceiveCase<T>: SelectCase { |
Select.swift:112 | final class ChannelSendCase<T>: SelectCase { |
Select.swift:132 | final class SendingChannelSendCase<T>: SelectCase { |
Select.swift:152 | final class FallibleChannelSendCase<T>: SelectCase { |
Select.swift:172 | final class FallibleSendingChannelSendCase<T>: SelectCase { |
Select.swift:192 | final class FallibleChannelSendErrorCase<T>: SelectCase { |
Select.swift:212 | final class FallibleSendingChannelSendErrorCase<T>: SelectCase { |
Select.swift:232 | final class TimeoutCase<T>: SelectCase { |
Select.swift:251 | var cases: [SelectCase] = [] |
{
0028 func registerSelect.swift:347 | selectCase.register(clause, index: index) |
(clause: UnsafeMutablePointer<Void>, index: Int)
0029 func executeSelect.swift:359 | builder.cases[Int(index)].execute() |
()
0030 }
0031
0032 final class ChannelReceiveCaseSelect.swift:256 | let selectCase = ChannelReceiveCase(channel: channel, closure: closure) |
<TSelect.swift:33 | let channel: Channel<T> |
Select.swift:34 | let closure: T -> Void |
Select.swift:36 | init(channel: Channel<T>, closure: T -> Void) { |
Select.swift:36 | init(channel: Channel<T>, closure: T -> Void) { |
>: SelectCase {
0033 let channelSelect.swift:37 | self.channel = channel |
Select.swift:42 | channel.registerReceive(clause, index: index) |
Select.swift:46 | if let value = channel.getValueFromBuffer() { |
: Channel<T>
0034 let closureSelect.swift:38 | self.closure = closure |
Select.swift:47 | closure(value) |
: T -> Void
0035
0036 initSelect.swift:256 | let selectCase = ChannelReceiveCase(channel: channel, closure: closure) |
(channel: Channel<T>, closure: T -> Void) {
0037 self.channel = channel
0038 self.closure = closure
0039 }
0040
0041 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0042 channel.registerReceive(clause, index: index)
0043 }
0044
0045 func execute() {
0046 if let value = channel.getValueFromBuffer() {
0047 closure(value)
0048 }
0049 }
0050 }
0051
0052 final class ReceivingChannelReceiveCaseSelect.swift:263 | let selectCase = ReceivingChannelReceiveCase(channel: channel, closure: closure) |
<TSelect.swift:53 | let channel: ReceivingChannel<T> |
Select.swift:54 | let closure: T -> Void |
Select.swift:56 | init(channel: ReceivingChannel<T>, closure: T -> Void) { |
Select.swift:56 | init(channel: ReceivingChannel<T>, closure: T -> Void) { |
>: SelectCase {
0053 let channelSelect.swift:57 | self.channel = channel |
Select.swift:62 | channel.registerReceive(clause, index: index) |
Select.swift:66 | if let value = channel.getValueFromBuffer() { |
: ReceivingChannel<T>
0054 let closureSelect.swift:58 | self.closure = closure |
Select.swift:67 | closure(value) |
: T -> Void
0055
0056 initSelect.swift:263 | let selectCase = ReceivingChannelReceiveCase(channel: channel, closure: closure) |
(channel: ReceivingChannel<T>, closure: T -> Void) {
0057 self.channel = channel
0058 self.closure = closure
0059 }
0060
0061 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0062 channel.registerReceive(clause, index: index)
0063 }
0064
0065 func execute() {
0066 if let value = channel.getValueFromBuffer() {
0067 closure(value)
0068 }
0069 }
0070 }
0071
0072 final class FallibleChannelReceiveCaseSelect.swift:270 | let selectCase = FallibleChannelReceiveCase(channel: channel, closure: closure) |
<TSelect.swift:73 | let channel: FallibleChannel<T> |
Select.swift:74 | var closure: ChannelResult<T> -> Void |
Select.swift:76 | init(channel: FallibleChannel<T>, closure: ChannelResult<T> -> Void) { |
Select.swift:76 | init(channel: FallibleChannel<T>, closure: ChannelResult<T> -> Void) { |
>: SelectCase {
0073 let channelSelect.swift:77 | self.channel = channel |
Select.swift:82 | channel.registerReceive(clause, index: index) |
Select.swift:86 | if let result = channel.getResultFromBuffer() { |
: FallibleChannel<T>
0074 var closureSelect.swift:78 | self.closure = closure |
Select.swift:87 | closure(result) |
: ChannelResult<T> -> Void
0075
0076 initSelect.swift:270 | let selectCase = FallibleChannelReceiveCase(channel: channel, closure: closure) |
(channel: FallibleChannel<T>, closure: ChannelResult<T> -> Void) {
0077 self.channel = channel
0078 self.closure = closure
0079 }
0080
0081 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0082 channel.registerReceive(clause, index: index)
0083 }
0084
0085 func execute() {
0086 if let result = channel.getResultFromBuffer() {
0087 closure(result)
0088 }
0089 }
0090 }
0091
0092 final class FallibleReceivingChannelReceiveCaseSelect.swift:277 | let selectCase = FallibleReceivingChannelReceiveCase(channel: channel, closure: closure) |
<TSelect.swift:93 | let channel: FallibleReceivingChannel<T> |
Select.swift:94 | var closure: ChannelResult<T> -> Void |
Select.swift:96 | init(channel: FallibleReceivingChannel<T>, closure: ChannelResult<T> -> Void) { |
Select.swift:96 | init(channel: FallibleReceivingChannel<T>, closure: ChannelResult<T> -> Void) { |
>: SelectCase {
0093 let channelSelect.swift:97 | self.channel = channel |
Select.swift:102 | channel.registerReceive(clause, index: index) |
Select.swift:106 | if let result = channel.getResultFromBuffer() { |
: FallibleReceivingChannel<T>
0094 var closureSelect.swift:98 | self.closure = closure |
Select.swift:107 | closure(result) |
: ChannelResult<T> -> Void
0095
0096 initSelect.swift:277 | let selectCase = FallibleReceivingChannelReceiveCase(channel: channel, closure: closure) |
(channel: FallibleReceivingChannel<T>, closure: ChannelResult<T> -> Void) {
0097 self.channel = channel
0098 self.closure = closure
0099 }
0100
0101 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0102 channel.registerReceive(clause, index: index)
0103 }
0104
0105 func execute() {
0106 if let result = channel.getResultFromBuffer() {
0107 closure(result)
0108 }
0109 }
0110 }
0111
0112 final class ChannelSendCaseSelect.swift:284 | let selectCase = ChannelSendCase(channel: channel, value: value, closure: closure) |
<TSelect.swift:113 | let channel: Channel<T> |
Select.swift:114 | var value: T |
Select.swift:117 | init(channel: Channel<T>, value: T, closure: Void -> Void) { |
Select.swift:117 | init(channel: Channel<T>, value: T, closure: Void -> Void) { |
>: SelectCase {
0113 let channelSelect.swift:118 | self.channel = channel |
Select.swift:124 | channel.send(value, clause: clause, index: index) |
: Channel<T>
0114 var valueSelect.swift:119 | self.value = value |
Select.swift:124 | channel.send(value, clause: clause, index: index) |
: T
0115 let closureSelect.swift:120 | self.closure = closure |
Select.swift:128 | closure() |
: Void -> Void
0116
0117 initSelect.swift:284 | let selectCase = ChannelSendCase(channel: channel, value: value, closure: closure) |
(channel: Channel<T>, value: T, closure: Void -> Void) {
0118 self.channel = channel
0119 self.value = value
0120 self.closure = closure
0121 }
0122
0123 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0124 channel.send(value, clause: clause, index: index)
0125 }
0126
0127 func execute() {
0128 closure()
0129 }
0130 }
0131
0132 final class SendingChannelSendCaseSelect.swift:291 | let selectCase = SendingChannelSendCase(channel: channel, value: value, closure: closure) |
<TSelect.swift:133 | let channel: SendingChannel<T> |
Select.swift:134 | var value: T |
Select.swift:137 | init(channel: SendingChannel<T>, value: T, closure: Void -> Void) { |
Select.swift:137 | init(channel: SendingChannel<T>, value: T, closure: Void -> Void) { |
>: SelectCase {
0133 let channelSelect.swift:138 | self.channel = channel |
Select.swift:144 | channel.send(value, clause: clause, index: index) |
: SendingChannel<T>
0134 var valueSelect.swift:139 | self.value = value |
Select.swift:144 | channel.send(value, clause: clause, index: index) |
: T
0135 let closureSelect.swift:140 | self.closure = closure |
Select.swift:148 | closure() |
: Void -> Void
0136
0137 initSelect.swift:291 | let selectCase = SendingChannelSendCase(channel: channel, value: value, closure: closure) |
(channel: SendingChannel<T>, value: T, closure: Void -> Void) {
0138 self.channel = channel
0139 self.value = value
0140 self.closure = closure
0141 }
0142
0143 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0144 channel.send(value, clause: clause, index: index)
0145 }
0146
0147 func execute() {
0148 closure()
0149 }
0150 }
0151
0152 final class FallibleChannelSendCaseSelect.swift:298 | let selectCase = FallibleChannelSendCase(channel: channel, value: value, closure: closure) |
<TSelect.swift:153 | let channel: FallibleChannel<T> |
Select.swift:154 | let value: T |
Select.swift:157 | init(channel: FallibleChannel<T>, value: T, closure: Void -> Void) { |
Select.swift:157 | init(channel: FallibleChannel<T>, value: T, closure: Void -> Void) { |
>: SelectCase {
0153 let channelSelect.swift:158 | self.channel = channel |
Select.swift:164 | channel.send(value, clause: clause, index: index) |
: FallibleChannel<T>
0154 let valueSelect.swift:159 | self.value = value |
Select.swift:164 | channel.send(value, clause: clause, index: index) |
: T
0155 let closureSelect.swift:160 | self.closure = closure |
Select.swift:168 | closure() |
: Void -> Void
0156
0157 initSelect.swift:298 | let selectCase = FallibleChannelSendCase(channel: channel, value: value, closure: closure) |
(channel: FallibleChannel<T>, value: T, closure: Void -> Void) {
0158 self.channel = channel
0159 self.value = value
0160 self.closure = closure
0161 }
0162
0163 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0164 channel.send(value, clause: clause, index: index)
0165 }
0166
0167 func execute() {
0168 closure()
0169 }
0170 }
0171
0172 final class FallibleSendingChannelSendCaseSelect.swift:305 | let selectCase = FallibleSendingChannelSendCase(channel: channel, value: value, closure: closure) |
<TSelect.swift:173 | let channel: FallibleSendingChannel<T> |
Select.swift:174 | let value: T |
Select.swift:177 | init(channel: FallibleSendingChannel<T>, value: T, closure: Void -> Void) { |
Select.swift:177 | init(channel: FallibleSendingChannel<T>, value: T, closure: Void -> Void) { |
>: SelectCase {
0173 let channelSelect.swift:178 | self.channel = channel |
Select.swift:184 | channel.send(value, clause: clause, index: index) |
: FallibleSendingChannel<T>
0174 let valueSelect.swift:179 | self.value = value |
Select.swift:184 | channel.send(value, clause: clause, index: index) |
: T
0175 let closureSelect.swift:180 | self.closure = closure |
Select.swift:188 | closure() |
: Void -> Void
0176
0177 initSelect.swift:305 | let selectCase = FallibleSendingChannelSendCase(channel: channel, value: value, closure: closure) |
(channel: FallibleSendingChannel<T>, value: T, closure: Void -> Void) {
0178 self.channel = channel
0179 self.value = value
0180 self.closure = closure
0181 }
0182
0183 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0184 channel.send(value, clause: clause, index: index)
0185 }
0186
0187 func execute() {
0188 closure()
0189 }
0190 }
0191
0192 final class FallibleChannelSendErrorCaseSelect.swift:312 | let selectCase = FallibleChannelSendErrorCase(channel: channel, error: error, closure: closure) |
<TSelect.swift:193 | let channel: FallibleChannel<T> |
Select.swift:197 | init(channel: FallibleChannel<T>, error: ErrorType, closure: Void -> Void) { |
>: SelectCase {
0193 let channelSelect.swift:198 | self.channel = channel |
Select.swift:204 | channel.send(error, clause: clause, index: index) |
: FallibleChannel<T>
0194 let errorSelect.swift:199 | self.error = error |
Select.swift:204 | channel.send(error, clause: clause, index: index) |
: ErrorType
0195 let closureSelect.swift:200 | self.closure = closure |
Select.swift:208 | closure() |
: Void -> Void
0196
0197 initSelect.swift:312 | let selectCase = FallibleChannelSendErrorCase(channel: channel, error: error, closure: closure) |
(channel: FallibleChannel<T>, error: ErrorType, closure: Void -> Void) {
0198 self.channel = channel
0199 self.error = error
0200 self.closure = closure
0201 }
0202
0203 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0204 channel.send(error, clause: clause, index: index)
0205 }
0206
0207 func execute() {
0208 closure()
0209 }
0210 }
0211
0212 final class FallibleSendingChannelSendErrorCaseSelect.swift:319 | let selectCase = FallibleSendingChannelSendErrorCase(channel: channel, error: error, closure: closure) |
<TSelect.swift:213 | let channel: FallibleSendingChannel<T> |
Select.swift:217 | init(channel: FallibleSendingChannel<T>, error: ErrorType, closure: Void -> Void) { |
>: SelectCase {
0213 let channelSelect.swift:218 | self.channel = channel |
Select.swift:224 | channel.send(error, clause: clause, index: index) |
: FallibleSendingChannel<T>
0214 let errorSelect.swift:219 | self.error = error |
Select.swift:224 | channel.send(error, clause: clause, index: index) |
: ErrorType
0215 let closureSelect.swift:220 | self.closure = closure |
Select.swift:228 | closure() |
: Void -> Void
0216
0217 initSelect.swift:319 | let selectCase = FallibleSendingChannelSendErrorCase(channel: channel, error: error, closure: closure) |
(channel: FallibleSendingChannel<T>, error: ErrorType, closure: Void -> Void) {
0218 self.channel = channel
0219 self.error = error
0220 self.closure = closure
0221 }
0222
0223 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0224 channel.send(error, clause: clause, index: index)
0225 }
0226
0227 func execute() {
0228 closure()
0229 }
0230 }
0231
0232 final class TimeoutCaseSelect.swift:330 | let selectCase = TimeoutCase<Bool>(channel: done, closure: closure) |
<TSelect.swift:233 | let channel: Channel<T> |
Select.swift:236 | init(channel: Channel<T>, closure: Void -> Void) { |
>: SelectCase {
0233 let channelSelect.swift:237 | self.channel = channel |
Select.swift:242 | channel.registerReceive(clause, index: index) |
: Channel<T>
0234 let closureSelect.swift:238 | self.closure = closure |
Select.swift:246 | closure() |
: Void -> Void
0235
0236 init(channel: Channel<T>, closure: Void -> Void) {
0237 self.channel = channel
0238 self.closure = closure
0239 }
0240
0241 func register(clause: UnsafeMutablePointer<Void>, index: Int) {
0242 channel.registerReceive(clause, index: index)
0243 }
0244
0245 func execute() {
0246 closure()
0247 }
0248 }
0249
0250 public class SelectCaseBuilderSelect.swift:339 | private func select(builder: SelectCaseBuilder) { |
Select.swift:365 | public func select(@noescape build: (when: SelectCaseBuilder) -> Void) { |
Select.swift:366 | let builder = SelectCaseBuilder() |
Select.swift:371 | public func sel(@noescape build: (when: SelectCaseBuilder) -> Void) { |
Select.swift:375 | public func forSelect(@noescape build: (when: SelectCaseBuilder, done: Void -> Void) -> Void) { |
Select.swift:376 | let builder = SelectCaseBuilder() |
Select.swift:382 | let builder = SelectCaseBuilder() |
Select.swift:388 | public func forSel(@noescape build: (when: SelectCaseBuilder, done: Void -> Void) -> Void) { |
{
0251 var casesSelect.swift:257 | cases.append(selectCase) |
Select.swift:264 | cases.append(selectCase) |
Select.swift:271 | cases.append(selectCase) |
Select.swift:278 | cases.append(selectCase) |
Select.swift:285 | cases.append(selectCase) |
Select.swift:292 | cases.append(selectCase) |
Select.swift:299 | cases.append(selectCase) |
Select.swift:306 | cases.append(selectCase) |
Select.swift:313 | cases.append(selectCase) |
Select.swift:320 | cases.append(selectCase) |
Select.swift:331 | cases.append(selectCase) |
Select.swift:344 | for (index, selectCase) in builder.cases.enumerate() { |
Select.swift:359 | builder.cases[Int(index)].execute() |
: [SelectCase] = []
0252 var otherwiseSelect.swift:335 | self.otherwise = closure |
Select.swift:350 | if builder.otherwise != nil { |
Select.swift:357 | builder.otherwise?() |
: (Void -> Void)?
0253
0254 public func receiveFrom<T>(channel: Channel<T>?, closure: T -> Void) {
0255 if let channel = channel {
0256 let selectCase = ChannelReceiveCase(channel: channel, closure: closure)
0257 cases.append(selectCase)
0258 }
0259 }
0260
0261 public func receiveFrom<T>(channel: ReceivingChannel<T>?, closure: T -> Void) {
0262 if let channel = channel {
0263 let selectCase = ReceivingChannelReceiveCase(channel: channel, closure: closure)
0264 cases.append(selectCase)
0265 }
0266 }
0267
0268 public func receiveFrom<T>(channel: FallibleChannel<T>?, closure: ChannelResult<T> -> Void) {
0269 if let channel = channel {
0270 let selectCase = FallibleChannelReceiveCase(channel: channel, closure: closure)
0271 cases.append(selectCase)
0272 }
0273 }
0274
0275 public func receiveFrom<T>(channel: FallibleReceivingChannel<T>?, closure: ChannelResult<T> -> Void) {
0276 if let channel = channel {
0277 let selectCase = FallibleReceivingChannelReceiveCase(channel: channel, closure: closure)
0278 cases.append(selectCase)
0279 }
0280 }
0281
0282 public func send<T>(value: T, to channel: Channel<T>?, closure: Void -> Void) {
0283 if let channel = channel where !channel.closed {
0284 let selectCase = ChannelSendCase(channel: channel, value: value, closure: closure)
0285 cases.append(selectCase)
0286 }
0287 }
0288
0289 public func send<T>(value: T, to channel: SendingChannel<T>?, closure: Void -> Void) {
0290 if let channel = channel where !channel.closed {
0291 let selectCase = SendingChannelSendCase(channel: channel, value: value, closure: closure)
0292 cases.append(selectCase)
0293 }
0294 }
0295
0296 public func send<T>(value: T, to channel: FallibleChannel<T>?, closure: Void -> Void) {
0297 if let channel = channel where !channel.closed {
0298 let selectCase = FallibleChannelSendCase(channel: channel, value: value, closure: closure)
0299 cases.append(selectCase)
0300 }
0301 }
0302
0303 public func send<T>(value: T, to channel: FallibleSendingChannel<T>?, closure: Void -> Void) {
0304 if let channel = channel where !channel.closed {
0305 let selectCase = FallibleSendingChannelSendCase(channel: channel, value: value, closure: closure)
0306 cases.append(selectCase)
0307 }
0308 }
0309
0310 public func throwError<T>(error: ErrorType, into channel: FallibleChannel<T>?, closure: Void -> Void) {
0311 if let channel = channel where !channel.closed {
0312 let selectCase = FallibleChannelSendErrorCase(channel: channel, error: error, closure: closure)
0313 cases.append(selectCase)
0314 }
0315 }
0316
0317 public func throwError<T>(error: ErrorType, into channel: FallibleSendingChannel<T>?, closure: Void -> Void) {
0318 if let channel = channel where !channel.closed {
0319 let selectCase = FallibleSendingChannelSendErrorCase(channel: channel, error: error, closure: closure)
0320 cases.append(selectCase)
0321 }
0322 }
0323
0324 public func timeout(deadline: Deadline, closure: Void -> Void) {
0325 let done = Channel<Bool>()
0326 co {
0327 wakeUp(deadline)
0328 done <- true
0329 }
0330 let selectCase = TimeoutCase<Bool>(channel: done, closure: closure)
0331 cases.append(selectCase)
0332 }
0333
0334 public func otherwise(closure: Void -> Void) {
0335 self.otherwise = closure
0336 }
0337 }
0338
0339 private func selectSelect.swift:368 | select(builder) |
Select.swift:384 | select(builder) |
(builder: SelectCaseBuilder) {
0340 mill_choose_init("select")
0341
0342 var clauses: [UnsafeMutablePointer<Void>] = []
0343
0344 for (index, selectCase) in builder.cases.enumerate() {
0345 let clause = malloc(mill_clauselen())
0346 clauses.append(clause)
0347 selectCase.register(clause, index: index)
0348 }
0349
0350 if builder.otherwise != nil {
0351 mill_choose_otherwise()
0352 }
0353
0354 let index = mill_choose_wait()
0355
0356 if index == -1 {
0357 builder.otherwise?()
0358 } else {
0359 builder.cases[Int(index)].execute()
0360 }
0361
0362 clauses.forEach(free)
0363 }
0364
0365 public func selectSelect.swift:372 | select(build) |
(@noescape build: (when: SelectCaseBuilder) -> Void) {
0366 let builder = SelectCaseBuilder()
0367 build(when: builder)
0368 select(builder)
0369 }
0370
0371 public func sel(@noescape build: (when: SelectCaseBuilder) -> Void) {
0372 select(build)
0373 }
0374
0375 public func forSelectSelect.swift:389 | forSelect(build) |
(@noescape build: (when: SelectCaseBuilder, done: Void -> Void) -> Void) {
0376 let builder = SelectCaseBuilder()
0377 var keepRunning = true
0378 func done() {
0379 keepRunning = false
0380 }
0381 while keepRunning {
0382 let builder = SelectCaseBuilder()
0383 build(when: builder, done: done)
0384 select(builder)
0385 }
0386 }
0387
0388 public func forSel(@noescape build: (when: SelectCaseBuilder, done: Void -> Void) -> Void) {
0389 forSelect(build)
0390 }
0391