syegres / quickfast Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/quickfast
Automatically exported from code.google.com/p/quickfast
What steps will reproduce the problem?
1. Download Windows source package
2. Run Setup.cmd
3. Run m.cmd
What is the expected output? What do you see instead?
Expecting *.sln file, instead get error. *.pl files require perl!
This should be added to the "Getting Started" docs.
Original issue reported on code.google.com by [email protected]
on 27 Apr 2010 at 2:45
What steps will reproduce the problem?
1.create message based on template and explicitly add only mandatory
fields from template
2.decode message and observe optional fields with null values
3. I use heartbeat template
What is the expected output? What do you see instead?
expected output only fields I added.
Resulting output is optional fields with null values
What version of the product are you using (svn Rev # or download package
version #)? On what operating system?
the latest version as of 02/01/2009
OS RedHat Linux
Linux wbeqdosr02 2.6.18-92.el5 #1 SMP Tue Apr 29 13:16:15 EDT 2008 x86_64
x86_64 x86_64 GNU/Linux
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 1 Feb 2010 at 5:13
Attachments:
1. Don't build QuickFAST.
2. I follow http://code.google.com/p/quickfast/wiki/GettingStarted
3. Also I have been forced to create folders lib and include for xerces-c-
3.0.1 and a folder lib for boost_1_36_0
and have error:
C:\PROJECTS\quickfast-read-only>"C:\Develop\MPC\mwc.pl" -type vc8 QuickFA
ST.mwc
Generating 'vc8' output using QuickFAST.mwc
QuickFAST.mpc: line 38:
ERROR: Unable to locate parent: boost_system
QuickFAST.mwc: line 18:
ERROR: Unable to process src/QuickFAST.mpc
ERROR: Unable to process: QuickFAST.mwc
Please provide me how to build QuickFAST on Windows
Thanks.
Original issue reported on code.google.com by [email protected]
on 29 Oct 2009 at 1:38
Hi all,
Have been looking at quickfast C++ for a project. I know the code is a bit
green but I've hit a number of issues which I will submit. This one is a
major stopper for me.
I've been doing some tests encoding messages and decoding them. The encoder
has bugs but I'll cover that in another issue. I've encoded a message using
the template below.
When I decode this message, in the encoded group "MDFeedTypes" the first
byte is a Presencemap. In the method:-
void
Decoder::decodeGroup(
DataSource & source,
Codecs::SegmentBodyCPtr group,
Messages::FieldSet & fieldSet)
{
size_t presenceMapBits = group->presenceMapBitCount();
Codecs::PresenceMap pmap(presenceMapBits);
if(presenceMapBits > 0)
{
static const std::string pm("PMAP");
source.beginField(pm);
if(!pmap.decode(source))
The call to presenceMapBitCount() returns 0; So from there on the decoding
fails because of the extra byte.
What version of the product are you using? On what operating system?
current.
Please provide any additional information below.
<template name="InstrumentReferenceData" id="3">
<typeRef name="instrumentreferencedata"/>
<uInt32 name="timestamp" id="52">
<delta/>
</uInt32>
<uInt32 name="srcId" id="50">
<copy/>
</uInt32>
<uInt32 name="seqNum" id="34">
<increment value="1"/>
</uInt32>
<uInt32 name="isix" id="48">
<delta/>
</uInt32>
<string name="isin" id="455">
<delta/>
</string>
<string name="exchId" id="207">
<copy/>
</string>
<string name="instGrp" id="1151">
<copy/>
</string>
<string name="instTypCod" id="461">
<copy/>
</string>
<string name="currCode" id="15">
<copy/>
</string>
<decimal name="ticSiz" id="969">
<delta/>
</decimal>
<uInt32 name="setId" id="TBD">
<copy/>
</uInt32>
<sequence name="MDFeedTypes">
<length name="noOfStreams" id="1141"/>
<string name="streamType" id="1022"/>
<string name="streamService"/>
<string name="inetAddr">
<delta/>
</string>
<uInt32 name="port" id="TBD">
<delta/>
</uInt32>
<uInt32 name="mktDepth" id="264" presence="optional"/>
<uInt32 name="mdBookType" id="1021" presence="optional"/>
</sequence>
</template>
Original issue reported on code.google.com by [email protected]
on 25 Feb 2009 at 10:57
Library extension on MacOSX should be .dylib instead of .so
Original issue reported on code.google.com by [email protected]
on 4 Feb 2010 at 7:41
What steps will reproduce the problem?
1.Define "<uInt32 name="WHATEVER" presence="optional"><copy/></uInt32>"
2.Create a message where WHATEVER=1 (or >= 0) and encode it!
3.Create a new message with WHATEVER=1 (without reset the dictionary) and
encode it again.
What is the expected output? What do you see instead?
Theoretically in the second message WHATEVER field should not be present,
but it is.
This is because you save the previous value in the dictionary incremented
by 1. You probably do that for encode NULL values, but the value that you
must save in the dictionary is the original and not the encoded in the
DataStream (value + 1).
This bug not apply for negative values.
What version of the product are you using? On what operating system?
I work under Linux, using Linux Source Distribution, V1.0
Please provide any additional information below.
Thank you very much for this nice lib!!! Great job!!!
Original issue reported on code.google.com by [email protected]
on 12 Nov 2009 at 12:12
I've come across a couple bugs in the encoder, I don't think the encoder
has been tested as yet.
PresenceMap.cpp encode(DataDestination & destination) line: 90
for(size_t pos = 0; pos <= bpos; ++ bpos)
shouldn't it be
for(size_t pos = 0; pos <= bpos; ++ pos)
The TemplateId is not being correctly set in the encoded message in
encoder.cpp encodeSegment
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
current C++ & windows
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 26 Feb 2009 at 12:07
In some or most of the derived classes from Messages::Field the bool value
'valid_' is not being set to true. So in encoding of some fields fail
Field::isDefined() returns false.
What version of the product are you using? On what operating system?
current C++ & windows
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 26 Feb 2009 at 12:56
A bug:
bool TemplateRegistry::findNamedTemplate always returns 'true'
Original issue reported on code.google.com by [email protected]
on 10 Mar 2009 at 3:49
What steps will reproduce the problem?
1.Define <uInt32 presence="optional" name="Number"> <copy/> </uInt32>
2.
3.
What is the expected output? What do you see instead?
If "Number" is not included in the first message, the value of "Number"
will be NULL(0x80). However FAST Protocol Standard says:
When the value is not present in the stream there are three cases depending
on the state of the previous value:
• assigned – the value of the field is the previous value.
• undefined – the value of the field is the initial value that also becomes
the new previous value. Unless the field has optional presence, it is a
dynamic error [ERR D5] if the instruction context has no initial value. If
the field has optional presence and no initial value, the field is
considered absent and the state of the previous value is changed to empty.
• empty – the value of the field is empty. If the field is optional the
value is considered absent. It is a dynamic error [ERR D6] if the field is
mandatory.
Coding our first message our dictionary should be in undefined state.
Hereby NULL(0x80) value is not needed for encode/decode process, only we
have to unset the corresponding PMAP bit. Maybe I'm wrong but this is what
I deduct from FAST specification. What do you think?.
Moreover, FAST allow use of initial values for OPs (copy, default,
increment, delta, constant, tail), but at least copy operand doesn't
support this feature. This is an important stuff because the value of the
field is the initial value and also becomes the new previous value when
data dictionary is in undefined state.
What version of the product are you using (svn Rev # or download package
version #)? On what operating system?
Linux
Please provide any additional information below.
Thanks for you last fixes. Their work great!!
Original issue reported on code.google.com by [email protected]
on 13 Nov 2009 at 7:03
What steps will reproduce the problem?
1.Define "<uInt8 name="XXX" id="YYY"><default value="20"/></uInt8>"
2.
3.
What is the expected output? What do you see instead?
XML parser fails!!! due to a bad casting, using boost library. Probably
this is a problem of boost lib, but I think is easy to solve. Anyway uInt8
is not an standard data type in FAST protocol, so maybe is better to advise
against the use of this type.
What version of the product are you using? On what operating system?
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 12 Nov 2009 at 12:20
This is a wish?? It would be nice if in Messages::Message(const Message &
rhs) that this also copies the : 'applicationType_' and
'applicationTypeNs_' values from Messages::FieldSet
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
Windows & current
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 6 Mar 2009 at 1:10
quickfast_lnx_src_1_2/src/Communication/LinkedBuffer.h: In member function
‘QuickFAST::Communication::LinkedBuffer*
QuickFAST::Communication::BufferQueue::popList()’:
quickfast_lnx_src_1_2/src/Communication/LinkedBuffer.h:226: warning: unused
variable ‘result’
quickfast_lnx_src_1_2/src/Communication/LinkedBuffer.h:229: warning: no return
statement in
function returning non-void
Original issue reported on code.google.com by [email protected]
on 20 Apr 2010 at 1:01
What steps will reproduce the problem?
In the template file:
<uInt64 name="uint64_const" id="12">
<constant value="18446744073709551615"/>
</uInt64>
What is the expected output?
The field uint64_const should have the largest possible unsigned 64 bit value.
What do you see instead?
An exception is thrown.
Please use labels and text to provide additional information.
This is triggered by a bug in boost an/or the underlying stream I/O library.
For more details, see https://svn.boost.org/trac/boost/ticket/2295
This will NOT be fixed until the boost/iostream problem is fixed. It is
unlikely to be encountered in any real-world situation.
If you believe it is fixed, re-enable the test by making the appropriate
changes in biggest_value.xml and testBiggestValue.cpp
Original issue reported on code.google.com by [email protected]
on 8 Apr 2009 at 7:28
Some templates I use do not encode/decode properly. They have different
decoding errors depending on the template.
I've attached a modified 'testRoundTrip.cpp' file. All I've done to this
test is remove entries from the end of the template until the encode/decode
fails.
Currently the last field in the template is 'ticSiz', if you add the next
field 'setId' to the template testRoundTrip is successful.
What version of the product are you using? On what operating system?
windows & current version
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 6 Mar 2009 at 1:04
Attachments:
What steps will reproduce the problem?
I was reviewing source files, when I realized example below will fail.
1.<uInt32 name="NAME-1"><copy value="1" key="KEY"/></uInt32>
2.<uInt32 name="NAME-2"><copy value="2" key="KEY"/></uInt32>
What is the expected output? What do you see instead?
Input Encoded
NAME-1 1 None (taken from Initial value)
NAME-2 1 1
Obviously, the encoded value for NAME-2 is wrong, and should be None
because the previous value kept in KEY is 1. This is because NAME-1 get the
initial value, but it doesn't update KEY entry in the dictionary.
Once more time, this issue only affects ENCODER part.
I've also found a error processing Decimal number split in two
operators(mantissa and exponent) sharing same KEY, but I'm not totally sure
what is the problem(yet). I'll keep you informed, but maybe you want take a
look.
Original issue reported on code.google.com by [email protected]
on 25 Nov 2009 at 10:33
Missing virtual destructor.
File ./lib/Common/Logger.h
Class Logger has virtual methods, but does not have any destructor.
I have added line #16:
16 virtual ~Logger() {}; // olegh
Suggest you to include into lib code.
Original issue reported on code.google.com by [email protected]
on 22 Apr 2010 at 1:21
The test data currently being used is proprietary and cannot be
redistributed. We need to find or develop some redistributable test data.
Original issue reported on code.google.com by [email protected]
on 6 Mar 2009 at 5:13
What steps will reproduce the problem?
1. Encode a message with the template:
<template name="Logon" id="1001">
<typeRef name="Logon"/>
<string name="BeginString" id="8"><constant value="FIX.4.4"/></string>
<int32 name="BodyLength" id="9"><copy/></int32>
<string name="MsgType" id="35"><constant value="A"/></string>
<string name="SenderCompID" id="49"><copy/></string>
<string name="TargetCompID" id="56"><copy/></string>
<uInt64 name="MsgSeqNum" id="34"><increment/></uInt64>
<string name="SendingTime" id="52"><delta/></string>
<string name="EncryptMethod" id="98"><copy/></string>
<int32 name="HeartBtInt" id="108"><copy/></int32>
<string name="ResetSeqNumFlag" presence="optional"
id="141"><copy/></string>
<string name="ApplVerID" id="1128" presence="optional"><constant
value="6"/></string>
<string name="CstmApplVerID" id="1129" presence="optional"><constant
value="EBS_MD_1"/></string>
<string name="CheckSum" id="10"><copy/></string>
</template>
2. QuickFAST is omitting the MsgSeqNum field during encoding.
3. Decoding with OpenFAST, giving the following error:
Exception in thread "main" java.lang.IllegalStateException: Field with
operator increment must send a value if no previous value existed.
at
org.openfast.template.operator.IncrementIntegerOperatorCodec.decodeEmptyValue(In
crementIntegerOperatorCodec.java:71)
at org.openfast.template.Scalar.decode(Scalar.java:190)
at org.openfast.template.Scalar.decode(Scalar.java:238)
at org.openfast.template.Group.decodeFieldValues(Group.java:285)
at org.openfast.template.MessageTemplate.decode(MessageTemplate.java:118)
at org.openfast.codec.FastDecoder.readMessage(FastDecoder.java:66)
What is the expected output? What do you see instead?
Paragraph 6.3.6 of the spec says:
When the value is not present in the stream there are three cases
depending on the state of the previous value:
• assigned – the value of the field is the previous value
incremented by one. The incremented value also becomes the new
previous value.
• undefined – the value of the field is the initial value that also
becomes the new previous value. Unless the field has optional
presence, it is a dynamic error [ERR D5] if the instruction context
has no initial value. If the field has optional presence and no
initial value, the field is considered absent and the state of the
previous value is changed to empty.
• empty – the value of the field is empty. If the field is optional,
the value is considered absent. It is a dynamic error [ERR D6] if
the field is mandatory
What version of the product are you using (svn Rev # or download package
version #)? On what operating system?
- Rev#r294
- CentOS 5.3
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 12 Jan 2010 at 7:34
It happens because finalize functions of FieldInstructionGroup and
FieldInstructionSequence don't set presenceMapBitsUsed_, so if a template
has an optinal group it has to return 1 but it will return 0 instead.
To solve this, I propose this:
FieldInstructionGroup::finalize(...)
{
segmentBody_->finalize(...);
if (!isMandatory())
presenceMapBitsUsed_ = 1;
}
FieldInstructionSequence::finalize(...)
{
segmentBody_->finalize(...);
const Codecs::FieldInstructionPtr& lengthInstruction =
segment_->getLengthInstruction();
lengthInstruction->finalize(templateRegistry);
presenceMapBitsUsed_ = lengthInstruction->getPresenceMapBitsUsed();
}
Original issue reported on code.google.com by [email protected]
on 12 Apr 2010 at 12:30
The reset attribute on the template element in the template definition file,
i.e. <template reset="Y"> should cause the decoder/encoder to be reset
before processing that template.
Original issue reported on code.google.com by [email protected]
on 29 Apr 2009 at 3:00
bool
FieldInstructionAscii::decodeCopy(
Codecs::DataSource & source,
Codecs::PresenceMap & pmap,
Codecs::Decoder & decoder,
Messages::MessageBuilder & fieldSet) const
{
PROFILE_POINT("ascii::decodeCopy");
if(pmap.checkNextField())
{
// field is in the stream, use it
Messages::FieldCPtr field;
if(!decodeFromSource(source, isMandatory(),decoder.getWorkingBuffer(),
field))
{
return false;
}
if(field)
{
fieldSet.addField(
identity_,
field);
fieldOp_->setDictionaryValue(decoder, field);
}
}
Maybe I'm wrong, but I think you should add an else condition with:
fieldOp_->setDictionaryValue(decoder, Messages::FieldAscii::createNull());
Original issue reported on code.google.com by [email protected]
on 7 Dec 2009 at 2:56
Some FAST data feeds include special messages to trigger decoder resets. A
reset method on SynchronousDecoder and MulticastDecoder can be used to
honor these requests
Original issue reported on code.google.com by [email protected]
on 30 Apr 2009 at 6:57
1) Memory problem on Working Buffer.
It is necessary reset startPos_ every time you call clear function since
pop_front function increment startPos_ variable, hereby it is possible
allocate a new buffer when WorkingBuffer has enough capacity to handle the
field. Example:
-Decode a Null Ascii Field. During decode process checkNullAscii will be
called, so startPos_ variable will be incremented. At this time startPos_
value is 1
-Decode a Non-Null Ascii Field. Since startPos_ isn't 0 you have wasted 1
byte and a new allocation could be necessary.
2) DecodeCopy function will not work properly because you could add a Null
field to the MessageBuilder.
else // pmap says not present, use copy
{
INTEGER_TYPE previousValue = 0;
if(fieldOp_->getDictionaryValue(decoder, previousValue))
{
fieldSet.addValue(
identity_,
VALUE_TYPE,
previousValue);
It is necessary distinguish if a value is OK or NULL, otherwise if
previousValue is NULL it will added to fieldSet.
But this issue is more than an esthetic problem, since decodeCopy is called
by FieldInstructionDecimal. This way, if an exponent in a message is null,
it will be added to the SingleValueBuilder and FieldInstructionDecimal will
think it has a valid value and will try to process the mantissa.
This problem affects to FieldInstructionInteger and FieldInstructionDecimal.
3) Unecesary setDictionaryValue.
Line 463 of FieldInstructionInteger is not necessary and can be erased.
4) Only use initial values when dictionary entry will be undefined.
In FieldInstructionAscii, line "else if(fieldOp_->hasValue())" would allow
use the initial value even when the previous value is null.
Patch attached.
Thanks for the new branch!!!!
Carlos
Original issue reported on code.google.com by [email protected]
on 11 Jan 2010 at 11:55
Attachments:
A small compile problem for linux
SegmentBody.h line 113
'FieldInstructionCPtr SegmentBody::getInstruction(size_t index)const;'
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 13 Mar 2009 at 2:48
Sorry I didn't notice this before, until I started looking at message content.
In function 'void handleReceive'
DataSourceBuffer source(buffer->get(), bytesReceived);
MessageType message(decoder_.getTemplateRegistry()->maxFieldCount());
decoder_.reset();
while(source.bytesAvailable() > 0 && !stopping_)
{
decoder_.decodeMessage(source, message);
if(!consumer_->consumeMessage(message))
For multiple messages in a packet 'MessageType message' is outside the
while loop and is not reset for each decodeMessage call.
Perhaps put 'MessageType message' inside the while loop.
Original issue reported on code.google.com by [email protected]
on 1 May 2009 at 5:41
For Boost 1.40, the *.lib files are located in the $(BOOST_ROOT)\stage\lib
directory. This is incorrect for the check in the setup.cmd script.
The relevant line in the Setup.cmd should be changed as follows:
....
set SETUP_CHECKING=BOOST_ROOT=%BOOST_ROOT%
if not exist "%BOOST_ROOT%\stage\lib" goto setup_is_bad
....
Original issue reported on code.google.com by [email protected]
on 27 Apr 2010 at 4:40
In function: 'Decoder::decodeSegment' the reset code :
if(templatePtr->getReset())
{
reset();
}
resets the template Id after the its been decoded. This causes the decoding
to fail for multiple messages with the same template Id. This would
probably only be a issue when decoding a binary file stream.
Original issue reported on code.google.com by [email protected]
on 21 May 2009 at 1:24
In FieldInstructionAscii::decodeDefault() I think the ! should be removed
from this line:
if(!decodeAsciiFromSource(source, isMandatory(), buffer))
Steve Rauch
Original issue reported on code.google.com by [email protected]
on 23 Mar 2010 at 7:11
Added on behalf of ppgotera who described the problem on the QuickFAST
users mailing list:
I'm testing QuickFAST with a data file and a template file from the
SIX Swiss Exchange. The first problem I had is that some templates
defined in the xml file have no id. These templates are only used as
TemplateRef. QuickFAST tries to store all these templates with id=0 in
the map, so that only the last one is stored. I solved that by
modifying the xml template file and assigning an Id to each template.
What steps will reproduce the problem?
1. Define two (or more) templates with different names and no the id="xxx"
attribute.
2. Use <templateRef name="xxx"> to "include" these templates.
What is the expected output? What do you see instead?
Decoding fails with the error message: "[ERR D9] Unknown template name for
static templateref"
Original issue reported on code.google.com by [email protected]
on 16 Nov 2009 at 5:23
What steps will reproduce the problem?
1. Run: TutorialApplication template.txt messages.fast (attached files 1
and 2)
The output I obtained from fixprotocol.org decoder @
http://fast.fixprotocol.org/templates.html is in msg_decoded.xml (attached
file 3).
Instead, I'm getting error:
[ERR S1] Template file fatal error at line 1 column 1: invalid byte '═' at
position 2 of a 2-byte sequence
Versions of products:
- FASTFix: quickfast_win_src_1_2
- Boost: 1.42
- Xerces: c-3.1.0
- Operating system: MS XP Professional, 5.1.2600 Service Pack 2 Build 2600
- Visual Studio: C++ 2008 Version 9.0.21022.8 RTM
Original issue reported on code.google.com by [email protected]
on 12 Apr 2010 at 6:51
Attachments:
Using the template below to decode a message, 'typeRef' entry in the
template file should be the ApplicationType of the message; At the moment
the ApplicationType in the message is not being set.
What version of the product are you using? On what operating system?
current and windows
Please provide any additional information below.
<template name="StartRefData" id="130">
<typeRef name="startreference"/>
<uInt32 name="timestamp"/>
<string name="busDate"/>
<uInt32 name="noOfMsg"/>
</template>
Original issue reported on code.google.com by [email protected]
on 25 Feb 2009 at 11:37
What steps will reproduce the problem?
Using the templated attached. Some problems appear:
-First of them, is impossible decode a group. This is because the
correponding bit of PMAP is not setted. Fixed in FieldInstructionGroup.
-There is a problem, coding group and sequences. The is the order of
buffers creation. I mean, once you finish of coding a sequence you return
to the buffer where length is coded. Fixed in Encoder.cpp
- If an optional sequence is not added, decoding proccess fails. It happens
because if a sequence is not added to the message you set pmap bit to
false. After that, while decoding you don't take into account this bit and
just try to get the lenght. Fixen in FieldInstructionSequence.cpp
Original issue reported on code.google.com by [email protected]
on 18 Nov 2009 at 3:57
Attachments:
In the decodeDefault function in FieldInstructionInteger.h there is no
check to see if the current field is signed or unsigned. It always calls
decodedSignedInteger if the pmap bit is set. This obviously doesn't work
for unsigned ints using the default op. It needs to check SIGNED like it
does for the other op types. I am using win_src_1.1
Steve Rauch
Original issue reported on code.google.com by [email protected]
on 23 Mar 2010 at 5:08
Another small compile problem for linux
Decoder.h line 71.
' void
Decoder::decodeGroup(
DataSource & source,
Codecs::SegmentBodyCPtr segment,
Messages::FieldSet & fieldSet);'
What steps will reproduce the problem?
1.
2.
3.
What is the expected output? What do you see instead?
What version of the product are you using? On what operating system?
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 13 Mar 2009 at 2:50
What steps will reproduce the problem?
<uInt32 name="NAME" presence="optional"><copy/></uInt32>
Input Encoded PMAP
NAME 1 0x82 true
NAME None 0x80 false
NAME 0 None false
But result has to be:
Input Encoded PMAP
NAME 1 0x82 true
NAME None 0x80 false
NAME 0 0x81 true
This happens because previousValue is initialized to 0, and the function
which control this behaviour only check if PREVIOUS=INPUT and PREVIOUS is
known.
Probably is better check if PREVIOUS is not null.
I attach a fix for this.
Original issue reported on code.google.com by [email protected]
on 3 Dec 2009 at 2:29
Attachments:
What steps will reproduce the problem?
1.Run: TutorialApplication template.txt messages.fast (attached files 1
and 2)
The output I obtained from fixprotocol.org decoder @
http://fast.fixprotocol.org/templates.html is in msg_decoded.xml (attached
file 3).
The output from TutorialApplication is and attached file 4 and shows that
TutorialApplication was able to process only the first of four messages.
Versions of products:
- FASTFix: quickfast_win_src_1_2
- Boost: 1.42
- Xerces: c-3.1.0
- Operating system: MS XP Professional, 5.1.2600 Service Pack 2 Build 2600
- Visual Studio: C++ 2008 Version 9.0.21022.8 RTM
Original issue reported on code.google.com by [email protected]
on 13 Apr 2010 at 1:47
Attachments:
What steps will reproduce the problem?
1.<Decimal name="NAME"><copy/></Decimal>
What is the expected output? What do you see instead?
Hi Dale,
Please take a look to encodeCopy in FieldInstructionDecimal. In this
function is missing something, because if NAME is present in the message it
won't be encoded.
Original issue reported on code.google.com by [email protected]
on 20 Nov 2009 at 2:47
What steps will reproduce the problem?
1.
2.
3.
What is the expected output? What do you see instead?
What version of the product are you using (svn Rev # or download package
version #)? On what operating system?
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 14 Dec 2009 at 1:24
In fieldSet constructor, 'fields_' is initialised using rhs.used_, I think
it should be initialised using rhs.capacity_.
FieldSet::FieldSet(const FieldSet & rhs)
: applicationType_(rhs.applicationType_)
, applicationTypeNs_(rhs.applicationTypeNs_)
, fields_(reinterpret_cast<MessageField *>(new unsigned
char[sizeof(MessageField) * rhs.used_]))
, capacity_(rhs.capacity_)
, used_(rhs.used_)
Original issue reported on code.google.com by [email protected]
on 6 May 2009 at 12:40
I attach a fix for this.
Original issue reported on code.google.com by [email protected]
on 2 Dec 2009 at 4:34
Attachments:
Example of encodeCopy:
if(isMandatory())
{
encoder.reportFatal("[ERR U01]", "Missing mandatory field.", *identity_);
// if reportFatal returns we're being lax about the rules
// let the copy happen.
pmap.setNextField(false);
}
if(previousStatus == Context::OK_VALUE)
{
// we have to null the previous value to avoid copy
pmap.setNextField(true);// value in stream
destination.putByte(nullAscii);
}
else
{
pmap.setNextField(false);
}
if(previousStatus != Context::NULL_VALUE)
{
fieldOp_->setDictionaryValueNull(encoder);
}
There is a bug in FieldInstructionAscii for optional fields with initial
value. If the field is not present in the fieldset, the pmap bit will set
to 0 while its behavior should be:
-Set 1 in the PMAP.
-Put a NULL byte in the stream.
-Update the dictionary to NULL.
To fix this the easy way is to use the code of FieldInstructionInteger
where this bug is not present:
if(isMandatory())
{
encoder.reportError("[ERR U01]", "Missing mandatory integer
field.", *identity_);
// if reportEror returns we're being lax about the rules.
// Let the copy happen
pmap.setNextField(false);
}
else
{
// Missing optional field. If we have a previous, non-null value
// we need to explicitly null it out. Otherwise just don't send it.
if(previousStatus != Context::NULL_VALUE)
{
pmap.setNextField(true);// value in stream
destination.putByte(nullInteger);
fieldOp_->setDictionaryValueNull(encoder);
}
else
{
pmap.setNextField(false);
}
}
Original issue reported on code.google.com by [email protected]
on 12 Apr 2010 at 2:19
Hello Dale,
I've just seen your 'experimental' code to fix the function toString of
Decimal's class. It is a huge function, and PROBABLY(I'm just guessing)
could be solved with this:
Decimal dec(mantissa,exponent);
std::stringstream str;
str<<double(dec);
I haven't check it, but I think it will work.
Carlos Zafra
Original issue reported on code.google.com by [email protected]
on 14 Apr 2010 at 10:54
Added on behalf of ppgotera who described the problem on the QuickFAST
users mailing list:
I'm testing QuickFAST with a data file and a template file from the
SIX Swiss Exchange.
Now the first 12 million messages are decoded fine, but then the
decoding stops with the error <[ERR D6] No value available for
mandatory copy field.> I think the data file is ok because it can be
decoded completely with openfast. I cannot provide the original
files, but I could provide a test template and a small data file to
reproduce the problem.
Original issue reported on code.google.com by [email protected]
on 16 Nov 2009 at 5:28
Hello Dale,
I've seen a little bug when you calculate how many bytes you need to encode
X bits. The formula is (bits+7)/8, but see the below example:
bits = 105
(105+7)/8 = 14
But 15 bytes are needed to encode 105 bits.
Original issue reported on code.google.com by [email protected]
on 14 Dec 2009 at 1:29
What steps will reproduce the problem?
<group name="AuctionPrice" presence="optional">
<decimal name="MDEntryPx" id="270">
<exponent><copy/></exponent>
<mantissa><delta/></mantissa>
</decimal>
<uInt32 name="MDEntrySize" id="271"><delta/></uInt32>
</group>
This example could fail, because MDEntryPx and MDEntrySize return 0 when
they call presenceMapBitsRequired, so group AuctionPrice won't have PMAP,
what is oviusly wrong.
presenceMapBitsRequired for Decimal numbers should check exponent and
mantissa operators, in order to obtain their real length of PMAP.
Patch attached.
Carlos
Original issue reported on code.google.com by [email protected]
on 3 Dec 2009 at 2:42
Attachments:
Just got the latest source and it appears if 'Issue 15: MulticastDecoder'
still exist in this code.
Original issue reported on code.google.com by [email protected]
on 21 May 2009 at 4:03
QuickFAST does not build "by default" on MacOSX as the linker is not able
to find boost_system, boost_thread and boost_filesystem.
To fix the issue, I changes a little the MPC configurations:
src/QuickFAST.mpc:
project(*) : boost_base , boost_filesystem, boost_system , boost_thread
src/Examples/Examples.mpc:
project(InterpretApplication) : boost_base, boost_system,
boost_filesystem, boost_thread, QuickFASTExample
Regards,
Luca
Original issue reported on code.google.com by [email protected]
on 1 Feb 2010 at 12:11
According to my investigation on InterpretFAST, the template files without
<templates> will cause problems (the testing template file and fast data
are attached), this is because that QuickFast always assumes the template
will have one root <templates> tag, I think it's better to report some
explicit errors when the template file has no <templates> tag, rather than
causing one debug assertion failure error, which is very tedious and
difficult to resolve, any other idea?
BTW, one related topic "Help to prepare some testing template file and fast
data for InterpretFAST" has been posted out in the discussion forum, you
can have a look at it if you're interested in.
Regards
James
Original issue reported on code.google.com by [email protected]
on 24 Jun 2009 at 1:16
Attachments:
The MulticastDecoder only decodes a single message from each incoming
packet. It should continue to decode messages until the entire contents of
the packet is consumed.
Original issue reported on code.google.com by [email protected]
on 29 Apr 2009 at 2:56
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.