refactor: update Listen method to accept metadata as a pointer
MyungSub0519 committed
Nov 12, 2025 at 23:09 UTC
ca0328808f1243feb99e85ac44ef91ed49ee3c3f
4 files changed
+8
-13
cmd/demo-app/main.go
+1
-1
@@ -188,7 +188,7 @@ func runPaint() error {
188
defer client.Close()
189
190
// 3) Register lease and obtain a net.Listener that accepts relayed connections
191
- metadata := sdk.Metadata{
191
+ metadata := &sdk.Metadata{
192
Description: "Portal demo paint app",
193
Tags: []string{"demo", "paint"},
194
Owner: "PortalApp Developer",
cmd/portal-tunnel/main.go
+1
-1
@@ -91,7 +91,7 @@ func runExpose() error {
91
defer client.Close()
92
93
// Register listener
94
- listener, err := client.Listen(cred, flagName, []string{"http/1.1", "h2"})
94
+ listener, err := client.Listen(cred, flagName, []string{"http/1.1", "h2"}, nil)
95
if err != nil {
96
return fmt.Errorf("failed to register service: %w", err)
97
}
sdk/sdk.go
+4
-9
@@ -316,12 +316,12 @@ func (g *RDClient) Dial(cred *cryptoops.Credential, leaseID string, alpn string)
316
return nil, ErrNoAvailableRelay
317
}
318
319
-func (g *RDClient) Listen(cred *cryptoops.Credential, name string, alpns []string, metadata ...Metadata) (*RDListener, error) {
319
+func (g *RDClient) Listen(cred *cryptoops.Credential, name string, alpns []string, metadata *Metadata) (*RDListener, error) {
320
log.Debug().
321
Str("lease_id", cred.ID()).
322
Str("name", name).
323
Strs("alpns", alpns).
324
- Int("metadata_count", len(metadata)).
324
+ Bool("has_metadata", metadata != nil).
325
Msg("[SDK] Creating listener")
326
327
// Validate name is URL-safe
@@ -332,15 +332,10 @@ func (g *RDClient) Listen(cred *cryptoops.Credential, name string, alpns []strin
332
return nil, ErrInvalidName
333
}
334
335
- if len(metadata) > 1 {
336
- log.Error().Msg("[SDK] Too many metadata arguments")
337
- return nil, ErrInvalidMetadata
338
- }
339
-
335
metadataValue := ""
336
342
- if len(metadata) > 0 {
343
- metadataJSON, err := json.Marshal(metadata[0])
337
+ if metadata != nil {
338
+ metadataJSON, err := json.Marshal(metadata)
339
if err != nil {
340
log.Error().Err(err).Msg("[SDK] Failed to marshal metadata")
341
return nil, ErrInvalidMetadata
sdk/sdk_e2e_test.go
+2
-2
@@ -102,7 +102,7 @@ func TestE2E_ClientToAppThroughRelay(t *testing.T) {
102
103
// 5. Register listener on app side
104
log.Info().Msg("[TEST] Step 5: Registering app listener")
105
- appListener, err := appClient.Listen(appCred, "test-app", []string{"http/1.1"})
105
+ appListener, err := appClient.Listen(appCred, "test-app", []string{"http/1.1"}, nil)
106
if err != nil {
107
t.Fatalf("Failed to create app listener: %v", err)
108
}
@@ -276,7 +276,7 @@ func TestE2E_MultipleConnections(t *testing.T) {
276
}
277
defer appClient.Close()
278
279
- appListener, err := appClient.Listen(appCred, "multi-test-app", []string{"http/1.1"})
279
+ appListener, err := appClient.Listen(appCred, "multi-test-app", []string{"http/1.1"}, nil)
280
if err != nil {
281
t.Fatalf("Failed to create app listener: %v", err)
282
}