cloud-control-panel/eventChannel.go

88 lines
2.2 KiB
Go

package main
import "log"
import "github.com/golang/protobuf/proto"
import pb "git.wit.org/jcarr/witProtobuf"
import "git.wit.org/wit/gui"
var mychannel chan *pb.Event
var currentMessage *pb.Event
func initChannel() {
mychannel = make(chan *pb.Event)
}
// Marshal & Unmarshal just to see if it ever fails
func addEvent(msg *pb.Event) {
data, err := proto.Marshal(msg)
if (err != nil) {
log.Printf("addEvent() something fucked up happened in Marshal")
}
pdata := new(pb.Event)
err = proto.Unmarshal(data, pdata)
if (err != nil) {
log.Printf("addEvent() something fucked up happened in Unmarshal")
}
mychannel <- pdata
}
// func processEvents(mychannel chan *pb.Event) {
func processEvents() {
defer r() // a golang trick to try to not crash on certain errors
for {
currentMessage = <-mychannel
log.Println("processEvents() RECIEVED msg = ", currentMessage)
if (currentMessage.Type == pb.Event_DEMO) {
log.Println("processEvents() do Event DEMO")
} else {
log.Println("processEvents() NEW PROTOBUF")
State = "NEW PROTOBUF"
}
log.Println("processEvents() END on channel")
}
}
func countVMS(data *pb.Event) int {
vms := data.GetVms()
log.Println("NUMBER OF vms=", len(vms))
// os.Exit(-1)
return len(vms)
}
func ReadReceivedData(data *pb.Event, mh *gui.TableData, box *gui.GuiBox) {
msgItems := data.GetResults()
log.Println("ReadReceivedData() Event msgItems=", msgItems)
for _, item := range msgItems {
log.Println(item)
}
nets := data.GetNetworks()
log.Println("ReadReceivedData() Event networks=", nets)
for _, item := range nets {
log.Println(item)
}
vms := data.GetVms()
log.Println("ReadReceivedData() Event vms=", vms)
for row, vm := range vms {
setRowValues(mh, row, vm)
// create entries for the mouse clicks within tables
var newGuiButton gui.GuiButton
newGuiButton.Custom = showVmMouseClick
if (box.Window == nil) {
panic("ReadReceivedData() box == nil")
}
newGuiButton.Box = mh.Box
newGuiButton.Values = makeGuiButtonValues(box, data.Account, vm, "JWC", "SHOW VM 33", showVmMouseClick)
gui.Data.AllButtons = append(gui.Data.AllButtons, &newGuiButton)
mh.Rows[row].HumanData[6].Button = &newGuiButton
log.Println("\tvm.Name=", vm.Name, mh.Rows[row].Name)
row += 1
}
}