[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/excorporate cee32a6 65/93: Excorporate: Add support for
From: |
Stefan Monnier |
Subject: |
[elpa] externals/excorporate cee32a6 65/93: Excorporate: Add support for synchronous operations |
Date: |
Sun, 29 Nov 2020 15:43:10 -0500 (EST) |
branch: externals/excorporate
commit cee32a6178c2f4e22faf599926cc5a9518387564
Author: Thomas Fitzsimmons <fitzsim@fitzsim.org>
Commit: Thomas Fitzsimmons <fitzsim@fitzsim.org>
Excorporate: Add support for synchronous operations
* packages/excorporate/excorporate.el (exco--fsm): Support
synchronous finite state machine calls in :retrieving-data state.
(exco-operate): Throw error if callback argument is nil.
(exco-operate-synchronously): New function.
---
excorporate.el | 33 ++++++++++++++++++++++++---------
1 file changed, 24 insertions(+), 9 deletions(-)
diff --git a/excorporate.el b/excorporate.el
index 25f2b5c..a478262 100644
--- a/excorporate.el
+++ b/excorporate.el
@@ -560,20 +560,26 @@ the FSM should transition to on success."
(list state-data nil))
(define-state exco--fsm :retrieving-data
- (_fsm state-data event _callback)
+ (_fsm state-data event fsm-result-callback)
(let* ((identifier (plist-get state-data :identifier))
(wsdl (plist-get state-data :service-wsdl))
(name (pop event))
(arguments (pop event))
(callback (pop event)))
- (apply #'soap-invoke-async
- (lambda (response)
- (funcall callback identifier response))
- nil
- wsdl
- "ExchangeServicePort"
- name
- arguments))
+ (if callback
+ ;; exco-operate.
+ (apply #'soap-invoke-async
+ (lambda (response)
+ (funcall callback identifier response))
+ nil
+ wsdl
+ "ExchangeServicePort"
+ name
+ arguments)
+ ;; exco-operate-synchronously.
+ (funcall
+ fsm-result-callback
+ (apply #'soap-invoke wsdl "ExchangeServicePort" name arguments))))
(list :retrieving-data state-data nil))
(defun exco--ensure-connection ()
@@ -631,10 +637,19 @@ use the `cdr' of the pair as the service URL."
IDENTIFIER is the connection identifier. Execute operation NAME
with ARGUMENTS then call CALLBACK with two arguments, IDENTIFIER
and the server's response."
+ (when (null callback) (error "CALLBACK cannot be nil"))
(exco--with-fsm identifier
(fsm-send fsm (list name arguments callback)))
nil)
+(defun exco-operate-synchronously (identifier name arguments)
+ "Execute a service operation synchronously.
+IDENTIFIER is the connection identifier. Execute operation NAME
+with ARGUMENTS then call CALLBACK with two arguments, IDENTIFIER
+and the server's response."
+ (exco--with-fsm identifier
+ (fsm-call fsm (list name arguments))))
+
(defun exco-server-version (identifier)
"Return the server version for connection IDENTIFIER, as a string.
Examples are \"Exchange2010\", \"Exchange2010_SP1\",
- [elpa] externals/excorporate eb2430f 34/93: packages/excorporate: Bump version to 0.8.0, (continued)
- [elpa] externals/excorporate eb2430f 34/93: packages/excorporate: Bump version to 0.8.0, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate a8ba2d4 30/93: packages/excorporate: Add diary and appt integration, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 2e13256 49/93: excorporate-diary: Don't force diary-fancy-display, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 556433b 54/93: excorporate: Bump required package versions, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate ba927b9 52/93: packages/excorporate: Update HTTP debugging steps, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate b37aecf 51/93: excorporate-diary: Fix percent signs in appt, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 00ef8e7 55/93: excorporate: Update HTTPS proxy and GSSAPI status in manual, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate fac0fee 56/93: packages/excorporate/excorporate.el: Add an acknowledgment, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 0080f33 62/93: Excorporate: Add item identifiers to Org buffer, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate b228664 69/93: Excorporate: Support replying to meeting requests, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate cee32a6 65/93: Excorporate: Add support for synchronous operations,
Stefan Monnier <=
- [elpa] externals/excorporate 166b417 72/93: Excorporate: Add an organizer resolver function, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 936eb4a 61/93: Excorporate: Change identifier format in Org buffer, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate d43e575 58/93: Excorporate: Add an item iteration macro, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 212c8bd 80/93: Excorporate: Rewrite exco-org functions for Org 9.1, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 24a625f 86/93: Excorporate: Add an operation arity function, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 23d19b3 79/93: Excorporate: Document API usage in manual, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate bf88ded 83/93: Excorporate: Add more API usage examples to manual, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate c72216a 92/93: Excorporate: Bump version to 0.9.1, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 98a5284 82/93: Excorporate: Do not explicitly require Org package, Stefan Monnier, 2020/11/29
- [elpa] externals/excorporate 4253da4 84/93: Excorporate: Add timeout for synchronous operations, Stefan Monnier, 2020/11/29