http_translator: control over port binding
This commit is contained in:
parent
ffbe02898a
commit
7c9765fd23
|
@ -6,6 +6,8 @@ Methods = #{Method} .
|
|||
; A URL path split into elements
|
||||
Path = [string ...] .
|
||||
|
||||
Listener = <listen @port int> .
|
||||
|
||||
; Register an entity that will handle requests at path prefix.
|
||||
; TODO: assert the public base URL of the handler to the entity.
|
||||
Handler = <handler @methods Methods @path Path @entity #!any> .
|
||||
|
|
|
@ -13,9 +13,8 @@ $other [
|
|||
]
|
||||
]
|
||||
|
||||
? <service-object <daemon http_translator> ?cap> [
|
||||
$cap [
|
||||
; publish GET requests with prefix "/foo/bar" to other dataspace
|
||||
<handler #{GET} ["foo" "bar" ] $other>
|
||||
]
|
||||
? <service-object <daemon http_translator> ?cap> $cap [
|
||||
<listen 8888>
|
||||
; publish GET requests with prefix "/foo/bar" to other dataspace
|
||||
handler #{GET} ["foo" "bar" ] $other>
|
||||
]
|
||||
|
|
|
@ -83,7 +83,10 @@ bootDataspace("main") do (ds: Ref; turn: var Turn):
|
|||
run(parentFacet) do (turn: var Turn): retract(turn, rHandle)
|
||||
hitch(fut, parentFut)
|
||||
|
||||
var http = newAsyncHttpServer()
|
||||
asyncCheck serve(http, Port 8888, handleRequest)
|
||||
during(turn, ds, ?Listener) do (port: Port):
|
||||
var http = newAsyncHttpServer()
|
||||
asyncCheck serve(http, port, handleRequest)
|
||||
do:
|
||||
close(http)
|
||||
|
||||
runForever()
|
||||
|
|
|
@ -11,6 +11,9 @@ type
|
|||
`headers`*: Headers
|
||||
`body`*: string
|
||||
|
||||
Listener* {.preservesRecord: "listen".} = object
|
||||
`port`*: int
|
||||
|
||||
Handler*[E] {.preservesRecord: "handler".} = ref object
|
||||
`methods`*: Methods
|
||||
`path`*: Path
|
||||
|
@ -33,8 +36,9 @@ proc `$`*[E](x: Handler[E]): string =
|
|||
proc encode*[E](x: Handler[E]): seq[byte] =
|
||||
encode(toPreserve(x, E))
|
||||
|
||||
proc `$`*(x: Path | Headers | Response | Request | Methods): string =
|
||||
proc `$`*(x: Path | Headers | Response | Listener | Request | Methods): string =
|
||||
`$`(toPreserve(x))
|
||||
|
||||
proc encode*(x: Path | Headers | Response | Request | Methods): seq[byte] =
|
||||
proc encode*(x: Path | Headers | Response | Listener | Request | Methods): seq[
|
||||
byte] =
|
||||
encode(toPreserve(x))
|
||||
|
|
Loading…
Reference in New Issue