Sorry, I think I misread your message. You just want there to me a method like IsInitialized() that you can call to validate UTF-8 stuff. I'll think about that.
On Thu, Jul 9, 2009 at 2:32 PM, Kenton Varda <ken...@google.com> wrote: > This is something you can do in your own code -- just call your validation > function before serializing. If this were to be a "feature" of protocol > buffers, then we'd have to store a pointer to your validator function > somewhere. Storing it in the message object itself would harm performance > and memory usage, but storing it in a static location (such that it applies > to all instances of the type) would bring all the myriad problems commonly > associated with singletons. So I don't think there's any reasonable way for > the protobuf system to provide this. > > > On Thu, Jul 9, 2009 at 2:14 PM, Rizzuto, Raymond > <raymond.rizz...@sig.com>wrote: > >> I’m going to try that. Since another group builds and packages the >> libraries I use, it’ll take a bit to make a private copy with that change. >> >> >> >> As an enhancement request, I wish there was a function I could call to >> validate the message content before serialize, that would tell me about any >> fields of the message that are in error. I.e. so I could catch that issue >> similarly to catching uninitialized fields: >> >> >> >> if (!m.IsInitialized()) >> >> { >> >> std::string error = name + " is missing fields: "; >> >> std::vector<std::string> errors; >> >> m.FindInitializationErrors(&errors); >> >> std::vector<std::string>::const_iterator it; >> >> for(it = errors.begin(); it!= errors.end(); ++it) >> >> { >> >> if (it != errors.begin()) >> >> error += ", "; >> >> error += *it; >> >> } >> >> throw SPException(error.c_str()); >> >> } >> >> >> >> It might not be something I’d do in production, but it sure would help >> during development. >> >> >> ------------------------------ >> >> *From:* Kenton Varda [mailto:ken...@google.com] >> *Sent:* Thursday, July 09, 2009 5:08 PM >> >> *To:* Rizzuto, Raymond >> *Cc:* protobuf@googlegroups.com >> *Subject:* Re: intermittent issue with encode (version 2.0.3) >> >> >> >> I suppose you could also temporarily edit the header file. >> >> On Thu, Jul 9, 2009 at 2:05 PM, Rizzuto, Raymond <raymond.rizz...@sig.com> >> wrote: >> >> I’m trying to, without success. Breakpoints in header files, at least >> with the version of tools I have, don’t work very well. >> >> >> ------------------------------ >> >> *From:* Kenton Varda [mailto:ken...@google.com] >> *Sent:* Thursday, July 09, 2009 5:02 PM >> *To:* Rizzuto, Raymond >> *Cc:* protobuf@googlegroups.com >> *Subject:* Re: intermittent issue with encode (version 2.0.3) >> >> >> >> Run in a debugger and set a breakpoint at wire_format_inl.h:289. >> >> On Thu, Jul 9, 2009 at 1:56 PM, Rizzuto, Raymond <raymond.rizz...@sig.com> >> wrote: >> >> I think I have an error in my code (C++) that only occurs when I have >> multiple threads, and a lot of message volume. Even then, I can run the >> same test many times, but only get a failure on some runs. With 7 threads >> running on a 4 core machine, and generating 480384 google protocol buffer >> messages, I get 33 errors like this to stdout: >> >> >> >> libprotobuf ERROR >> /siglinux/tc/sles9sp4_gcc-3.3.3_i686/sig1/protobuf-2.0.3/include/google/protobuf/wire_format_inl.h:289] >> Encountered string containing invalid UTF-8 data while serializing protocol >> buffer. Strings must contain only UTF-8; use the 'bytes' type for raw bytes. >> >> >> >> I believe that the data is in error since I get similar errors decoding >> the messages: >> >> >> >> libprotobuf ERROR >> /siglinux/tc/sles9sp4_gcc-3.3.3_i686/sig1/protobuf-2.0.3/include/google/protobuf/wire_format_inl.h:138] >> Encountered string containing invalid UTF-8 data while parsing protocol >> buffer. Strings must contain only UTF-8; use the 'bytes' type for raw bytes. >> >> >> >> Is there any way that I can check for this at run time so that I can print >> out more context? I do call IsInitialized before serializing, but that >> doesn’t check for this case. >> >> >> >> I am running on SLES9SP4, using gcc 3.3.3 as the compiler. >> >> >> >> Ray >> >> >> ------------------------------ >> >> Ray Rizzuto >> >> raymond.rizz...@sig.com >> >> Susquehanna International Group >> >> (610)747-2336 (W) >> >> (215)776-3780 (C) >> >> >> >> >> >> >> ------------------------------ >> >> IMPORTANT: The information contained in this email and/or its attachments >> is confidential. If you are not the intended recipient, please notify the >> sender immediately by reply and immediately delete this message and all its >> attachments. Any review, use, reproduction, disclosure or dissemination of >> this message or any attachment by an unintended recipient is strictly >> prohibited. Neither this message nor any attachment is intended as or should >> be construed as an offer, solicitation or recommendation to buy or sell any >> security or other financial instrument. Neither the sender, his or her >> employer nor any of their respective affiliates makes any warranties as to >> the completeness or accuracy of any of the information contained herein or >> that this message or any of its attachments is free of viruses. >> >> >> >> >> >> >> >> >> ------------------------------ >> >> IMPORTANT: The information contained in this email and/or its attachments >> is confidential. If you are not the intended recipient, please notify the >> sender immediately by reply and immediately delete this message and all its >> attachments. Any review, use, reproduction, disclosure or dissemination of >> this message or any attachment by an unintended recipient is strictly >> prohibited. Neither this message nor any attachment is intended as or should >> be construed as an offer, solicitation or recommendation to buy or sell any >> security or other financial instrument. Neither the sender, his or her >> employer nor any of their respective affiliates makes any warranties as to >> the completeness or accuracy of any of the information contained herein or >> that this message or any of its attachments is free of viruses. >> >> >> >> ------------------------------ >> IMPORTANT: The information contained in this email and/or its attachments >> is confidential. If you are not the intended recipient, please notify the >> sender immediately by reply and immediately delete this message and all its >> attachments. Any review, use, reproduction, disclosure or dissemination of >> this message or any attachment by an unintended recipient is strictly >> prohibited. Neither this message nor any attachment is intended as or should >> be construed as an offer, solicitation or recommendation to buy or sell any >> security or other financial instrument. Neither the sender, his or her >> employer nor any of their respective affiliates makes any warranties as to >> the completeness or accuracy of any of the information contained herein or >> that this message or any of its attachments is free of viruses. >> > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to protobuf@googlegroups.com To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/protobuf?hl=en -~----------~----~----~----~------~----~------~--~---