Overview
Comment: | Added ability to pass in existing udata to ulex setup |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | v1.70-captain-ulex | v1.70-defunct-try |
Files: | files | file ages | folders |
SHA1: |
3d501185ded5b2f511ab4661eac6cdcf |
User & Date: | matt on 2020-02-01 04:39:19 |
Other Links: | branch diff | manifest | tags |
Context
2020-02-01
| ||
04:39 | Added ability to pass in existing udata to ulex setup Leaf check-in: 3d501185de user: matt tags: v1.70-captain-ulex, v1.70-defunct-try | |
2020-01-29
| ||
22:38 | Added some instrumentation check-in: e99d345eb0 user: matt tags: v1.70-captain-ulex, v1.70-defunct-try | |
Changes
Modified TODO from [e0a2376de1] to [825d3b6272].
︙ | ︙ | |||
14 15 16 17 18 19 20 | # # You should have received a copy of the GNU General Public License # along with Megatest. If not, see <http://www.gnu.org/licenses/>. TODO ==== | | | | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # # You should have received a copy of the GNU General Public License # along with Megatest. If not, see <http://www.gnu.org/licenses/>. TODO ==== . Simple, fast, make-like running: megatest run <sometestname> would run that test, auto creating a default target and runname Migration to inmem db plus per run db ------------------------------------- . Re-work the dbstruct data structure? .. Move main.db to global? |
︙ | ︙ |
Modified ulex/ulex.scm from [8636c80a0f] to [94ed3a5317].
︙ | ︙ | |||
49 50 51 52 53 54 55 | ;; This is the basic setup command. Must always be ;; called before connecting to a db using connect. ;; ;; find or become the captain ;; setup and return a ulex object ;; | | | | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | ;; This is the basic setup command. Must always be ;; called before connecting to a db using connect. ;; ;; find or become the captain ;; setup and return a ulex object ;; (define (setup #!optional (udata-in #f)) (let* ((udata (or udata-in (make-udat))) (cpkts (get-all-captain-pkts udata)) ;; read captain pkts (captn (get-winning-pkt cpkts))) ;; check to see if our own server is started and start one if not (if (not (udat-serv-listener udata))(start-server-find-port udata)) (if captn (let* ((port (alist-ref 'port captn)) (host (alist-ref 'host captn)) |
︙ | ︙ | |||
106 107 108 109 110 111 112 | (msg (string-intersperse dbs " ")) (res (send udata host-port 'ping cookie msg retval: #t)) (delta (- (current-milliseconds) start))) (values (equal? res cookie) delta))) ;; returns: success pingtime ;; | | > | 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | (msg (string-intersperse dbs " ")) (res (send udata host-port 'ping cookie msg retval: #t)) (delta (- (current-milliseconds) start))) (values (equal? res cookie) delta))) ;; returns: success pingtime ;; ;; NOTE: causes all references to this worker to be wiped out in the ;; callee (ususally the captain) ;; (define (goodbye-ping udata host-port) (let* ((start (current-milliseconds)) (cookie (make-cookie udata)) (dbs (udat-my-dbs udata)) (res (send udata host-port 'goodbye cookie "nomsg" retval: #t)) (delta (- (current-milliseconds) start))) |
︙ | ︙ | |||
128 129 130 131 132 133 134 | (define (get-db-owner udata dbname dbtype) (let* ((host-port (udat-captain-host-port udata))) (if host-port (let* ((cookie (make-cookie udata)) (msg #f) ;; (conc dbname " " dbtype)) (params `(,dbname ,dbtype)) | | > | 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 | (define (get-db-owner udata dbname dbtype) (let* ((host-port (udat-captain-host-port udata))) (if host-port (let* ((cookie (make-cookie udata)) (msg #f) ;; (conc dbname " " dbtype)) (params `(,dbname ,dbtype)) (res (send udata host-port 'db-owner cookie msg params: params retval: #t))) (match (string-split res) ((retcookie owner-host-port) (values (equal? retcookie cookie) owner-host-port)))) (values #f -1)))) ;; called in ulex-handler to dispatch work, called on the workers side ;; calls (proc params data) |
︙ | ︙ | |||
456 457 458 459 460 461 462 | ;; send structured data to recipient ;; ;; NOTE: qrykey is what was called the "cookie" previously ;; ;; retval tells send to expect and wait for return data (one line) and return it or time out ;; this is for ping where we don't want to necessarily have set up our own server yet. ;; | | > | > > | | > | > | 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 | ;; send structured data to recipient ;; ;; NOTE: qrykey is what was called the "cookie" previously ;; ;; retval tells send to expect and wait for return data (one line) and return it or time out ;; this is for ping where we don't want to necessarily have set up our own server yet. ;; (define (send udata host-port handler qrykey data #!key (hostname #f)(pid #f)(params '())(retval #f)) (let* ((my-host-port (udat-my-host-port udata)) (isme (equal? host-port my-host-port)) ;; am I calling ;; myself? (dat (list handler ;; " " my-host-port ;; " " (udat-my-pid udata) ;; " " qrykey params ;;(if (null? params) "" (conc " " ;;(string-intersperse params " "))) ))) ;; (print "send isme is " (if isme "true!" "false!") ", ;; my-host-port: " my-host-port ", host-port: " host-port) (if isme (ulex-handler udata dat data) (handle-exceptions ;; ERROR - MAKE THIS EXCEPTION HANDLER MORE ;; SPECIFIC exn #f (let-values (((inp oup)(tcp-connect host-port))) ;; ;; CONTROL LINE: ;; handlerkey host:port pid qrykey params ... ;; |
︙ | ︙ |