mirror of
https://github.com/denoland/deno.git
synced 2024-11-21 15:04:11 -05:00
Send protobuf
This commit is contained in:
parent
4db5a80ba3
commit
1ad8a2e088
4 changed files with 43 additions and 12 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@ node_modules/
|
||||||
dist/
|
dist/
|
||||||
deno
|
deno
|
||||||
assets.go
|
assets.go
|
||||||
|
msg.pb.go
|
||||||
|
|
36
main.go
36
main.go
|
@ -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)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
5
main.ts
5
main.ts
|
@ -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
13
msg.proto
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
package main;
|
||||||
|
|
||||||
|
|
||||||
|
message Msg {
|
||||||
|
enum MsgKind {
|
||||||
|
LOAD = 0;
|
||||||
|
}
|
||||||
|
MsgKind kind = 10;
|
||||||
|
|
||||||
|
// LOAD
|
||||||
|
repeated string argv = 11;
|
||||||
|
}
|
Loading…
Reference in a new issue