micro--go-micro
4311b73361
* docs: compare Go Micro with Google ADK in the comparison guide Adds a 'vs Agent Frameworks (Google ADK)' section: ADK builds an agent, Go Micro builds the distributed system the agent lives in (agents are services in the mesh). Covers the category difference, a feature table, when to choose each, and MCP/A2A interoperability. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL * docs: replace ADK comparison slogan with concrete explanation State plainly what each tool provides (ADK builds an agent process; Go Micro builds the surrounding service mesh) instead of marketing phrasing. * lint: apply golangci-lint autofixes; exclude ST1003 and demo errcheck Mechanical, behaviour-preserving fixes applied by 'golangci-lint run --fix': gofmt, misspell (US spelling), usestdlibvars (http.Method*/Status*), unconvert, and the auto-fixable staticcheck simplifications (QF*, S1017/S1019/S1023/S1039). Config: exclude ST1003 (remaining offenders are exported API renames, e.g. web.Id, which would break compatibility) and skip errcheck for examples/ and internal/harness/ (demo code where fire-and-forget is intentional). Build and test compilation verified. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL * lint: WIP cleanup checkpoint (errcheck config + partial fixes) Checkpoint of an in-progress golangci-lint cleanup (background pass). Builds cleanly; lint is not yet zero. Follow-up commit will complete the cleanup and switch CI to a blocking full-tree lint. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL --------- Co-authored-by: Claude <noreply@anthropic.com>
88 行
1.6 KiB
Go
88 行
1.6 KiB
Go
package registry
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
func serviceToRecord(s *Service, ttl time.Duration) *record {
|
|
metadata := make(map[string]string, len(s.Metadata))
|
|
for k, v := range s.Metadata {
|
|
metadata[k] = v
|
|
}
|
|
|
|
nodes := make(map[string]*node, len(s.Nodes))
|
|
for _, n := range s.Nodes {
|
|
nodes[n.Id] = &node{
|
|
Node: n,
|
|
TTL: ttl,
|
|
LastSeen: time.Now(),
|
|
}
|
|
}
|
|
|
|
endpoints := make([]*Endpoint, len(s.Endpoints))
|
|
copy(endpoints, s.Endpoints)
|
|
|
|
return &record{
|
|
Name: s.Name,
|
|
Version: s.Version,
|
|
Metadata: metadata,
|
|
Nodes: nodes,
|
|
Endpoints: endpoints,
|
|
}
|
|
}
|
|
|
|
func recordToService(r *record) *Service {
|
|
metadata := make(map[string]string, len(r.Metadata))
|
|
for k, v := range r.Metadata {
|
|
metadata[k] = v
|
|
}
|
|
|
|
endpoints := make([]*Endpoint, len(r.Endpoints))
|
|
for i, e := range r.Endpoints {
|
|
request := new(Value)
|
|
if e.Request != nil {
|
|
*request = *e.Request
|
|
}
|
|
response := new(Value)
|
|
if e.Response != nil {
|
|
*response = *e.Response
|
|
}
|
|
|
|
metadata := make(map[string]string, len(e.Metadata))
|
|
for k, v := range e.Metadata {
|
|
metadata[k] = v
|
|
}
|
|
|
|
endpoints[i] = &Endpoint{
|
|
Name: e.Name,
|
|
Request: request,
|
|
Response: response,
|
|
Metadata: metadata,
|
|
}
|
|
}
|
|
|
|
nodes := make([]*Node, len(r.Nodes))
|
|
i := 0
|
|
for _, n := range r.Nodes {
|
|
metadata := make(map[string]string, len(n.Metadata))
|
|
for k, v := range n.Metadata {
|
|
metadata[k] = v
|
|
}
|
|
|
|
nodes[i] = &Node{
|
|
Id: n.Id,
|
|
Address: n.Address,
|
|
Metadata: metadata,
|
|
}
|
|
i++
|
|
}
|
|
|
|
return &Service{
|
|
Name: r.Name,
|
|
Version: r.Version,
|
|
Metadata: metadata,
|
|
Endpoints: endpoints,
|
|
Nodes: nodes,
|
|
}
|
|
}
|