gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/registry/service/util.go (about)

     1  package service
     2  
     3  import (
     4  	"gitee.com/liuxuezhan/go-micro-v1.18.0/registry"
     5  	pb "gitee.com/liuxuezhan/go-micro-v1.18.0/registry/service/proto"
     6  )
     7  
     8  func values(v []*registry.Value) []*pb.Value {
     9  	if len(v) == 0 {
    10  		return []*pb.Value{}
    11  	}
    12  
    13  	vs := make([]*pb.Value, 0, len(v))
    14  	for _, vi := range v {
    15  		vs = append(vs, &pb.Value{
    16  			Name:   vi.Name,
    17  			Type:   vi.Type,
    18  			Values: values(vi.Values),
    19  		})
    20  	}
    21  	return vs
    22  }
    23  
    24  func toValues(v []*pb.Value) []*registry.Value {
    25  	if len(v) == 0 {
    26  		return []*registry.Value{}
    27  	}
    28  
    29  	vs := make([]*registry.Value, 0, len(v))
    30  	for _, vi := range v {
    31  		vs = append(vs, &registry.Value{
    32  			Name:   vi.Name,
    33  			Type:   vi.Type,
    34  			Values: toValues(vi.Values),
    35  		})
    36  	}
    37  	return vs
    38  }
    39  
    40  func ToProto(s *registry.Service) *pb.Service {
    41  	endpoints := make([]*pb.Endpoint, 0, len(s.Endpoints))
    42  	for _, ep := range s.Endpoints {
    43  		var request, response *pb.Value
    44  
    45  		if ep.Request != nil {
    46  			request = &pb.Value{
    47  				Name:   ep.Request.Name,
    48  				Type:   ep.Request.Type,
    49  				Values: values(ep.Request.Values),
    50  			}
    51  		}
    52  
    53  		if ep.Response != nil {
    54  			response = &pb.Value{
    55  				Name:   ep.Response.Name,
    56  				Type:   ep.Response.Type,
    57  				Values: values(ep.Response.Values),
    58  			}
    59  		}
    60  
    61  		endpoints = append(endpoints, &pb.Endpoint{
    62  			Name:     ep.Name,
    63  			Request:  request,
    64  			Response: response,
    65  			Metadata: ep.Metadata,
    66  		})
    67  	}
    68  
    69  	nodes := make([]*pb.Node, 0, len(s.Nodes))
    70  
    71  	for _, node := range s.Nodes {
    72  		nodes = append(nodes, &pb.Node{
    73  			Id:       node.Id,
    74  			Address:  node.Address,
    75  			Metadata: node.Metadata,
    76  		})
    77  	}
    78  
    79  	return &pb.Service{
    80  		Name:      s.Name,
    81  		Version:   s.Version,
    82  		Metadata:  s.Metadata,
    83  		Endpoints: endpoints,
    84  		Nodes:     nodes,
    85  	}
    86  }
    87  
    88  func ToService(s *pb.Service) *registry.Service {
    89  	endpoints := make([]*registry.Endpoint, 0, len(s.Endpoints))
    90  	for _, ep := range s.Endpoints {
    91  		var request, response *registry.Value
    92  
    93  		if ep.Request != nil {
    94  			request = &registry.Value{
    95  				Name:   ep.Request.Name,
    96  				Type:   ep.Request.Type,
    97  				Values: toValues(ep.Request.Values),
    98  			}
    99  		}
   100  
   101  		if ep.Response != nil {
   102  			response = &registry.Value{
   103  				Name:   ep.Response.Name,
   104  				Type:   ep.Response.Type,
   105  				Values: toValues(ep.Response.Values),
   106  			}
   107  		}
   108  
   109  		endpoints = append(endpoints, &registry.Endpoint{
   110  			Name:     ep.Name,
   111  			Request:  request,
   112  			Response: response,
   113  			Metadata: ep.Metadata,
   114  		})
   115  	}
   116  
   117  	nodes := make([]*registry.Node, 0, len(s.Nodes))
   118  	for _, node := range s.Nodes {
   119  		nodes = append(nodes, &registry.Node{
   120  			Id:       node.Id,
   121  			Address:  node.Address,
   122  			Metadata: node.Metadata,
   123  		})
   124  	}
   125  
   126  	return &registry.Service{
   127  		Name:      s.Name,
   128  		Version:   s.Version,
   129  		Metadata:  s.Metadata,
   130  		Endpoints: endpoints,
   131  		Nodes:     nodes,
   132  	}
   133  }