@@ -43,12 +43,12 @@ extension TypealiasDescription {
43
43
extension VariableDescription {
44
44
/// ```
45
45
/// static let descriptor = GRPCCore.MethodDescriptor(
46
- /// service: <serviceNamespace>.descriptor.fullyQualifiedService ,
46
+ /// service: GRPCCore.ServiceDescriptor(fullyQualifiedServiceName: "<literalFullyQualifiedService>") ,
47
47
/// method: "<literalMethodName>"
48
48
/// ```
49
49
package static func methodDescriptor(
50
50
accessModifier: AccessModifier ? = nil ,
51
- serviceNamespace : String ,
51
+ literalFullyQualifiedService : String ,
52
52
literalMethodName: String
53
53
) -> Self {
54
54
return VariableDescription (
@@ -62,9 +62,11 @@ extension VariableDescription {
62
62
arguments: [
63
63
FunctionArgumentDescription (
64
64
label: " service " ,
65
- expression: . identifierType(
66
- . member( [ serviceNamespace, " descriptor " ] )
67
- ) . dot ( " fullyQualifiedService " )
65
+ expression: . functionCall(
66
+ . serviceDescriptor(
67
+ literalFullyQualifiedService: literalFullyQualifiedService
68
+ )
69
+ )
68
70
) ,
69
71
FunctionArgumentDescription (
70
72
label: " method " ,
@@ -77,18 +79,34 @@ extension VariableDescription {
77
79
}
78
80
79
81
/// ```
80
- /// static let descriptor = GRPCCore.ServiceDescriptor.<namespacedProperty>
82
+ /// static let descriptor = GRPCCore.ServiceDescriptor(package: "...", service: "...")
81
83
/// ```
82
84
package static func serviceDescriptor(
83
85
accessModifier: AccessModifier ? = nil ,
84
- namespacedProperty : String
86
+ literalFullyQualifiedService name : String
85
87
) -> Self {
86
88
return VariableDescription (
87
89
accessModifier: accessModifier,
88
90
isStatic: true ,
89
91
kind: . let,
90
92
left: . identifierPattern( " descriptor " ) ,
91
- right: . identifier( . type( . serviceDescriptor) ) . dot ( namespacedProperty)
93
+ right: . functionCall( . serviceDescriptor( literalFullyQualifiedService: name) )
94
+ )
95
+ }
96
+ }
97
+
98
+ extension FunctionCallDescription {
99
+ package static func serviceDescriptor(
100
+ literalFullyQualifiedService: String
101
+ ) -> Self {
102
+ FunctionCallDescription (
103
+ calledExpression: . identifier( . type( . serviceDescriptor) ) ,
104
+ arguments: [
105
+ FunctionArgumentDescription (
106
+ label: " fullyQualifiedService " ,
107
+ expression: . literal( literalFullyQualifiedService)
108
+ )
109
+ ]
92
110
)
93
111
}
94
112
}
@@ -97,16 +115,14 @@ extension ExtensionDescription {
97
115
/// ```
98
116
/// extension GRPCCore.ServiceDescriptor {
99
117
/// static let <PropertyName> = Self(
100
- /// package: "<LiteralNamespaceName>",
101
- /// service: "<LiteralServiceName>"
118
+ /// fullyQualifiedService: <LiteralFullyQualifiedService>
102
119
/// )
103
120
/// }
104
121
/// ```
105
122
package static func serviceDescriptor(
106
123
accessModifier: AccessModifier ? = nil ,
107
124
propertyName: String ,
108
- literalNamespace: String ,
109
- literalService: String
125
+ literalFullyQualifiedService: String
110
126
) -> ExtensionDescription {
111
127
return ExtensionDescription (
112
128
onType: " GRPCCore.ServiceDescriptor " ,
@@ -117,17 +133,7 @@ extension ExtensionDescription {
117
133
kind: . let,
118
134
left: . identifier( . pattern( propertyName) ) ,
119
135
right: . functionCall(
120
- calledExpression: . identifierType( . member( " Self " ) ) ,
121
- arguments: [
122
- FunctionArgumentDescription (
123
- label: " package " ,
124
- expression: . literal( literalNamespace)
125
- ) ,
126
- FunctionArgumentDescription (
127
- label: " service " ,
128
- expression: . literal( literalService)
129
- ) ,
130
- ]
136
+ . serviceDescriptor( literalFullyQualifiedService: literalFullyQualifiedService)
131
137
)
132
138
)
133
139
]
@@ -169,7 +175,7 @@ extension EnumDescription {
169
175
accessModifier: AccessModifier ? = nil ,
170
176
name: String ,
171
177
literalMethod: String ,
172
- serviceNamespace : String ,
178
+ literalFullyQualifiedService : String ,
173
179
inputType: String ,
174
180
outputType: String
175
181
) -> Self {
@@ -182,7 +188,7 @@ extension EnumDescription {
182
188
. variable(
183
189
. methodDescriptor(
184
190
accessModifier: accessModifier,
185
- serviceNamespace : serviceNamespace ,
191
+ literalFullyQualifiedService : literalFullyQualifiedService ,
186
192
literalMethodName: literalMethod
187
193
)
188
194
) ,
@@ -209,7 +215,7 @@ extension EnumDescription {
209
215
/// ```
210
216
package static func methodsNamespace(
211
217
accessModifier: AccessModifier ? = nil ,
212
- serviceNamespace : String ,
218
+ literalFullyQualifiedService : String ,
213
219
methods: [ MethodDescriptor ]
214
220
) -> EnumDescription {
215
221
var description = EnumDescription ( accessModifier: accessModifier, name: " Method " )
@@ -221,7 +227,7 @@ extension EnumDescription {
221
227
accessModifier: accessModifier,
222
228
name: method. name. base,
223
229
literalMethod: method. name. base,
224
- serviceNamespace : serviceNamespace ,
230
+ literalFullyQualifiedService : literalFullyQualifiedService ,
225
231
inputType: method. inputType,
226
232
outputType: method. outputType
227
233
)
@@ -245,57 +251,31 @@ extension EnumDescription {
245
251
/// enum Method {
246
252
/// ...
247
253
/// }
248
- /// @available(...)
249
- /// typealias StreamingServiceProtocol = ...
250
- /// @available(...)
251
- /// typealias ServiceProtocol = ...
252
- /// ...
253
254
/// }
254
255
/// ```
255
256
package static func serviceNamespace(
256
257
accessModifier: AccessModifier ? = nil ,
257
258
name: String ,
258
- serviceDescriptorProperty: String ,
259
- client: Bool ,
260
- server: Bool ,
259
+ literalFullyQualifiedService: String ,
261
260
methods: [ MethodDescriptor ]
262
261
) -> EnumDescription {
263
262
var description = EnumDescription ( accessModifier: accessModifier, name: name)
264
263
265
- // static let descriptor = GRPCCore.ServiceDescriptor.<namespacedServicePropertyName>
264
+ // static let descriptor = GRPCCore.ServiceDescriptor(fullyQualifiedService: "...")
266
265
let descriptor = VariableDescription . serviceDescriptor (
267
266
accessModifier: accessModifier,
268
- namespacedProperty : serviceDescriptorProperty
267
+ literalFullyQualifiedService : literalFullyQualifiedService
269
268
)
270
269
description. members. append ( . variable( descriptor) )
271
270
272
271
// enum Method { ... }
273
272
let methodsNamespace : EnumDescription = . methodsNamespace(
274
273
accessModifier: accessModifier,
275
- serviceNamespace : name ,
274
+ literalFullyQualifiedService : literalFullyQualifiedService ,
276
275
methods: methods
277
276
)
278
277
description. members. append ( . enum( methodsNamespace) )
279
278
280
- // Typealiases for the various protocols.
281
- var typealiasNames : [ String ] = [ ]
282
- if server {
283
- typealiasNames. append ( " StreamingServiceProtocol " )
284
- typealiasNames. append ( " ServiceProtocol " )
285
- }
286
- if client {
287
- typealiasNames. append ( " ClientProtocol " )
288
- typealiasNames. append ( " Client " )
289
- }
290
- let typealiases : [ Declaration ] = typealiasNames. map { alias in
291
- . typealias(
292
- accessModifier: accessModifier,
293
- name: alias,
294
- existingType: . member( name + " _ " + alias)
295
- )
296
- }
297
- description. members. append ( contentsOf: typealiases)
298
-
299
279
return description
300
280
}
301
281
}
@@ -312,27 +292,22 @@ extension [CodeBlock] {
312
292
/// ```
313
293
package static func serviceMetadata(
314
294
accessModifier: AccessModifier ? = nil ,
315
- service: ServiceDescriptor ,
316
- client: Bool ,
317
- server: Bool
295
+ service: ServiceDescriptor
318
296
) -> Self {
319
297
var blocks : [ CodeBlock ] = [ ]
320
298
321
299
let serviceNamespace : EnumDescription = . serviceNamespace(
322
300
accessModifier: accessModifier,
323
301
name: service. namespacedGeneratedName,
324
- serviceDescriptorProperty: service. namespacedServicePropertyName,
325
- client: client,
326
- server: server,
302
+ literalFullyQualifiedService: service. fullyQualifiedName,
327
303
methods: service. methods
328
304
)
329
305
blocks. append ( CodeBlock ( item: . declaration( . enum( serviceNamespace) ) ) )
330
306
331
307
let descriptorExtension : ExtensionDescription = . serviceDescriptor(
332
308
accessModifier: accessModifier,
333
309
propertyName: service. namespacedServicePropertyName,
334
- literalNamespace: service. namespace. base,
335
- literalService: service. name. base
310
+ literalFullyQualifiedService: service. fullyQualifiedName
336
311
)
337
312
blocks. append ( CodeBlock ( item: . declaration( . extension( descriptorExtension) ) ) )
338
313
0 commit comments