Hi there,
Consider the following code:
std::string sOut;
StringSource("This is some string", true,
new MyFilter(
new StringSink(sOut)
)
);
With the following class:
class MyFilter : public Bufferless< Filter >
{
public:
MyFilter(BufferedTransformation* attachment)
{ Detach(attachment); Init(); }
void Init()
{
StringSource( "Header #1", true, AttachedTransformation() );
StringSource( "Header #2", true, AttachedTransformation() );
}
size_t Put2(const byte *input, size_t length, int messageEnd, bool
blocking)
{ return AttachedTransformation()->Put2(input, length,
messageEnd, blocking); }
};
I was planning on placing two prefix headers into the attached output
upon Init().
The output should look like this:
"Header #1Header #2This is some string"
However, the result is a painful crash..
The first StringSource line will DELETE AttachedTransformation() upon
StringSource's destructor...
Note: this is an extremely simplified version of what I was dealing
with for many many hours.
So I'm wondering how can that be accomplished?
How can I pass initial data onto to the output stream and survive the
crash?
Well, I actually have a solution.
class NoDeleteSink : public CryptoPP::Bufferless< CryptoPP::Sink >
{
BufferedTransformation* m_attachment;
public:
NoDeleteSink(BufferedTransformation* attachment)
: m_attachment( attachment ) {} // Not calling Detach()
size_t Put2(const byte *input, size_t length, int messageEnd, bool
blocking)
{
return m_attachment->Put2(input, length, messageEnd,
blocking);
}
};
And replace the relevant lines with:
StringSource( "Header #1", true,
new NoDeleteSink( AttachedTransformation() ) );
StringSource( "Header #2", true,
new NoDeleteSink( AttachedTransformation() ) );
The question left to ask is if there's a Crypto++ build-in solution
for this issue?
Thanks,
Avi.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the "Crypto++ Users"
Google Group.
To unsubscribe, send an email to [email protected].
More information about Crypto++ and this group is available at
http://www.cryptopp.com.
-~----------~----~----~----~------~----~------~--~---