Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
P
protobuf
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
protobuf
Commits
ad6903fe
Commit
ad6903fe
authored
Aug 19, 2008
by
Jon Skeet
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix to constructor access for nested types, and first pass at streaming.
parent
f09fed21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
273 additions
and
40 deletions
+273
-40
CodedOutputStreamTest.cs
csharp/ProtocolBuffers.Test/CodedOutputStreamTest.cs
+2
-6
MessageStreamIteratorTest.cs
csharp/ProtocolBuffers.Test/MessageStreamIteratorTest.cs
+23
-0
MessageStreamWriterTest.cs
csharp/ProtocolBuffers.Test/MessageStreamWriterTest.cs
+36
-0
ProtocolBuffers.Test.csproj
csharp/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
+5
-1
MessageWithNoOuter.cs
csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs
+2
-2
UnitTestEmbedOptimizeForProtoFile.cs
...fers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs
+1
-1
UnitTestImportProtoFile.cs
...rotocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs
+1
-1
UnitTestMessageSetProtoFile.cs
...colBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs
+6
-6
UnitTestOptimizeForProtoFile.cs
...olBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs
+1
-1
UnitTestProtoFile.cs
csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs
+0
-0
TestUtil.cs
csharp/ProtocolBuffers.Test/TestUtil.cs
+0
-0
Delegates.cs
csharp/ProtocolBuffers/Delegates.cs
+8
-0
DescriptorProtoFile.cs
...p/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
+16
-16
RepeatedMessageAccessor.cs
...rp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs
+1
-1
SingleMessageAccessor.cs
csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs
+2
-2
InvalidProtocolBufferException.cs
csharp/ProtocolBuffers/InvalidProtocolBufferException.cs
+5
-0
MessageStreamIterator.cs
csharp/ProtocolBuffers/MessageStreamIterator.cs
+124
-0
MessageStreamWriter.cs
csharp/ProtocolBuffers/MessageStreamWriter.cs
+33
-0
ProtocolBuffers.csproj
csharp/ProtocolBuffers/ProtocolBuffers.csproj
+4
-1
csharp_message.cc
src/google/protobuf/compiler/csharp/csharp_message.cc
+3
-2
No files found.
csharp/ProtocolBuffers.Test/CodedOutputStreamTest.cs
View file @
ad6903fe
...
...
@@ -21,10 +21,6 @@ namespace Google.ProtocolBuffers {
[
TestFixture
]
public
class
CodedOutputStreamTest
{
private
static
void
AssertEqualBytes
(
byte
[]
a
,
byte
[]
b
)
{
Assert
.
AreEqual
(
ByteString
.
CopyFrom
(
a
),
ByteString
.
CopyFrom
(
b
));
}
/// <summary>
/// Writes the given value using WriteRawVarint32() and WriteRawVarint64() and
/// checks that the result matches the given bytes
...
...
@@ -171,7 +167,7 @@ namespace Google.ProtocolBuffers {
TestAllTypes
message
=
TestUtil
.
GetAllSet
();
byte
[]
rawBytes
=
message
.
ToByteArray
();
AssertEqualBytes
(
TestUtil
.
GoldenMessage
.
ToByteArray
(),
rawBytes
);
TestUtil
.
AssertEqualBytes
(
TestUtil
.
GoldenMessage
.
ToByteArray
(),
rawBytes
);
// Try different block sizes.
for
(
int
blockSize
=
1
;
blockSize
<
256
;
blockSize
*=
2
)
{
...
...
@@ -180,7 +176,7 @@ namespace Google.ProtocolBuffers {
CodedOutputStream
.
CreateInstance
(
rawOutput
,
blockSize
);
message
.
WriteTo
(
output
);
output
.
Flush
();
AssertEqualBytes
(
rawBytes
,
rawOutput
.
ToArray
());
TestUtil
.
AssertEqualBytes
(
rawBytes
,
rawOutput
.
ToArray
());
}
}
...
...
csharp/ProtocolBuffers.Test/MessageStreamIteratorTest.cs
0 → 100644
View file @
ad6903fe
using
System.Collections
;
using
System.Collections.Generic
;
using
System.IO
;
using
NUnit.Framework
;
using
NestedMessage
=
Google
.
ProtocolBuffers
.
TestProtos
.
TestAllTypes
.
Types
.
NestedMessage
;
namespace
Google.ProtocolBuffers
{
[
TestFixture
]
public
class
MessageStreamIteratorTest
{
[
Test
]
public
void
ThreeMessagesInMemory
()
{
MemoryStream
stream
=
new
MemoryStream
(
MessageStreamWriterTest
.
ThreeMessageData
);
IEnumerable
<
NestedMessage
>
iterator
=
MessageStreamIterator
.
FromStreamProvider
<
NestedMessage
>(()
=>
stream
);
List
<
NestedMessage
>
messages
=
new
List
<
NestedMessage
>(
iterator
);
Assert
.
AreEqual
(
3
,
messages
.
Count
);
Assert
.
AreEqual
(
5
,
messages
[
0
].
Bb
);
Assert
.
AreEqual
(
1500
,
messages
[
1
].
Bb
);
Assert
.
IsFalse
(
messages
[
2
].
HasBb
);
}
}
}
csharp/ProtocolBuffers.Test/MessageStreamWriterTest.cs
0 → 100644
View file @
ad6903fe
using
System.IO
;
using
NUnit.Framework
;
using
NestedMessage
=
Google
.
ProtocolBuffers
.
TestProtos
.
TestAllTypes
.
Types
.
NestedMessage
;
namespace
Google.ProtocolBuffers
{
[
TestFixture
]
public
class
MessageStreamWriterTest
{
internal
static
readonly
byte
[]
ThreeMessageData
=
new
byte
[]
{
(
1
<<
3
)
|
2
,
2
,
// Field 1, 2 bytes long (first message)
(
1
<<
3
)
|
0
,
5
,
// Field 1, value 5
(
1
<<
3
)
|
2
,
3
,
// Field 1, 3 bytes long (second message)
(
1
<<
3
)
|
0
,
(
1500
&
0x7f
)
|
0x80
,
1500
>>
7
,
// Field 1, value 1500
(
1
<<
3
)
|
2
,
0
,
// Field 1, no data (third message)
};
[
Test
]
public
void
ThreeMessages
()
{
NestedMessage
message1
=
new
NestedMessage
.
Builder
{
Bb
=
5
}.
Build
();
NestedMessage
message2
=
new
NestedMessage
.
Builder
{
Bb
=
1500
}.
Build
();
NestedMessage
message3
=
new
NestedMessage
.
Builder
().
Build
();
byte
[]
data
;
using
(
MemoryStream
stream
=
new
MemoryStream
())
{
MessageStreamWriter
<
NestedMessage
>
writer
=
new
MessageStreamWriter
<
NestedMessage
>(
stream
);
writer
.
Write
(
message1
);
writer
.
Write
(
message2
);
writer
.
Write
(
message3
);
writer
.
Flush
();
data
=
stream
.
ToArray
();
}
TestUtil
.
AssertEqualBytes
(
ThreeMessageData
,
data
);
}
}
}
csharp/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
View file @
ad6903fe
...
...
@@ -3,7 +3,7 @@
<PropertyGroup>
<Configuration
Condition=
" '$(Configuration)' == '' "
>
Debug
</Configuration>
<Platform
Condition=
" '$(Platform)' == '' "
>
AnyCPU
</Platform>
<ProductVersion>
9.0.
21022
</ProductVersion>
<ProductVersion>
9.0.
30729
</ProductVersion>
<SchemaVersion>
2.0
</SchemaVersion>
<ProjectGuid>
{DD01ED24-3750-4567-9A23-1DB676A15610}
</ProjectGuid>
<OutputType>
Library
</OutputType>
...
...
@@ -42,6 +42,8 @@
<HintPath>
lib\Rhino.Mocks.dll
</HintPath>
</Reference>
<Reference
Include=
"System"
/>
<Reference
Include=
"System.Data"
/>
<Reference
Include=
"System.Xml"
/>
</ItemGroup>
<ItemGroup>
<Compile
Include=
"AbstractMessageTest.cs"
/>
...
...
@@ -51,6 +53,8 @@
<Compile
Include=
"DescriptorsTest.cs"
/>
<Compile
Include=
"DynamicMessageTest.cs"
/>
<Compile
Include=
"GeneratedMessageTest.cs"
/>
<Compile
Include=
"MessageStreamIteratorTest.cs"
/>
<Compile
Include=
"MessageStreamWriterTest.cs"
/>
<Compile
Include=
"MessageTest.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
<Compile
Include=
"ReflectionTester.cs"
/>
...
...
csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs
View file @
ad6903fe
...
...
@@ -112,7 +112,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.MessageWithNoOuter.Types.NestedMessage.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
MessageWithNoOuter
.
Types
.
NestedMessage
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
MessageWithNoOuter
.
Types
.
NestedMessage
();
...
...
@@ -252,7 +252,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.MessageWithNoOuter.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
MessageWithNoOuter
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
MessageWithNoOuter
();
...
...
csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs
View file @
ad6903fe
...
...
@@ -185,7 +185,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestEmbedOptimizedForSize
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestEmbedOptimizedForSize
();
...
...
csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs
View file @
ad6903fe
...
...
@@ -161,7 +161,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.ImportMessage.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
ImportMessage
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
ImportMessage
();
...
...
csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs
View file @
ad6903fe
...
...
@@ -189,7 +189,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.TestMessageSet.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSet
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSet
();
...
...
@@ -373,7 +373,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSetContainer
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSetContainer
();
...
...
@@ -608,7 +608,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSetExtension1
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSetExtension1
();
...
...
@@ -822,7 +822,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSetExtension2
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestMessageSetExtension2
();
...
...
@@ -1071,7 +1071,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
RawMessageSet
.
Types
.
Item
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
RawMessageSet
.
Types
.
Item
();
...
...
@@ -1290,7 +1290,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.RawMessageSet.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
RawMessageSet
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
RawMessageSet
();
...
...
csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs
View file @
ad6903fe
...
...
@@ -148,7 +148,7 @@ namespace Google.ProtocolBuffers.TestProtos {
}
// Construct using global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestOptimizedForSize
result
=
new
global
::
Google
.
ProtocolBuffers
.
TestProtos
.
TestOptimizedForSize
();
...
...
csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs
View file @
ad6903fe
This diff is collapsed.
Click to expand it.
csharp/ProtocolBuffers.Test/TestUtil.cs
View file @
ad6903fe
This diff is collapsed.
Click to expand it.
csharp/ProtocolBuffers/Delegates.cs
0 → 100644
View file @
ad6903fe
using
System.IO
;
namespace
Google.ProtocolBuffers
{
/// <summary>
/// Delegate to return a stream when asked, used by MessageStreamIterator.
/// </summary>
public
delegate
Stream
StreamProvider
();
}
csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
View file @
ad6903fe
...
...
@@ -363,7 +363,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorSet.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FileDescriptorSet
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FileDescriptorSet
();
...
...
@@ -726,7 +726,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FileDescriptorProto
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FileDescriptorProto
();
...
...
@@ -1326,7 +1326,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
DescriptorProto
.
Types
.
ExtensionRange
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
DescriptorProto
.
Types
.
ExtensionRange
();
...
...
@@ -1646,7 +1646,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
DescriptorProto
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
DescriptorProto
();
...
...
@@ -2337,7 +2337,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FieldDescriptorProto
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FieldDescriptorProto
();
...
...
@@ -2791,7 +2791,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumDescriptorProto
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumDescriptorProto
();
...
...
@@ -3136,7 +3136,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumValueDescriptorProto
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumValueDescriptorProto
();
...
...
@@ -3450,7 +3450,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
ServiceDescriptorProto
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
ServiceDescriptorProto
();
...
...
@@ -3811,7 +3811,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
MethodDescriptorProto
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
MethodDescriptorProto
();
...
...
@@ -4254,7 +4254,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FileOptions
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FileOptions
();
...
...
@@ -4674,7 +4674,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
MessageOptions
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
MessageOptions
();
...
...
@@ -4906,7 +4906,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FieldOptions
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
FieldOptions
();
...
...
@@ -5128,7 +5128,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumOptions
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumOptions
();
...
...
@@ -5293,7 +5293,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumValueOptions
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
EnumValueOptions
();
...
...
@@ -5458,7 +5458,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
ServiceOptions
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
ServiceOptions
();
...
...
@@ -5623,7 +5623,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
}
// Construct using global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.CreateBuilder()
internal
Builder
()
{}
public
Builder
()
{}
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
MethodOptions
result
=
new
global
::
Google
.
ProtocolBuffers
.
DescriptorProtos
.
MethodOptions
();
...
...
csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs
View file @
ad6903fe
...
...
@@ -36,7 +36,7 @@ namespace Google.ProtocolBuffers.FieldAccess {
private
readonly
Func
<
IBuilder
>
createBuilderDelegate
;
internal
RepeatedMessageAccessor
(
string
name
)
:
base
(
name
)
{
MethodInfo
createBuilderMethod
=
ClrType
.
GetMethod
(
"CreateBuilder"
,
new
Type
[
0
]
);
MethodInfo
createBuilderMethod
=
ClrType
.
GetMethod
(
"CreateBuilder"
,
Type
.
EmptyTypes
);
if
(
createBuilderMethod
==
null
)
{
throw
new
ArgumentException
(
"No public static CreateBuilder method declared in "
+
ClrType
.
Name
);
}
...
...
csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs
View file @
ad6903fe
...
...
@@ -31,8 +31,8 @@ namespace Google.ProtocolBuffers.FieldAccess {
/// </summary>
private
readonly
Func
<
IBuilder
>
createBuilderDelegate
;
internal
SingleMessageAccessor
(
string
name
)
:
base
(
name
)
{
MethodInfo
createBuilderMethod
=
ClrType
.
GetMethod
(
"CreateBuilder"
,
new
Type
[
0
]
);
internal
SingleMessageAccessor
(
string
name
)
:
base
(
name
)
{
MethodInfo
createBuilderMethod
=
ClrType
.
GetMethod
(
"CreateBuilder"
,
Type
.
EmptyTypes
);
if
(
createBuilderMethod
==
null
)
{
throw
new
ArgumentException
(
"No public static CreateBuilder method declared in "
+
ClrType
.
Name
);
}
...
...
csharp/ProtocolBuffers/InvalidProtocolBufferException.cs
View file @
ad6903fe
...
...
@@ -71,5 +71,10 @@ namespace Google.ProtocolBuffers {
"Protocol message was too large. May be malicious. "
+
"Use CodedInputStream.SetSizeLimit() to increase the size limit."
);
}
internal
static
InvalidProtocolBufferException
InvalidMessageStreamTag
()
{
return
new
InvalidProtocolBufferException
(
"Stream of protocol messages had invalid tag. Expected tag is length-delimited field 1."
);
}
}
}
csharp/ProtocolBuffers/MessageStreamIterator.cs
0 → 100644
View file @
ad6903fe
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Collections
;
using
System.IO
;
using
System.Reflection
;
namespace
Google.ProtocolBuffers
{
/// <summary>
/// Helper class to create MessageStreamIterators without explicitly specifying
/// the builder type. The concrete builder type is determined by reflection, based
/// on the message type. The reflection step looks for a <c>CreateBuilder</c> method
/// in the message type which is public and static, and uses the return type of that
/// method as the builder type. This will work for all generated messages, whether
/// optimised for size or speed. It won't work for dynamic messages.
///
/// TODO(jonskeet): This also won't work for non-public protos :(
/// Pass in delegate to create a builder?
/// </summary>
public
static
class
MessageStreamIterator
{
public
static
IEnumerable
<
TMessage
>
FromFile
<
TMessage
>(
string
file
)
where
TMessage
:
IMessage
<
TMessage
>
{
return
FromStreamProvider
<
TMessage
>(()
=>
File
.
OpenRead
(
file
));
}
public
static
IEnumerable
<
TMessage
>
FromStreamProvider
<
TMessage
>(
StreamProvider
streamProvider
)
where
TMessage
:
IMessage
<
TMessage
>
{
MethodInfo
createBuilderMethod
=
typeof
(
TMessage
).
GetMethod
(
"CreateBuilder"
,
Type
.
EmptyTypes
);
if
(
createBuilderMethod
==
null
)
{
throw
new
ArgumentException
(
"Message type "
+
typeof
(
TMessage
).
FullName
+
" has no CreateBuilder method."
);
}
if
(
createBuilderMethod
.
ReturnType
==
typeof
(
void
))
{
throw
new
ArgumentException
(
"CreateBuilder method in "
+
typeof
(
TMessage
).
FullName
+
" has void return type"
);
}
Type
builderType
=
createBuilderMethod
.
ReturnType
;
if
(
builderType
.
GetConstructor
(
Type
.
EmptyTypes
)
==
null
)
{
throw
new
ArgumentException
(
"Builder type "
+
builderType
.
FullName
+
" has no public parameterless constructor."
);
}
Type
messageInterface
=
typeof
(
IMessage
<,>).
MakeGenericType
(
typeof
(
TMessage
),
builderType
);
Type
builderInterface
=
typeof
(
IBuilder
<,>).
MakeGenericType
(
typeof
(
TMessage
),
builderType
);
if
(
Array
.
IndexOf
(
typeof
(
TMessage
).
GetInterfaces
(),
messageInterface
)
==
-
1
)
{
throw
new
ArgumentException
(
"Message type "
+
typeof
(
TMessage
)
+
" doesn't implement "
+
messageInterface
.
FullName
);
}
if
(
Array
.
IndexOf
(
builderType
.
GetInterfaces
(),
builderInterface
)
==
-
1
)
{
throw
new
ArgumentException
(
"Builder type "
+
typeof
(
TMessage
)
+
" doesn't implement "
+
builderInterface
.
FullName
);
}
Type
iteratorType
=
typeof
(
MessageStreamIterator
<,>).
MakeGenericType
(
typeof
(
TMessage
),
builderType
);
MethodInfo
factoryMethod
=
iteratorType
.
GetMethod
(
"FromStreamProvider"
,
new
Type
[]
{
typeof
(
StreamProvider
)
});
return
(
IEnumerable
<
TMessage
>)
factoryMethod
.
Invoke
(
null
,
new
object
[]
{
streamProvider
});
}
}
/// <summary>
/// Iterates over data created using a <see cref="MessageStreamWriter{T}" />.
/// Unlike MessageStreamWriter, this class is not usually constructed directly with
/// a stream; instead it is provided with a way of opening a stream when iteration
/// is started. The stream is closed when the iteration is completed or the enumerator
/// is disposed. (This occurs naturally when using <c>foreach</c>.)
/// This type is generic in both the message type and the builder type; if only the
/// iteration is required (i.e. just <see cref="IEnumerable{T}" />) then the static
/// generic methods in the nongeneric class are more appropriate.
/// </summary>
public
sealed
class
MessageStreamIterator
<
TMessage
,
TBuilder
>
:
IEnumerable
<
TMessage
>
where
TMessage
:
IMessage
<
TMessage
,
TBuilder
>
where
TBuilder
:
IBuilder
<
TMessage
,
TBuilder
>,
new
()
{
private
readonly
StreamProvider
streamProvider
;
private
readonly
ExtensionRegistry
extensionRegistry
;
private
static
readonly
uint
ExpectedTag
=
WireFormat
.
MakeTag
(
1
,
WireFormat
.
WireType
.
LengthDelimited
);
private
MessageStreamIterator
(
StreamProvider
streamProvider
,
ExtensionRegistry
extensionRegistry
)
{
this
.
streamProvider
=
streamProvider
;
this
.
extensionRegistry
=
extensionRegistry
;
}
/// <summary>
/// Creates an instance which opens the specified file when it begins
/// iterating. No extension registry is used when reading messages.
/// </summary>
public
static
MessageStreamIterator
<
TMessage
,
TBuilder
>
FromFile
(
string
file
)
{
return
new
MessageStreamIterator
<
TMessage
,
TBuilder
>(()
=>
File
.
OpenRead
(
file
),
ExtensionRegistry
.
Empty
);
}
/// <summary>
/// Creates an instance which calls the given delegate when it begins
/// iterating. No extension registry is used when reading messages.
/// </summary>
public
static
MessageStreamIterator
<
TMessage
,
TBuilder
>
FromStreamProvider
(
StreamProvider
streamProvider
)
{
return
new
MessageStreamIterator
<
TMessage
,
TBuilder
>(
streamProvider
,
ExtensionRegistry
.
Empty
);
}
/// <summary>
/// Creates a new instance which uses the same stream provider as this one,
/// but the specified extension registry.
/// </summary>
public
MessageStreamIterator
<
TMessage
,
TBuilder
>
WithExtensionRegistry
(
ExtensionRegistry
newRegistry
)
{
return
new
MessageStreamIterator
<
TMessage
,
TBuilder
>(
streamProvider
,
newRegistry
);
}
public
IEnumerator
<
TMessage
>
GetEnumerator
()
{
using
(
Stream
stream
=
streamProvider
())
{
CodedInputStream
input
=
CodedInputStream
.
CreateInstance
(
stream
);
uint
tag
;
while
((
tag
=
input
.
ReadTag
())
!=
0
)
{
if
(
tag
!=
ExpectedTag
)
{
throw
InvalidProtocolBufferException
.
InvalidMessageStreamTag
();
}
TBuilder
builder
=
new
TBuilder
();
input
.
ReadMessage
(
builder
,
extensionRegistry
);
yield
return
builder
.
Build
();
}
}
}
/// <summary>
/// Explicit implementation of nongeneric IEnumerable interface.
/// </summary>
IEnumerator
IEnumerable
.
GetEnumerator
()
{
return
GetEnumerator
();
}
}
}
csharp/ProtocolBuffers/MessageStreamWriter.cs
0 → 100644
View file @
ad6903fe
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.IO
;
namespace
Google.ProtocolBuffers
{
/// <summary>
/// Writes multiple messages to the same stream. Each message is written
/// as if it were an element of a repeated field 1 in a larger protocol buffer.
/// This class takes no ownership of the stream it is given; it never closes the
/// stream.
/// </summary>
public
sealed
class
MessageStreamWriter
<
T
>
where
T
:
IMessage
<
T
>
{
private
readonly
CodedOutputStream
codedOutput
;
/// <summary>
/// Creates an instance which writes to the given stream.
/// </summary>
/// <param name="output">Stream to write messages to.</param>
public
MessageStreamWriter
(
Stream
output
)
{
codedOutput
=
CodedOutputStream
.
CreateInstance
(
output
);
}
public
void
Write
(
T
message
)
{
codedOutput
.
WriteMessage
(
1
,
message
);
}
public
void
Flush
()
{
codedOutput
.
Flush
();
}
}
}
csharp/ProtocolBuffers/ProtocolBuffers.csproj
View file @
ad6903fe
...
...
@@ -3,7 +3,7 @@
<PropertyGroup>
<Configuration
Condition=
" '$(Configuration)' == '' "
>
Debug
</Configuration>
<Platform
Condition=
" '$(Platform)' == '' "
>
AnyCPU
</Platform>
<ProductVersion>
9.0.
21022
</ProductVersion>
<ProductVersion>
9.0.
30729
</ProductVersion>
<SchemaVersion>
2.0
</SchemaVersion>
<ProjectGuid>
{6908BDCE-D925-43F3-94AC-A531E6DF2591}
</ProjectGuid>
<OutputType>
Library
</OutputType>
...
...
@@ -41,6 +41,7 @@
<Compile
Include=
"AbstractBuilder.cs"
/>
<Compile
Include=
"AbstractMessage.cs"
/>
<Compile
Include=
"ByteString.cs"
/>
<Compile
Include=
"Delegates.cs"
/>
<Compile
Include=
"CodedInputStream.cs"
/>
<Compile
Include=
"CodedOutputStream.cs"
/>
<Compile
Include=
"Collections\Dictionaries.cs"
/>
...
...
@@ -93,6 +94,8 @@
<Compile
Include=
"IRpcChannel.cs"
/>
<Compile
Include=
"IRpcController.cs"
/>
<Compile
Include=
"IService.cs"
/>
<Compile
Include=
"MessageStreamIterator.cs"
/>
<Compile
Include=
"MessageStreamWriter.cs"
/>
<Compile
Include=
"Properties\AssemblyInfo.cs"
/>
<Compile
Include=
"RpcUtil.cs"
/>
<Compile
Include=
"TextFormat.cs"
/>
...
...
src/google/protobuf/compiler/csharp/csharp_message.cc
View file @
ad6903fe
...
...
@@ -481,7 +481,7 @@ void MessageGenerator::GenerateBuilder(io::Printer* printer) {
void
MessageGenerator
::
GenerateCommonBuilderMethods
(
io
::
Printer
*
printer
)
{
printer
->
Print
(
"// Construct using $classname$.CreateBuilder()
\r\n
"
"
internal
Builder() {}
\r\n
"
"
$access$
Builder() {}
\r\n
"
"
\r\n
"
"$classname$ result = new $classname$();
\r\n
"
"
\r\n
"
...
...
@@ -506,7 +506,8 @@ void MessageGenerator::GenerateCommonBuilderMethods(io::Printer* printer) {
" get { return $classname$.DefaultInstance; }
\r\n
"
"}
\r\n
"
"
\r\n
"
,
"classname"
,
ClassName
(
descriptor_
));
"classname"
,
ClassName
(
descriptor_
),
"access"
,
ClassAccessLevel
(
descriptor_
->
file
()));
// -----------------------------------------------------------------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment