Megatest

Diff
Login

Differences From Artifact [210fc6977d]:

To Artifact [f8b8e960d6]:


485
486
487
488
489
490
491
492
493


494
495
496

497
498
499
500
501
502
503
485
486
487
488
489
490
491


492
493
494
495

496
497
498
499
500
501
502
503







-
-
+
+


-
+







	    ;;    handlerkey host:port pid qrykey params ...
	    ;;
	    (let ((res
		   (if (and inp oup)
		       (let* ()
			 (if my-host-port
			     (begin
			       (write-line dat  oup)
			       (write-line data oup)
			       (write dat  oup)
			       (write data oup) ;; send as sexpr
			       ;; (print "Sent dat: " dat " data: " data)
			       (if retval
				   (read-line inp)
				   (read inp)
				   #t))
			     (begin
			       (print "ERROR: send called but no receiver has been setup. Please call setup first!")
			       #f))
			 ;; NOTE: DO NOT BE TEMPTED TO LOOK AT ANY DATA ON INP HERE!
			 ;;       (there is a listener for handling that)
			 )
604
605
606
607
608
609
610
611
612


613
614

615
616
617
618
619
620
621
604
605
606
607
608
609
610


611
612
613

614
615
616
617
618
619
620
621







-
-
+
+

-
+







(define (ulex-handler-loop udata)
  (let* ((serv-listener (udat-serv-listener udata)))
    ;; data comes as two lines
    ;;   handlerkey resp-addr:resp-port hostname pid qrykey [dbpath/dbfile.db]
    ;;   data
    (let loop ((state 'start))
      (let-values (((inp oup)(tcp-accept serv-listener)))
	(let* ((controldat (read-line inp))
	       (data       (read-line inp))
	(let* ((controldat (read inp))
	       (data       (read inp))
	       (resp       (ulex-handler udata controldat data)))
	  (if resp (write-line resp oup))
	  (if resp (write resp oup))
	  (close-input-port inp)
	  (close-output-port oup))
	(loop state)))))

;; add a proc to the handler list, these are done symetrically (i.e. in all instances)
;; so that the proc can be dereferenced remotely
;;