Skip to content

Commit

Permalink
finished ch09
Browse files Browse the repository at this point in the history
- update Argonaut dependency to use Native correctly
  • Loading branch information
spamegg1 committed Sep 11, 2024
1 parent ad50c6e commit 0dc4488
Show file tree
Hide file tree
Showing 11 changed files with 28 additions and 25 deletions.
4 changes: 2 additions & 2 deletions project.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@
//> using nativeVersion 0.5.5
//> using exclude "gatling/*"
//> using options -explain-cyclic -Ydebug-cyclic
//> using dep io.argonaut::argonaut:6.3.10
//> using dep io.gatling:gatling-app:3.11.5
//> using dep io.argonaut::argonaut::6.3.10
//> using dep io.gatling:gatling-app:3.12.0
// // > using dep biz.enef:slogging_2.13:0.6.2
File renamed without changes.
Binary file added src/main/resources/db/data.mdb
Binary file not shown.
Binary file added src/main/resources/db/lock.mdb
Binary file not shown.
5 changes: 5 additions & 0 deletions src/main/resources/output.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Failure(java.lang.NumberFormatException: For input string: "foo
1
2
-4095
")
4 changes: 2 additions & 2 deletions src/main/scala/ch08/filePipe/examples.scala
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ import ch07.EventLoop

@main
def fileInputPipeExample: Unit =
val path = c"../data.txt" // replace this with your own path
val path = c"../src/main/resources/data.txt" // replace this with your own path
val p = FilePipe(path)
.map: d =>
println(s"consumed $d")
val parsed = Try(d.toInt)
println(s"parsed: $parsed")
parsed.toString // I changed this to make it type-check.
.addDestination(FileOutputPipe(c"./output.txt", false))
.addDestination(FileOutputPipe(c"../src/main/resources/output.txt", false))

uv_run(ch07.EventLoop.loop, UV_RUN_DEFAULT)
println("done")
Expand Down
3 changes: 2 additions & 1 deletion src/main/scala/ch08/filePipe/main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ import collection.mutable
import scala.util.{Try, Success, Failure}
import concurrent.{Future, ExecutionContext, Promise}
import ch07.LibUV.*, ch07.LibUVConstants.*

@main
def filePipeMain(args: String*): Unit =
given ec: ExecutionContext = ch07.EventLoop

println("hello!")
val p = FilePipe.apply(c"./data.text")
val p = FilePipe.apply(c"./data.txt")
println("ok")
var buffer = ""
val done = p
Expand Down
24 changes: 11 additions & 13 deletions src/main/scala/ch09/common/lmdb.scala
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ object LMDB:
val envPtr = stackalloc[Env](1)
check(mdb_env_create(envPtr), "mdb_env_create")
val env = !envPtr
// Unix permissions for 0644 (read/write)
// Unix permissions for octal 0644 (read/write)
check(mdb_env_open(env, path, 0, 420), "mdb_env_open")
env

Expand All @@ -28,11 +28,11 @@ object LMDB:
val database = !databasePtr

val k = stackalloc[Key](1)
k._1 = string.strlen(key).toLong + 1.toLong
k._1 = string.strlen(key).toLong + 1
k._2 = key

val v = stackalloc[Value](1)
v._1 = string.strlen(value).toLong + 1.toLong
v._1 = string.strlen(value).toLong + 1
v._2 = value

check(mdb_put(transaction, database, k, v, 0), "mdb_put")
Expand All @@ -49,7 +49,7 @@ object LMDB:
val database = !databasePtr

val rKey = stackalloc[Key](1)
rKey._1 = string.strlen(key).toLong + 1.toLong
rKey._1 = string.strlen(key).toLong + 1
rKey._2 = key

val rValue = stackalloc[Value](1)
Expand All @@ -74,13 +74,11 @@ object LMDB:
val valueString = value.asJson.nospaces
putString(env, key, valueString)

def getString(env: Env, key: String): String =
Zone: // implicit z => // 0.5
val k = toCString(key)
fromCString(get(env, k))
def getString(env: Env, key: String): String = Zone:
val k = toCString(key)
fromCString(get(env, k))

def putString(env: Env, key: String, value: String): Unit =
Zone: // implicit z => // 0.5
val k = toCString(key)
val v = toCString(value)
put(env, k, v)
def putString(env: Env, key: String, value: String): Unit = Zone:
val k = toCString(key)
val v = toCString(value)
put(env, k, v)
3 changes: 1 addition & 2 deletions src/main/scala/ch09/jsonSimple/main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,9 @@ import scala.scalanative.libc.stdio
import argonaut.{Argonaut, EncodeJson}, Argonaut.ToJsonIdentity

@main
def jsonSimple(args: String*): Unit =
def jsonSimple: Unit =
val l: List[String] = List("list", "of", "strings")
println(l.asJson.spaces2)
// ...

val m: Map[String, String] = Map("key1" -> "value1", "key2" -> "value2")
printfJson(m)
Expand Down
2 changes: 1 addition & 1 deletion src/main/scala/ch09/lmdbSimple/main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ val valueBuffer = stdlib.malloc(512) // 0.5

@main
def lmdbSimple: Unit =
val env = LMDB.open(c"./db")
val env = LMDB.open(c"../src/main/resources/db")
stdio.printf(c"opened db %p\n", env)
stdio.printf(c"> ")

Expand Down
8 changes: 4 additions & 4 deletions src/main/scala/ch09/lmdbWeb/main.scala
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ val listPatn = raw"/list/([^/]+)".r
val listOffsetPatn = raw"/list/([^/]+)?offset=([^/]+)".r // ??? unused

@main
def lmbdWebMain1(args: String*): Unit =
val env = LMDB.open(c"./db")
def lmbdWebMain1: Unit =
val env = LMDB.open(c"../src/main/resources/db")
Server.serveHttp(
8080,
request =>
Expand Down Expand Up @@ -46,8 +46,8 @@ def makeResponse[T](resp: T)(using enc: EncodeJson[T]): HttpResponse =
HttpResponse(200, Map("Content-Length" -> size), respString)

@main
def lmbdWebMain2(args: String*): Unit =
val env = LMDB.open(c"./db")
def lmbdWebMain2: Unit =
val env = LMDB.open(c"../src/main/resources/db")
Server.serveHttp(
8080,
request =>
Expand Down

0 comments on commit 0dc4488

Please sign in to comment.