39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
-
-
+
+
-
+
|
;; Not currently used! But, I think it *should* be used!!!
(define (client:logout serverdat area-dat)
(let ((ok (and (socket? serverdat)
(cdb:logout serverdat (megatest:area-path area-dat) (client:get-signature)))))
ok))
(define (client:connect iface port)
(case (server:get-transport)
(define (client:connect iface port area-dat)
(case (server:get-transport area-dat)
((rpc) (rpc:client-connect iface port))
((http) (http:client-connect iface port))
((zmq) (zmq:client-connect iface port))
(else (rpc:client-connect iface port))))
(define (client:setup run-id area-dat #!key (remaining-tries 10) (failed-connects 0))
(case (server:get-transport)
(case (server:get-transport area-dat)
((rpc) (rpc-transport:client-setup run-id area-dat))
((http)(client:setup-http run-id area-dat))
(else (rpc-transport:client-setup run-id area-dat))))
;; (define (client:login-no-auto-setup server-info run-id)
;; (case (server:get-transport)
;; ((rpc) (rpc:login-no-auto-client-setup server-info run-id))
|
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
-
+
|
(thread-sleep! 5) ;; give server a little time to start up
(client:setup run-id area-dat remaining-tries: (- remaining-tries 1))
)))
(begin ;; no server registered
(let ((num-available (tasks:num-in-available-state (db:dbdat-get-db tdbdat) run-id)))
(debug:print-info 0 "client:setup, no server registered, remaining-tries=" remaining-tries " num-available=" num-available)
(if (< num-available 2)
(server:try-running run-id))
(server:try-running run-id area-dat))
(thread-sleep! (+ 5 (random (- 20 remaining-tries)))) ;; give server a little time to start up, randomize a little to avoid start storms.
(client:setup run-id area-dat remaining-tries: (- remaining-tries 1)))))))))
;; keep this as a function to ease future
(define (client:start run-id server-info)
(http-transport:client-connect (tasks:hostinfo-get-interface server-info)
(tasks:hostinfo-get-port server-info)))
|