269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
(define (send-via-mailbox uconn host-port cmd data)
(let* ((cmbox (get-cmbox uconn)) ;; would it be better to keep a stack of mboxes to reuse?
(qrykey (car cmbox))
(mbox (cdr cmbox))
(mbox-time (current-milliseconds))
(sres (send uconn host-port qrykey cmd data))) ;; short res
(if (eq? sres 'ack)
(let* ((mbox-timeout-secs 120 #;(if (eq? 'primordial (thread-name (current-thread)))
#f
120)) ;; timeout)
(mbox-timeout-result 'MBOX_TIMEOUT)
(res (mailbox-receive! mbox mbox-timeout-secs mbox-timeout-result))
(mbox-receive-time (current-milliseconds)))
;; (put-cmbox uconn cmbox) ;; reuse mbox and cookie. is it worth it?
|
|
|
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
|
(define (send-via-mailbox uconn host-port cmd data)
(let* ((cmbox (get-cmbox uconn)) ;; would it be better to keep a stack of mboxes to reuse?
(qrykey (car cmbox))
(mbox (cdr cmbox))
(mbox-time (current-milliseconds))
(sres (send uconn host-port qrykey cmd data))) ;; short res
(if (eq? sres 'ack) ;; BUG: change to be less than server:expiration-timeout?
(let* ((mbox-timeout-secs 120 #;(if (eq? 'primordial (thread-name (current-thread)))
#f
120)) ;; timeout)
(mbox-timeout-result 'MBOX_TIMEOUT)
(res (mailbox-receive! mbox mbox-timeout-secs mbox-timeout-result))
(mbox-receive-time (current-milliseconds)))
;; (put-cmbox uconn cmbox) ;; reuse mbox and cookie. is it worth it?
|
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
|
(run-time (- end-time start-time)))
(case (work-method)
((direct) result)
(else
(print "ULEX: work "cmd", "params" done in "run-time" ms")
;; send 'response as cmd and result as params
(send uconn rem-host-port qrykey 'response result) ;; could check for ack
(print "ULEX: response sent back to "rem-host-port" in "(- (current-milliseconds) end-time))))))
(MBOX_TIMEOUT 'do-work-timeout)
(else
(print "ERROR: rdat "rdat", did not match rem-host-port qrykey cmd params")))))
;; NEW APPROACH:
;;
(define (process-work-queue uconn)
|
|
|
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
|
(run-time (- end-time start-time)))
(case (work-method)
((direct) result)
(else
(print "ULEX: work "cmd", "params" done in "run-time" ms")
;; send 'response as cmd and result as params
(send uconn rem-host-port qrykey 'response result) ;; could check for ack
(print "ULEX: response sent back to "rem-host-port" for "qrykey" in "(- (current-milliseconds) end-time)"ms")))))
(MBOX_TIMEOUT 'do-work-timeout)
(else
(print "ERROR: rdat "rdat", did not match rem-host-port qrykey cmd params")))))
;; NEW APPROACH:
;;
(define (process-work-queue uconn)
|