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
-~----------~----~----~----~------~----~------~--~---

Reply via email to