go-micro.dev/v5@v5.12.0/registry/memory_util.go (about) 1 package registry 2 3 import ( 4 "time" 5 ) 6 7 func serviceToRecord(s *Service, ttl time.Duration) *record { 8 metadata := make(map[string]string, len(s.Metadata)) 9 for k, v := range s.Metadata { 10 metadata[k] = v 11 } 12 13 nodes := make(map[string]*node, len(s.Nodes)) 14 for _, n := range s.Nodes { 15 nodes[n.Id] = &node{ 16 Node: n, 17 TTL: ttl, 18 LastSeen: time.Now(), 19 } 20 } 21 22 endpoints := make([]*Endpoint, len(s.Endpoints)) 23 for i, e := range s.Endpoints { 24 endpoints[i] = e 25 } 26 27 return &record{ 28 Name: s.Name, 29 Version: s.Version, 30 Metadata: metadata, 31 Nodes: nodes, 32 Endpoints: endpoints, 33 } 34 } 35 36 func recordToService(r *record) *Service { 37 metadata := make(map[string]string, len(r.Metadata)) 38 for k, v := range r.Metadata { 39 metadata[k] = v 40 } 41 42 endpoints := make([]*Endpoint, len(r.Endpoints)) 43 for i, e := range r.Endpoints { 44 request := new(Value) 45 if e.Request != nil { 46 *request = *e.Request 47 } 48 response := new(Value) 49 if e.Response != nil { 50 *response = *e.Response 51 } 52 53 metadata := make(map[string]string, len(e.Metadata)) 54 for k, v := range e.Metadata { 55 metadata[k] = v 56 } 57 58 endpoints[i] = &Endpoint{ 59 Name: e.Name, 60 Request: request, 61 Response: response, 62 Metadata: metadata, 63 } 64 } 65 66 nodes := make([]*Node, len(r.Nodes)) 67 i := 0 68 for _, n := range r.Nodes { 69 metadata := make(map[string]string, len(n.Metadata)) 70 for k, v := range n.Metadata { 71 metadata[k] = v 72 } 73 74 nodes[i] = &Node{ 75 Id: n.Id, 76 Address: n.Address, 77 Metadata: metadata, 78 } 79 i++ 80 } 81 82 return &Service{ 83 Name: r.Name, 84 Version: r.Version, 85 Metadata: metadata, 86 Endpoints: endpoints, 87 Nodes: nodes, 88 } 89 }