/
protocols.cljc
52 lines (46 loc) · 2.21 KB
/
protocols.cljc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
;; Copyright (c) 2015-2016 Andrey Antukh <niwi@niwi.nz>
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions
;; are met:
;;
;; 1. Redistributions of source code must retain the above copyright
;; notice, this list of conditions and the following disclaimer.
;; 2. Redistributions in binary form must reproduce the above copyright
;; notice, this list of conditions and the following disclaimer in the
;; documentation and/or other materials provided with the distribution.
;;
;; THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
;; IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
;; OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
;; IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
;; INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
;; NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
(ns promesa.protocols
"A generic promise abstraction and related protocols.")
(defprotocol IPromise
"A basic future abstraction."
(-map [_ callback] "Chain a promise.")
(-bind [_ callback] "Chain a promise.")
(-catch [_ callback] "Catch a error in a promise."))
(defprotocol IState
"Additional state/introspection abstraction."
(-extract [_] "Extract the current value.")
(-resolved? [_] "Returns true if a promise is resolved.")
(-rejected? [_] "Returns true if a promise is rejected.")
(-pending? [_] "Retutns true if a promise is pending."))
(defprotocol IPromiseFactory
"A promise constructor abstraction."
(-promise [_] "Create a promise instance."))
(defprotocol ICancellable
"A cancellation abstraction."
(-cancel [_])
(-cancelled? [_]))
(defprotocol IScheduler
"A generic abstraction for scheduler facilities."
(-schedule [_ ms func] "Schedule a function to be executed in future."))