@@ -17,6 +17,7 @@ package {{PACKAGE}}
1717import (
1818 "context"
1919 "fmt"
20+ "time"
2021
2122 slim_bindings "github.com/agntcy/slim-bindings-go"
2223 "github.com/agntcy/slim-bindings-go/slimrpc"
@@ -58,8 +59,21 @@ func (c *{{SERVICE_NAME}}ClientImpl) {{METHOD_NAME}}(ctx context.Context, req *{
5859 return nil, err
5960 }
6061
62+ // Extract timeout from context
63+ var timeout *time.Duration
64+ if deadline, ok := ctx.Deadline(); ok {
65+ t := time.Until(deadline)
66+ timeout = &t
67+ }
68+
69+ // Extract metadata from context
70+ var metadata *map[string]string
71+ if md, ok := slimrpc.MetadataFromContext(ctx); ok {
72+ metadata = &md
73+ }
74+
6175 // Make RPC call
62- respBytes, err := c.channel.CallUnaryAsync("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", reqBytes, nil )
76+ respBytes, err := c.channel.CallUnaryAsync("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", reqBytes, timeout, metadata )
6377 if err != nil {
6478 return nil, err
6579 }
@@ -85,8 +99,21 @@ func (c *{{SERVICE_NAME}}ClientImpl) {{METHOD_NAME}}(ctx context.Context, req *{
8599 return nil, err
86100 }
87101
102+ // Extract timeout from context
103+ var timeout *time.Duration
104+ if deadline, ok := ctx.Deadline(); ok {
105+ t := time.Until(deadline)
106+ timeout = &t
107+ }
108+
109+ // Extract metadata from context
110+ var metadata *map[string]string
111+ if md, ok := slimrpc.MetadataFromContext(ctx); ok {
112+ metadata = &md
113+ }
114+
88115 // Make RPC call
89- stream, err := c.channel.CallUnaryStreamAsync("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", reqBytes, nil )
116+ stream, err := c.channel.CallUnaryStreamAsync("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", reqBytes, timeout, metadata )
90117 if err != nil {
91118 return nil, err
92119 }
@@ -100,7 +127,20 @@ const STREAM_UNARY_CLIENT_METHOD: &str = r#" {{METHOD_NAME}}(ctx context.Context
100127
101128const STREAM_UNARY_CLIENT_IMPL : & str = r#"
102129func (c *{{SERVICE_NAME}}ClientImpl) {{METHOD_NAME}}(ctx context.Context) (slimrpc.ClientRequestStream[*{{INPUT_TYPE}}, *{{OUTPUT_TYPE}}], error) {
103- stream := c.channel.CallStreamUnary("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", nil)
130+ // Extract timeout from context
131+ var timeout *time.Duration
132+ if deadline, ok := ctx.Deadline(); ok {
133+ t := time.Until(deadline)
134+ timeout = &t
135+ }
136+
137+ // Extract metadata from context
138+ var metadata *map[string]string
139+ if md, ok := slimrpc.MetadataFromContext(ctx); ok {
140+ metadata = &md
141+ }
142+
143+ stream := c.channel.CallStreamUnary("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", timeout, metadata)
104144 return slimrpc.NewClientRequestStream[*{{INPUT_TYPE}}, *{{OUTPUT_TYPE}}](stream), nil
105145}
106146"# ;
@@ -110,7 +150,20 @@ const STREAM_STREAM_CLIENT_METHOD: &str = r#" {{METHOD_NAME}}(ctx context.Contex
110150
111151const STREAM_STREAM_CLIENT_IMPL : & str = r#"
112152func (c *{{SERVICE_NAME}}ClientImpl) {{METHOD_NAME}}(ctx context.Context) (slimrpc.ClientBidiStream[*{{INPUT_TYPE}}, *{{OUTPUT_TYPE}}], error) {
113- stream := c.channel.CallStreamStream("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", nil)
153+ // Extract timeout from context
154+ var timeout *time.Duration
155+ if deadline, ok := ctx.Deadline(); ok {
156+ t := time.Until(deadline)
157+ timeout = &t
158+ }
159+
160+ // Extract metadata from context
161+ var metadata *map[string]string
162+ if md, ok := slimrpc.MetadataFromContext(ctx); ok {
163+ metadata = &md
164+ }
165+
166+ stream := c.channel.CallStreamStream("{{PACKAGE_NAME}}.{{SERVICE_NAME}}", "{{METHOD_NAME}}", timeout, metadata)
114167 return slimrpc.NewClientBidiStream[*{{INPUT_TYPE}}, *{{OUTPUT_TYPE}}](stream), nil
115168}
116169"# ;
0 commit comments