Giter Site home page Giter Site logo

quickfast's People

Watchers

 avatar

quickfast's Issues

Perl required on Windows

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

Encoder includes optional fields by default

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:

Don't build QuickFAST on Windows

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

sequence encoding

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

Encode Copy doesn't seem work properly with optional fields

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

encoder fails

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

encode fails

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

Encoding: Optional copy field with no initial value not present in first message sends unnecessary null field

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

Problem parsing uInt8 values in XML Template

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

Messages::Message

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

no return value in QuickFAST::Communication::LinkedBuffer* QuickFAST::Communication::BufferQueue::popList()

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

Very large int64's and uint64's triger an boost::invalid_lexical_cast exception

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

encoder

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:

Fields sharing same dictionary entry, and different initial value don't encode correctly.

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

Logger: Missing virtual destructor

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

Incorrect encoding for incremental field that has no initial value.

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

Function presenceMapBitCount doesn't return a correct value

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

Decode Copy Ascii doesn't update dictionary when NULL value is present in the stream

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

Minor bugs in ValueClass's branch

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:

SegmentBody.h

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

MulticastDecoder


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

SETUP_CHECKING for Boost does not work for later Boost versions

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

Decoder reset

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

Templates with no ID are not saved properly in template repository

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

Unable to process valid xml template

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:

ApplicationType not set in message

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

Problems with groups and sequences fields

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:

Bug in FieldInstructionInteger.h - decodeDefault

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

Decoder.h

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

Copy operator: NULL value followed by a zero is not encoded correctly.

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:

Additional porblems with TutorialApplication

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:

Copy operand doesn't work with decimal

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

(bits+7)/8

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 Messages/FieldSet.cpp

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

Bug in encode functions of FieldInstructionAscii

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

Decimal formatting using boost lexical (SUGGESTION)

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

Unexpected error message [ERR D6] No value available for mandatory copy field.

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

Problem calculating PMAP length

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

presenceMapBitsRequired function should be redefined in FieldInstructionDecimal

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:

QuickFAST on MacOSX


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

Problem on templates without the root <templates> tag

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:

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.