Hello again, I have another problem concerning repeated fields:
The same example as above, every client sends continuously a Player message to the server. The server continuously generates a Playerlist message taking the newest Player's and sends one to every client. The problem is, when I parse a Playerlist on the client side, and there are more than one Playerlists in the buffer (probably all from the same player) I get one Playerlist with multiple players in it. I now realized that ParseFrom.... does actually merge messages and repeated fields are appended. This is not desired in my case, I just need the last one. Is there a way to disable the appending of repeated fields when parsing a buffer or is my idea for distributing the players anyway a bad solution ? Regards, Rico On Sep 24, 7:04 pm, [EMAIL PROTECTED] wrote: > Hello Kenton, > > Thanks a lot! That is exactly what I was looking for! > > Regards, > Rico > > On 24 Sep., 18:56, "Kenton Varda" <[EMAIL PROTECTED]> wrote: > > > Playerlist also has methods: > > const RepeatedPtrField<Player>& player() const; > > RepeatedPtrField<Player>* mutable_player(); > > > RepeatedPtrField is documented here: > > >http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google... > > > It has methods which allow you to add an existing object without copying > > (look under "Advanced memory management). Of course, if you use these, then > > the Player objects will become property of the Playerlist. You will have to > > be careful to take ownership back from the list later by repeatedly calling > > ReleaseLast(). > > > Also note that every protocol message has a CopyFrom() method which can be > > used to copy an entire message object, so you would not have to call > > set_id(), set_x(), etc. manually. > > > On Wed, Sep 24, 2008 at 8:01 AM, <[EMAIL PROTECTED]> wrote: > > > > Hello, > > > > I have a question concerning the repeated fields. I'll start with an > > > example: > > > > message Player { > > > required int32 id = 1; > > > required int32 x =2; > > > required int32 y=3; > > > } > > > > message Playerlist{ > > > repeated Player player= 1; > > > } > > > > I have a server and get Player's from different clients and hold them > > > in a map (this map is updated all the time). After a certain time I > > > want to get all Players, create a Playerlist and send it to all > > > clients. The Playerlist however has just a method > > > > Player* add_player(); > > > > I will have to copy all the Player's I've already created : > > > > Player* newP = playerlist.add_player(); > > > newP->set_id( playerFromMap->id() ); > > > > Isn't there a better way to do this? > > > > Regards --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/protobuf?hl=en -~----------~----~----~----~------~----~------~--~---
