From 2c4dce5ba768499d7db3e924d9c0ccfcb60e8844 Mon Sep 17 00:00:00 2001 From: Wouter van Oortmerssen Date: Wed, 4 Jan 2017 10:41:31 -0800 Subject: [PATCH] Re-applied reverted fix, adding missing codegen files. Change-Id: I301d29835fb0baffd859950eb0fb3056e4f4d66b --- samples/monster_generated.h | 2 +- src/idl_gen_cpp.cpp | 2 +- tests/MyGame/Example/MonsterStorage_grpc.go | 69 +++++++++++++------- tests/monster_test.grpc.fb.cc | 2 + tests/monster_test.grpc.fb.h | 1 - tests/monster_test_generated.h | 2 +- tests/monsterdata_python_wire.mon | Bin 288 -> 304 bytes 7 files changed, 50 insertions(+), 28 deletions(-) diff --git a/samples/monster_generated.h b/samples/monster_generated.h index cbd8ee685..11ab5eaf1 100644 --- a/samples/monster_generated.h +++ b/samples/monster_generated.h @@ -56,7 +56,7 @@ template<> struct EquipmentTraits { struct EquipmentUnion { Equipment type; - flatbuffers::NativeTable *table = nullptr; + flatbuffers::NativeTable *table; EquipmentUnion() : type(Equipment_NONE), table(nullptr) {} EquipmentUnion(const EquipmentUnion &); EquipmentUnion &operator=(const EquipmentUnion &); diff --git a/src/idl_gen_cpp.cpp b/src/idl_gen_cpp.cpp index 65f135507..41a8da1da 100644 --- a/src/idl_gen_cpp.cpp +++ b/src/idl_gen_cpp.cpp @@ -567,7 +567,7 @@ class CppGenerator : public BaseGenerator { // Generate a union type code += "struct " + enum_def.name + "Union {\n"; code += " " + enum_def.name + " type;\n\n"; - code += " flatbuffers::NativeTable *table = nullptr;\n"; + code += " flatbuffers::NativeTable *table;\n"; code += " " + enum_def.name + "Union() : type("; code += GetEnumValUse(enum_def, *enum_def.vals.Lookup("NONE")); code += "), table(nullptr) {}\n"; diff --git a/tests/MyGame/Example/MonsterStorage_grpc.go b/tests/MyGame/Example/MonsterStorage_grpc.go index 8aac5c28c..cc9a1ec44 100644 --- a/tests/MyGame/Example/MonsterStorage_grpc.go +++ b/tests/MyGame/Example/MonsterStorage_grpc.go @@ -16,7 +16,7 @@ type MonsterStorageClient interface{ Store(ctx context.Context, in *flatbuffers.Builder, opts... grpc.CallOption) (* Stat, error) Retrieve(ctx context.Context, in *flatbuffers.Builder, - opts... grpc.CallOption) (* Monster, error) + opts... grpc.CallOption) (MonsterStorage_RetrieveClient, error) } type monsterStorageClient struct { @@ -36,17 +36,34 @@ func (c *monsterStorageClient) Store(ctx context.Context, in *flatbuffers.Builde } func (c *monsterStorageClient) Retrieve(ctx context.Context, in *flatbuffers.Builder, - opts... grpc.CallOption) (* Monster, error) { - out := new(Monster) - err := grpc.Invoke(ctx, "/Example.MonsterStorage/Retrieve", in, out, c.cc, opts...) + opts... grpc.CallOption) (MonsterStorage_RetrieveClient, error) { + stream, err := grpc.NewClientStream(ctx, &_MonsterStorage_serviceDesc.Streams[0], c.cc, "/Example.MonsterStorage/Retrieve", opts...) if err != nil { return nil, err } - return out, nil + x := &monsterStorageRetrieveClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } + if err := x.ClientStream.CloseSend(); err != nil { return nil, err } + return x,nil +} + +type MonsterStorage_RetrieveClient interface { + Recv() (*Monster, error) + grpc.ClientStream +} + +type monsterStorageRetrieveClient struct{ + grpc.ClientStream +} + +func (x *monsterStorageRetrieveClient) Recv() (*Monster, error) { + m := new(Monster) + if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err } + return m, nil } // Server API for MonsterStorage service type MonsterStorageServer interface { Store(context.Context, *Monster) (*flatbuffers.Builder, error) - Retrieve(context.Context, *Stat) (*flatbuffers.Builder, error) + Retrieve(*Stat, MonsterStorage_RetrieveServer) error } func RegisterMonsterStorageServer(s *grpc.Server, srv MonsterStorageServer) { @@ -70,20 +87,23 @@ func _MonsterStorage_Store_Handler(srv interface{}, ctx context.Context, } -func _MonsterStorage_Retrieve_Handler(srv interface{}, ctx context.Context, - dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Stat) - if err := dec(in); err != nil { return nil, err } - if interceptor == nil { return srv.(MonsterStorageServer).Retrieve(ctx, in) } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/Example.MonsterStorage/Retrieve", - } - - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MonsterStorageServer).Retrieve(ctx, req.(* Stat)) - } - return interceptor(ctx, in, info, handler) +func _MonsterStorage_Retrieve_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(Stat) + if err := stream.RecvMsg(m); err != nil { return err } + return srv.(MonsterStorageServer).Retrieve(m, &monsterStorageRetrieveServer{stream}) +} + +type MonsterStorage_RetrieveServer interface { + Send(* flatbuffers.Builder) error + grpc.ServerStream +} + +type monsterStorageRetrieveServer struct { + grpc.ServerStream +} + +func (x *monsterStorageRetrieveServer) Send(m *flatbuffers.Builder) error { + return x.ServerStream.SendMsg(m) } @@ -95,12 +115,13 @@ var _MonsterStorage_serviceDesc = grpc.ServiceDesc{ MethodName: "Store", Handler: _MonsterStorage_Store_Handler, }, - { - MethodName: "Retrieve", - Handler: _MonsterStorage_Retrieve_Handler, - }, }, Streams: []grpc.StreamDesc{ + { + StreamName: "Retrieve", + Handler: _MonsterStorage_Retrieve_Handler, + ServerStreams: true, + }, }, } diff --git a/tests/monster_test.grpc.fb.cc b/tests/monster_test.grpc.fb.cc index 95f22fc2f..e3127f5d6 100644 --- a/tests/monster_test.grpc.fb.cc +++ b/tests/monster_test.grpc.fb.cc @@ -4,6 +4,7 @@ #include "monster_test_generated.h" #include "monster_test.grpc.fb.h" + #include #include #include @@ -12,6 +13,7 @@ #include #include #include + namespace MyGame { namespace Example { diff --git a/tests/monster_test.grpc.fb.h b/tests/monster_test.grpc.fb.h index 0bd3d8925..8228d7ad6 100644 --- a/tests/monster_test.grpc.fb.h +++ b/tests/monster_test.grpc.fb.h @@ -7,7 +7,6 @@ #include "monster_test_generated.h" #include "flatbuffers/grpc.h" - #include #include #include diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h index bbe4487bd..b5ae9f2f3 100644 --- a/tests/monster_test_generated.h +++ b/tests/monster_test_generated.h @@ -78,7 +78,7 @@ template<> struct AnyTraits { struct AnyUnion { Any type; - flatbuffers::NativeTable *table = nullptr; + flatbuffers::NativeTable *table; AnyUnion() : type(Any_NONE), table(nullptr) {} AnyUnion(const AnyUnion &); AnyUnion &operator=(const AnyUnion &); diff --git a/tests/monsterdata_python_wire.mon b/tests/monsterdata_python_wire.mon index 8cc54d795aeba99ee343d106fe92309e423e52f1..190f43a8c315ebfa6c43155f778f20016150fafd 100644 GIT binary patch delta 84 zcmZ3$w1G)9fB_xYF*r=*G@od|!f6MTvH@b3iJs=tOh85h5ElS3h%LvU!NA2J0%X}u OoNozK&S*FBraJ(eSPOLk delta 70 zcmdnMw1A1zfdK@p7+fZbnsZtKnGQhgF)`9y9!N7V0dWlw=RnzV3>pkv3?e|D)x_17 Kj8+q0x&r`6H3|O!