为什么我的代码在BLPAPI中掉线

时间:2013-12-19 03:09:51

标签: bloomberg

大多数蜱很好,但通常缺少一些蜱虫

伪代码:

    Foreach Message msg in myEvent
    {
       if (m.hasField(BID))
       {
            handlebid(m.getFieldasFloat64(BID);
       }

       if (m.hasField(BID_SIZE))
       {

           int bidsize=m.getFieldasInt(BID_SIZE);
           if (bidsize==0)
           {
                  return -1;
           }
           handlebidsize(bidsize);
      }

      if (m.hasField(ASK))
      {
           handleask(m.getFieldasFloat64(ASK);
      }

      if (m.hasField(ASK_SIZE))
      {
           int asksize=m.getFieldasInt(ASK_SIZE);
           if (asksize==0)
           {
                  return -1;
           }
           handleasksize(asksize);
      }
}

2 个答案:

答案 0 :(得分:1)

事件可以包含多条消息

如果事件处理程序以任何方式返回或中断循环而不是进入下一个循环迭代,则不会处理触发循环退出的事件之后的事件中的任何消息。这些消息中的任何刻度都将被“删除”

永远不要退出带有return或break的事件处理循环

答案 1 :(得分:1)

Glenn Teitelbaum是正确的,一个事件可以包含多条消息。您可能丢弃滴答的另一个原因是一个请求可能导致多个响应:几个部分响应和一个响应。确保你处理这两种类型的响应并调用nextEvent()直到得到响应事件(而不是部分响应)。