mirror of
https://github.com/go-micro/go-micro.git
synced 2024-12-24 10:07:04 +02:00
7b385bf163
* logs alloc Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * fix allocs Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * fix allocs Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * tunnel allocs Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * try to fix tunnel Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * cache cipher for send Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * more logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * more logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * more logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * more logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * more logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * more logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org> * more logger Signed-off-by: Vasiliy Tolstov <v.tolstov@unistack.org>
44 lines
866 B
Go
44 lines
866 B
Go
package grpc
|
|
|
|
import (
|
|
"runtime/debug"
|
|
|
|
"github.com/micro/go-micro/v2/errors"
|
|
"github.com/micro/go-micro/v2/logger"
|
|
"github.com/micro/go-micro/v2/transport"
|
|
pb "github.com/micro/go-micro/v2/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) (err 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 {
|
|
logger.Error(r, string(debug.Stack()))
|
|
sock.Close()
|
|
err = errors.InternalServerError("go.micro.transport", "panic recovered: %v", r)
|
|
}
|
|
}()
|
|
|
|
// execute socket func
|
|
m.fn(sock)
|
|
|
|
return err
|
|
}
|