#!bin/picolisp lib.l
# 15jun06abu
# Use: bin/replica <port> <keyFile> <journal> <dbFile> <blob/app/> [dbf1 ...]
#    : bin/ssl <host> 443 <port>/@replica <keyFile> <journal> <blob/app/> 60

(load "@lib/misc.l" "@lib/http.l")

(allowed NIL "@replica")

(argv *Port *KeyFile *Journal *Pool *Blob . *Dbs)

(setq
   *Port (format *Port)
   *SSLKey (in *KeyFile (line T)) )

(de replica ()
   (ctl *KeyFile
      (protect
         (when (= (line T) *SSLKey)
            (let? X (line T)
               (ifn (format X)
                  (let Blob (pack *Blob X)            # Blob
                     (call 'mkdir "-p" (dirname Blob))
                     (out Blob (echo)) )
                  (out (tmp 'replica) (echo @))       # Journal
                  (prin (peek))
                  (flush)
                  (in (tmp 'replica) (journal)) ) ) ) ) ) )

(pool *Pool (mapcar format *Dbs) *Journal)
(server *Port)
