Send protobuf

This commit is contained in:
Ryan Dahl 2018-05-14 00:31:48 -04:00
parent 4db5a80ba3
commit 1ad8a2e088
4 changed files with 43 additions and 12 deletions

1
.gitignore vendored
View File

@ -3,3 +3,4 @@ node_modules/
dist/ dist/
deno deno
assets.go assets.go
msg.pb.go

36
main.go
View File

@ -1,11 +1,13 @@
// To test: make && ./out/render test_input.js
package main package main
//go:generate protoc --go_out=. msg.proto
//go:generate ./node_modules/.bin/parcel build --out-dir=dist/ --no-minify main.ts //go:generate ./node_modules/.bin/parcel build --out-dir=dist/ --no-minify main.ts
//go:generate go-bindata -pkg $GOPACKAGE -o assets.go dist/ //go:generate go-bindata -pkg $GOPACKAGE -o assets.go dist/
import ( import (
"github.com/golang/protobuf/proto"
"github.com/ry/v8worker2" "github.com/ry/v8worker2"
"os"
) )
func recv(msg []byte) []byte { func recv(msg []byte) []byte {
@ -13,20 +15,32 @@ func recv(msg []byte) []byte {
return nil return nil
} }
func main() { func loadAsset(w *v8worker2.Worker, path string) {
indexFn := "dist/main.js" data, err := Asset(path)
data, err := Asset(indexFn)
if err != nil { if err != nil {
panic("asset not found") panic("asset not found")
} }
code := string(data) err = w.Load(path, string(data))
worker := v8worker2.New(recv)
// Load up index.js code.
err = worker.Load(indexFn, code)
if err != nil { if err != nil {
println("Problem executing Javascript.")
panic(err) panic(err)
} }
} }
func main() {
worker := v8worker2.New(recv)
loadAsset(worker, "dist/main.js")
loadMsg := &Msg{
Kind: Msg_LOAD,
Argv: os.Args,
}
out, err := proto.Marshal(loadMsg)
if err != nil {
panic(err)
}
err = worker.SendBytes(out)
if err != nil {
panic(err)
}
}

View File

@ -1,4 +1,7 @@
import * as ts from "typescript"; import * as ts from "typescript";
V8Worker2.recv((ab: ArrayBuffer) {
V8Worker2.print("Got array buffer", ab.byteLength);
});
V8Worker2.print("Hello World"); V8Worker2.print("Hello");

13
msg.proto Normal file
View File

@ -0,0 +1,13 @@
syntax = "proto3";
package main;
message Msg {
enum MsgKind {
LOAD = 0;
}
MsgKind kind = 10;
// LOAD
repeated string argv = 11;
}