initial add - go fmt on grpc

Change-Id: Ib0afadd2fe5571d1456a091f94f5644458f7d3f4
diff --git a/grpc/changeEvent.go b/grpc/changeEvent.go
new file mode 100644
index 0000000..275700d
--- /dev/null
+++ b/grpc/changeEvent.go
@@ -0,0 +1,89 @@
+/*
+   Copyright 2017 the original author or authors.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+        http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+*/
+
+package grpc
+
+import (
+	"context"
+	"encoding/json"
+	"github.com/golang/protobuf/ptypes/empty"
+	"github.com/opencord/ofagent-go/openflow"
+	pb "github.com/opencord/voltha-protos/go/voltha"
+	ofp "github.com/skydive-project/goloxi/of13"
+	"google.golang.org/grpc"
+	"log"
+	"net"
+	"time"
+)
+
+func receiveChangeEvent(client pb.VolthaServiceClient) {
+	opt := grpc.EmptyCallOption{}
+	stream, err := client.ReceiveChangeEvents(context.Background(), &empty.Empty{}, opt)
+	if err != nil {
+		log.Fatalln("Unable to establish stream")
+	}
+	for {
+		changeEvent, err := stream.Recv()
+		if err != nil {
+			log.Printf("Error receiving change event %v", err)
+		}
+		js, _ := json.Marshal(changeEvent)
+
+		log.Printf("Received Change Event   \n\n\n %s \n\n\n", js)
+		deviceId := changeEvent.GetId()
+		portStatus := changeEvent.GetPortStatus()
+		if portStatus == nil {
+			jsonMessage, _ := json.Marshal(changeEvent.GetEvent())
+			log.Printf("Received change event that was not port status %v", jsonMessage)
+			break
+		}
+		log.Println("???????????????????????????????????????????????????????????????????")
+		ofPortStatus := ofp.NewPortStatus()
+		ofPortStatus.SetXid(openflow.GetXid())
+		ofPortStatus.SetVersion(4)
+
+		ofReason := ofp.PortReason(portStatus.GetReason())
+		ofPortStatus.SetReason(ofReason)
+		ofDesc := ofp.NewPortDesc()
+
+		desc := portStatus.GetDesc()
+		ofDesc.SetAdvertised(ofp.PortFeatures(desc.GetAdvertised()))
+		ofDesc.SetConfig(ofp.PortConfig(0))
+		ofDesc.SetCurr(ofp.PortFeatures(desc.GetAdvertised()))
+		ofDesc.SetCurrSpeed(desc.GetCurrSpeed())
+		intArray := desc.GetHwAddr()
+		var octets []byte
+		for i := 0; i < len(intArray); i++ {
+			octets = append(octets, byte(intArray[i]))
+		}
+		addr := net.HardwareAddr(octets)
+		ofDesc.SetHwAddr(addr)
+		ofDesc.SetMaxSpeed(desc.GetMaxSpeed())
+		ofDesc.SetName(openflow.PadString(desc.GetName(), 16))
+		ofDesc.SetPeer(ofp.PortFeatures(desc.GetPeer()))
+		ofDesc.SetPortNo(ofp.Port(desc.GetPortNo()))
+		ofDesc.SetState(ofp.PortState(desc.GetState()))
+		ofDesc.SetSupported(ofp.PortFeatures(desc.GetSupported()))
+		ofPortStatus.SetDesc(*ofDesc)
+		var client = clientMap[deviceId]
+		if client == nil {
+			client = addClient(deviceId)
+
+			time.Sleep(2 * time.Second)
+		}
+		client.SendMessage(ofPortStatus)
+	}
+}