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