Add grpc transport

This commit is contained in:
Asim Aslam
2019-05-24 17:15:59 +01:00
parent b926ae81bb
commit 25a0d05ac9
8 changed files with 793 additions and 0 deletions

39
transport/grpc/handler.go Normal file
View File

@@ -0,0 +1,39 @@
package grpc
import (
"runtime/debug"
"github.com/micro/go-log"
"github.com/micro/go-micro/transport"
pb "github.com/micro/go-plugins/transport/grpc/proto"
"google.golang.org/grpc/peer"
)
// microTransport satisfies the pb.TransportServer inteface
type microTransport struct {
addr string
fn func(transport.Socket)
}
func (m *microTransport) Stream(ts pb.Transport_StreamServer) error {
sock := &grpcTransportSocket{
stream: ts,
local: m.addr,
}
p, ok := peer.FromContext(ts.Context())
if ok {
sock.remote = p.Addr.String()
}
defer func() {
if r := recover(); r != nil {
log.Log(r, string(debug.Stack()))
sock.Close()
}
}()
// execute socket func
m.fn(sock)
return nil
}