Last active
July 22, 2020 06:06
-
-
Save aquatiko/becfab954ff1a0925efc03502e7dbaf9 to your computer and use it in GitHub Desktop.
Server file which need to run on laptop for screen-latency-testing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package main | |
import ( | |
"bufio" | |
"bytes" | |
"fmt" | |
"net" | |
"os/exec" | |
"strconv" | |
"time" | |
"github.com/go-vgo/robotgo" | |
) | |
func main() { | |
fmt.Println("Start server...") | |
ln, _ := net.Listen("tcp", "127.0.0.1:") | |
_, serverPort, _ := net.SplitHostPort(ln.Addr().String()) | |
fmt.Println("Listening on address:") | |
fmt.Println(ln.Addr()) | |
cmd := exec.Command("adb", "shell", "am", "start", "-n", | |
"com.android.example.camera2.slowmo/com.example.android.camera2.slowmo.CameraActivity", | |
"--es", "port "+serverPort) | |
// error logging and execution for cmd | |
var out bytes.Buffer | |
var stderr bytes.Buffer | |
cmd.Stdout = &out | |
cmd.Stderr = &stderr | |
err := cmd.Run() | |
if err != nil { | |
fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) | |
return | |
} | |
fmt.Println("Result: " + out.String()) | |
cmd2 := exec.Command("adb", "reverse", "tcp:"+serverPort, "tcp:"+serverPort) | |
// error logging and execution for cmd2 | |
var out2 bytes.Buffer | |
var stderr2 bytes.Buffer | |
cmd2.Stdout = &out2 | |
cmd2.Stderr = &stderr2 | |
err2 := cmd2.Run() | |
if err2 != nil { | |
fmt.Println(fmt.Sprint(err2) + ": " + stderr2.String()) | |
return | |
} | |
fmt.Println("Result: " + out2.String()) | |
// accept connection | |
conn, _ := ln.Accept() | |
fmt.Println("Got connection from:") | |
fmt.Println(conn.LocalAddr().String()) | |
// serverReader := bufio.NewReader(os.Stdin) | |
hostReader := bufio.NewReader(conn) | |
var cache [12]string | |
counter := 0 | |
// fmt.Print("Text to send: ") | |
// text, _ := serverReader.ReadString('\n') | |
// // send to server | |
// fmt.Fprintf(conn, text) | |
message, _ := hostReader.ReadString('*') // using * as delim and hardcoded in app to append * at end of message | |
fmt.Println(message) | |
if message == "started capture*" { | |
cache[counter] = strconv.Itoa(int(time.Now().UnixNano() / 1000000)) | |
counter++ | |
time.Sleep(1 * time.Second) | |
for i := 0; i < 10; i++ { | |
robotgo.TypeStr("m") | |
cache[counter] = strconv.Itoa(int(time.Now().UnixNano() / 1000000)) | |
counter++ | |
time.Sleep(100 * time.Millisecond) | |
} | |
} | |
fmt.Println("Key simulation ended") | |
message, _ = hostReader.ReadString('*') // using * as delim and hardcoded in app to append * at end of message | |
fmt.Println(message) | |
if message == "send cache*" { | |
//time.Sleep(1 * time.Second) | |
for i := 0; i < counter; i++ { | |
fmt.Fprint(conn, cache[i]+"\n") | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment