Skip to content

Commit c6b6589

Browse files
authored
Merge pull request #14 from kwan3854/v2.0.0
Adds robust chunking support for large RPC messages
2 parents d8f7821 + 371746f commit c6b6589

39 files changed

+4733
-589
lines changed

Assets/SampleRpc/HelloWorld.cs

Lines changed: 211 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,24 +24,26 @@ public static partial class HelloWorldReflection {
2424
static HelloWorldReflection() {
2525
byte[] descriptorData = global::System.Convert.FromBase64String(
2626
string.Concat(
27-
"ChBIZWxsb1dvcmxkLnByb3RvEgpoZWxsb3dvcmxkIhwKDEhlbGxvUmVxdWVz",
28-
"dBIMCgRuYW1lGAEgASgJIiEKDUhlbGxvUmVzcG9uc2USEAoIZ3JlZXRpbmcY",
29-
"ASABKAkyTwoMSGVsbG9TZXJ2aWNlEj8KCFNheUhlbGxvEhguaGVsbG93b3Js",
30-
"ZC5IZWxsb1JlcXVlc3QaGS5oZWxsb3dvcmxkLkhlbGxvUmVzcG9uc2VCDaoC",
31-
"CkhlbGxvV29ybGRiBnByb3RvMw=="));
27+
"ChBIZWxsb1dvcmxkLnByb3RvEgpoZWxsb3dvcmxkIkYKDEhlbGxvUmVxdWVz",
28+
"dBIMCgRuYW1lGAEgASgJEhMKC2xvbmdNZXNzYWdlGAIgASgJEhMKC3JlcGVh",
29+
"dENvdW50GAMgASgFImoKDUhlbGxvUmVzcG9uc2USEAoIZ3JlZXRpbmcYASAB",
30+
"KAkSFQoNZWNob2VkTWVzc2FnZRgCIAEoCRITCgtwcm9jZXNzZWRBdBgDIAEo",
31+
"CRIbChNvcmlnaW5hbE1lc3NhZ2VTaXplGAQgASgFMk8KDEhlbGxvU2Vydmlj",
32+
"ZRI/CghTYXlIZWxsbxIYLmhlbGxvd29ybGQuSGVsbG9SZXF1ZXN0GhkuaGVs",
33+
"bG93b3JsZC5IZWxsb1Jlc3BvbnNlQg2qAgpIZWxsb1dvcmxkYgZwcm90bzM="));
3234
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
3335
new pbr::FileDescriptor[] { },
3436
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
35-
new pbr::GeneratedClrTypeInfo(typeof(global::HelloWorld.HelloRequest), global::HelloWorld.HelloRequest.Parser, new[]{ "Name" }, null, null, null, null),
36-
new pbr::GeneratedClrTypeInfo(typeof(global::HelloWorld.HelloResponse), global::HelloWorld.HelloResponse.Parser, new[]{ "Greeting" }, null, null, null, null)
37+
new pbr::GeneratedClrTypeInfo(typeof(global::HelloWorld.HelloRequest), global::HelloWorld.HelloRequest.Parser, new[]{ "Name", "LongMessage", "RepeatCount" }, null, null, null, null),
38+
new pbr::GeneratedClrTypeInfo(typeof(global::HelloWorld.HelloResponse), global::HelloWorld.HelloResponse.Parser, new[]{ "Greeting", "EchoedMessage", "ProcessedAt", "OriginalMessageSize" }, null, null, null, null)
3739
}));
3840
}
3941
#endregion
4042

4143
}
4244
#region Messages
4345
/// <summary>
44-
/// 요청 메시지
46+
/// Request message for chunking test
4547
/// </summary>
4648
[global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
4749
public sealed partial class HelloRequest : pb::IMessage<HelloRequest>
@@ -79,6 +81,8 @@ public HelloRequest() {
7981
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
8082
public HelloRequest(HelloRequest other) : this() {
8183
name_ = other.name_;
84+
longMessage_ = other.longMessage_;
85+
repeatCount_ = other.repeatCount_;
8286
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
8387
}
8488

@@ -100,6 +104,36 @@ public string Name {
100104
}
101105
}
102106

107+
/// <summary>Field number for the "longMessage" field.</summary>
108+
public const int LongMessageFieldNumber = 2;
109+
private string longMessage_ = "";
110+
/// <summary>
111+
/// Very long string for testing chunking functionality
112+
/// </summary>
113+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
114+
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
115+
public string LongMessage {
116+
get { return longMessage_; }
117+
set {
118+
longMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
119+
}
120+
}
121+
122+
/// <summary>Field number for the "repeatCount" field.</summary>
123+
public const int RepeatCountFieldNumber = 3;
124+
private int repeatCount_;
125+
/// <summary>
126+
/// Optional: number of times to repeat the response
127+
/// </summary>
128+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
129+
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
130+
public int RepeatCount {
131+
get { return repeatCount_; }
132+
set {
133+
repeatCount_ = value;
134+
}
135+
}
136+
103137
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
104138
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
105139
public override bool Equals(object other) {
@@ -116,6 +150,8 @@ public bool Equals(HelloRequest other) {
116150
return true;
117151
}
118152
if (Name != other.Name) return false;
153+
if (LongMessage != other.LongMessage) return false;
154+
if (RepeatCount != other.RepeatCount) return false;
119155
return Equals(_unknownFields, other._unknownFields);
120156
}
121157

@@ -124,6 +160,8 @@ public bool Equals(HelloRequest other) {
124160
public override int GetHashCode() {
125161
int hash = 1;
126162
if (Name.Length != 0) hash ^= Name.GetHashCode();
163+
if (LongMessage.Length != 0) hash ^= LongMessage.GetHashCode();
164+
if (RepeatCount != 0) hash ^= RepeatCount.GetHashCode();
127165
if (_unknownFields != null) {
128166
hash ^= _unknownFields.GetHashCode();
129167
}
@@ -146,6 +184,14 @@ public void WriteTo(pb::CodedOutputStream output) {
146184
output.WriteRawTag(10);
147185
output.WriteString(Name);
148186
}
187+
if (LongMessage.Length != 0) {
188+
output.WriteRawTag(18);
189+
output.WriteString(LongMessage);
190+
}
191+
if (RepeatCount != 0) {
192+
output.WriteRawTag(24);
193+
output.WriteInt32(RepeatCount);
194+
}
149195
if (_unknownFields != null) {
150196
_unknownFields.WriteTo(output);
151197
}
@@ -160,6 +206,14 @@ public void WriteTo(pb::CodedOutputStream output) {
160206
output.WriteRawTag(10);
161207
output.WriteString(Name);
162208
}
209+
if (LongMessage.Length != 0) {
210+
output.WriteRawTag(18);
211+
output.WriteString(LongMessage);
212+
}
213+
if (RepeatCount != 0) {
214+
output.WriteRawTag(24);
215+
output.WriteInt32(RepeatCount);
216+
}
163217
if (_unknownFields != null) {
164218
_unknownFields.WriteTo(ref output);
165219
}
@@ -173,6 +227,12 @@ public int CalculateSize() {
173227
if (Name.Length != 0) {
174228
size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
175229
}
230+
if (LongMessage.Length != 0) {
231+
size += 1 + pb::CodedOutputStream.ComputeStringSize(LongMessage);
232+
}
233+
if (RepeatCount != 0) {
234+
size += 1 + pb::CodedOutputStream.ComputeInt32Size(RepeatCount);
235+
}
176236
if (_unknownFields != null) {
177237
size += _unknownFields.CalculateSize();
178238
}
@@ -188,6 +248,12 @@ public void MergeFrom(HelloRequest other) {
188248
if (other.Name.Length != 0) {
189249
Name = other.Name;
190250
}
251+
if (other.LongMessage.Length != 0) {
252+
LongMessage = other.LongMessage;
253+
}
254+
if (other.RepeatCount != 0) {
255+
RepeatCount = other.RepeatCount;
256+
}
191257
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
192258
}
193259

@@ -211,6 +277,14 @@ public void MergeFrom(pb::CodedInputStream input) {
211277
Name = input.ReadString();
212278
break;
213279
}
280+
case 18: {
281+
LongMessage = input.ReadString();
282+
break;
283+
}
284+
case 24: {
285+
RepeatCount = input.ReadInt32();
286+
break;
287+
}
214288
}
215289
}
216290
#endif
@@ -234,6 +308,14 @@ public void MergeFrom(pb::CodedInputStream input) {
234308
Name = input.ReadString();
235309
break;
236310
}
311+
case 18: {
312+
LongMessage = input.ReadString();
313+
break;
314+
}
315+
case 24: {
316+
RepeatCount = input.ReadInt32();
317+
break;
318+
}
237319
}
238320
}
239321
}
@@ -242,7 +324,7 @@ public void MergeFrom(pb::CodedInputStream input) {
242324
}
243325

244326
/// <summary>
245-
/// 응답 메시지
327+
/// Response message
246328
/// </summary>
247329
[global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
248330
public sealed partial class HelloResponse : pb::IMessage<HelloResponse>
@@ -280,6 +362,9 @@ public HelloResponse() {
280362
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
281363
public HelloResponse(HelloResponse other) : this() {
282364
greeting_ = other.greeting_;
365+
echoedMessage_ = other.echoedMessage_;
366+
processedAt_ = other.processedAt_;
367+
originalMessageSize_ = other.originalMessageSize_;
283368
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
284369
}
285370

@@ -301,6 +386,51 @@ public string Greeting {
301386
}
302387
}
303388

389+
/// <summary>Field number for the "echoedMessage" field.</summary>
390+
public const int EchoedMessageFieldNumber = 2;
391+
private string echoedMessage_ = "";
392+
/// <summary>
393+
/// Echo back the long message to test bidirectional chunking
394+
/// </summary>
395+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
396+
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
397+
public string EchoedMessage {
398+
get { return echoedMessage_; }
399+
set {
400+
echoedMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
401+
}
402+
}
403+
404+
/// <summary>Field number for the "processedAt" field.</summary>
405+
public const int ProcessedAtFieldNumber = 3;
406+
private string processedAt_ = "";
407+
/// <summary>
408+
/// Timestamp when the message was processed
409+
/// </summary>
410+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
411+
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
412+
public string ProcessedAt {
413+
get { return processedAt_; }
414+
set {
415+
processedAt_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
416+
}
417+
}
418+
419+
/// <summary>Field number for the "originalMessageSize" field.</summary>
420+
public const int OriginalMessageSizeFieldNumber = 4;
421+
private int originalMessageSize_;
422+
/// <summary>
423+
/// Size information for debugging
424+
/// </summary>
425+
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
426+
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
427+
public int OriginalMessageSize {
428+
get { return originalMessageSize_; }
429+
set {
430+
originalMessageSize_ = value;
431+
}
432+
}
433+
304434
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
305435
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
306436
public override bool Equals(object other) {
@@ -317,6 +447,9 @@ public bool Equals(HelloResponse other) {
317447
return true;
318448
}
319449
if (Greeting != other.Greeting) return false;
450+
if (EchoedMessage != other.EchoedMessage) return false;
451+
if (ProcessedAt != other.ProcessedAt) return false;
452+
if (OriginalMessageSize != other.OriginalMessageSize) return false;
320453
return Equals(_unknownFields, other._unknownFields);
321454
}
322455

@@ -325,6 +458,9 @@ public bool Equals(HelloResponse other) {
325458
public override int GetHashCode() {
326459
int hash = 1;
327460
if (Greeting.Length != 0) hash ^= Greeting.GetHashCode();
461+
if (EchoedMessage.Length != 0) hash ^= EchoedMessage.GetHashCode();
462+
if (ProcessedAt.Length != 0) hash ^= ProcessedAt.GetHashCode();
463+
if (OriginalMessageSize != 0) hash ^= OriginalMessageSize.GetHashCode();
328464
if (_unknownFields != null) {
329465
hash ^= _unknownFields.GetHashCode();
330466
}
@@ -347,6 +483,18 @@ public void WriteTo(pb::CodedOutputStream output) {
347483
output.WriteRawTag(10);
348484
output.WriteString(Greeting);
349485
}
486+
if (EchoedMessage.Length != 0) {
487+
output.WriteRawTag(18);
488+
output.WriteString(EchoedMessage);
489+
}
490+
if (ProcessedAt.Length != 0) {
491+
output.WriteRawTag(26);
492+
output.WriteString(ProcessedAt);
493+
}
494+
if (OriginalMessageSize != 0) {
495+
output.WriteRawTag(32);
496+
output.WriteInt32(OriginalMessageSize);
497+
}
350498
if (_unknownFields != null) {
351499
_unknownFields.WriteTo(output);
352500
}
@@ -361,6 +509,18 @@ public void WriteTo(pb::CodedOutputStream output) {
361509
output.WriteRawTag(10);
362510
output.WriteString(Greeting);
363511
}
512+
if (EchoedMessage.Length != 0) {
513+
output.WriteRawTag(18);
514+
output.WriteString(EchoedMessage);
515+
}
516+
if (ProcessedAt.Length != 0) {
517+
output.WriteRawTag(26);
518+
output.WriteString(ProcessedAt);
519+
}
520+
if (OriginalMessageSize != 0) {
521+
output.WriteRawTag(32);
522+
output.WriteInt32(OriginalMessageSize);
523+
}
364524
if (_unknownFields != null) {
365525
_unknownFields.WriteTo(ref output);
366526
}
@@ -374,6 +534,15 @@ public int CalculateSize() {
374534
if (Greeting.Length != 0) {
375535
size += 1 + pb::CodedOutputStream.ComputeStringSize(Greeting);
376536
}
537+
if (EchoedMessage.Length != 0) {
538+
size += 1 + pb::CodedOutputStream.ComputeStringSize(EchoedMessage);
539+
}
540+
if (ProcessedAt.Length != 0) {
541+
size += 1 + pb::CodedOutputStream.ComputeStringSize(ProcessedAt);
542+
}
543+
if (OriginalMessageSize != 0) {
544+
size += 1 + pb::CodedOutputStream.ComputeInt32Size(OriginalMessageSize);
545+
}
377546
if (_unknownFields != null) {
378547
size += _unknownFields.CalculateSize();
379548
}
@@ -389,6 +558,15 @@ public void MergeFrom(HelloResponse other) {
389558
if (other.Greeting.Length != 0) {
390559
Greeting = other.Greeting;
391560
}
561+
if (other.EchoedMessage.Length != 0) {
562+
EchoedMessage = other.EchoedMessage;
563+
}
564+
if (other.ProcessedAt.Length != 0) {
565+
ProcessedAt = other.ProcessedAt;
566+
}
567+
if (other.OriginalMessageSize != 0) {
568+
OriginalMessageSize = other.OriginalMessageSize;
569+
}
392570
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
393571
}
394572

@@ -412,6 +590,18 @@ public void MergeFrom(pb::CodedInputStream input) {
412590
Greeting = input.ReadString();
413591
break;
414592
}
593+
case 18: {
594+
EchoedMessage = input.ReadString();
595+
break;
596+
}
597+
case 26: {
598+
ProcessedAt = input.ReadString();
599+
break;
600+
}
601+
case 32: {
602+
OriginalMessageSize = input.ReadInt32();
603+
break;
604+
}
415605
}
416606
}
417607
#endif
@@ -435,6 +625,18 @@ public void MergeFrom(pb::CodedInputStream input) {
435625
Greeting = input.ReadString();
436626
break;
437627
}
628+
case 18: {
629+
EchoedMessage = input.ReadString();
630+
break;
631+
}
632+
case 26: {
633+
ProcessedAt = input.ReadString();
634+
break;
635+
}
636+
case 32: {
637+
OriginalMessageSize = input.ReadInt32();
638+
break;
639+
}
438640
}
439641
}
440642
}

0 commit comments

Comments
 (0)