https://github.com/0xleif/vaporforkdemo
Vapor Fork Demo
https://github.com/0xleif/vaporforkdemo
actor async-await fork swift vapor
Last synced: about 1 month ago
JSON representation
Vapor Fork Demo
- Host: GitHub
- URL: https://github.com/0xleif/vaporforkdemo
- Owner: 0xLeif
- Created: 2022-08-11T02:43:13.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-08-11T02:43:18.000Z (almost 3 years ago)
- Last Synced: 2025-02-10T23:37:42.781Z (3 months ago)
- Topics: actor, async-await, fork, swift, vapor
- Language: Swift
- Homepage: https://github.com/0xLeif/Fork
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Vapor Fork Demo
## ForkedActor Example
```swift
import Fork
import Vaporfunc routes(_ app: Application) throws {
struct Output: Content {
var temperature: String
var username: String
}
actor OutputBuilder {
var output: Output
init(
output: Output
) {
self.output = output
}
func update(temperature: String) {
output.temperature = temperature
}
func update(username: String) {
output.username = username
}
}
func fetchWeather(ob: OutputBuilder) async {
// Fetch the weather
// ...
await ob.update(temperature: "72.0")
}
app.get { req async throws -> Output in
let forkedActor = ForkedActor(
actor: OutputBuilder(
output: Output(
temperature: "",
username: ""
)
),
leftOutput: fetchWeather,
rightOutput: { ob in
// Fetch the username from the DB
// ...
await ob.update(username: "0xLeif")
}
)
try await forkedActor.act()
return await forkedActor.actor.output
}
}
```