Skip to content

Instantly share code, notes, and snippets.

@OmisNomis
Created April 19, 2018 09:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save OmisNomis/aac7027b108be606db028c6c1d52ad28 to your computer and use it in GitHub Desktop.
Save OmisNomis/aac7027b108be606db028c6c1d52ad28 to your computer and use it in GitHub Desktop.
GO RPC Tutorial
package main
import (
"log"
"net/rpc"
)
type ToDo struct {
Title, Status string
}
type EditToDo struct {
Title, NewTitle, NewStatus string
}
func main() {
var err error
var reply ToDo
// Create a TCP connection to localhost on port 1234
client, err := rpc.DialHTTP("tcp", "localhost:1234")
if err != nil {
log.Fatal("Connection error: ", err)
}
finishApp := ToDo{"Finish App", "Started"}
makeDinner := ToDo{"Make Dinner", "Not Started"}
walkDog := ToDo{"Walk the dog", "Not Started"}
client.Call("Task.MakeToDo", finishApp, &reply)
client.Call("Task.MakeToDo", makeDinner, &reply)
client.Call("Task.MakeToDo", walkDog, &reply)
client.Call("Task.DeleteToDo", makeDinner, &reply)
client.Call("Task.MakeToDo", makeDinner, &reply)
client.Call("Task.GetToDo", "Finish App", &reply)
log.Println("Finish App: ", reply)
err = client.Call("Task.EditToDo", EditToDo{"Finish App", "Finish App", "Completed"}, &reply)
if err != nil {
log.Fatal("Problem editing ToDo: ", err)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment