Exactly.  Basically I want to perform any "standard" validation on content 
across all fields of the message, not application level validation.  Since I 
have a number of complicated messages in my application, it would be somewhat 
tedious to write that code.  If the compiler can add it automatically, or if 
there was a way of iterating/introspecting the object to validate it, that 
would be great.

________________________________
From: Kenton Varda [mailto:ken...@google.com]
Sent: Thursday, July 09, 2009 5:34 PM
To: Rizzuto, Raymond
Cc: protobuf@googlegroups.com
Subject: Re: intermittent issue with encode (version 2.0.3)

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<mailto: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<mailto: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<mailto:ken...@google.com>]
Sent: Thursday, July 09, 2009 5:08 PM

To: Rizzuto, Raymond
Cc: protobuf@googlegroups.com<mailto: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<mailto: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<mailto:ken...@google.com>]
Sent: Thursday, July 09, 2009 5:02 PM
To: Rizzuto, Raymond
Cc: protobuf@googlegroups.com<mailto: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<mailto: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<mailto: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.



________________________________
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