* 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
 | |
| }
 |