mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
store: Add 'port->connection'.
* guix/store.scm (port->connection): New procedure.
This commit is contained in:
parent
7c7323e432
commit
2f608c1489
1 changed files with 18 additions and 0 deletions
|
@ -65,6 +65,7 @@ (define-module (guix store)
|
|||
build-mode
|
||||
|
||||
open-connection
|
||||
port->connection
|
||||
close-connection
|
||||
with-store
|
||||
set-build-options
|
||||
|
@ -517,6 +518,23 @@ (define* (open-connection #:optional (uri (%daemon-socket-uri))
|
|||
(or done? (process-stderr conn)))
|
||||
conn)))))))))
|
||||
|
||||
(define* (port->connection port
|
||||
#:key (version %protocol-version))
|
||||
"Assimilate PORT, an input/output port, and return a connection to the
|
||||
daemon, assuming the given protocol VERSION.
|
||||
|
||||
Warning: this procedure assumes that the initial handshake with the daemon has
|
||||
already taken place on PORT and that we're just continuing on this established
|
||||
connection. Use with care."
|
||||
(let-values (((output flush)
|
||||
(buffering-output-port port (make-bytevector 8192))))
|
||||
(%make-nix-server port
|
||||
(protocol-major version)
|
||||
(protocol-minor version)
|
||||
output flush
|
||||
(make-hash-table 100)
|
||||
(make-hash-table 100))))
|
||||
|
||||
(define (write-buffered-output server)
|
||||
"Flush SERVER's output port."
|
||||
(force-output (nix-server-output-port server))
|
||||
|
|
Loading…
Reference in a new issue