예제 #1
0
        /**
         * Callback chamado após o recebimento de mensagem FIX de lista de
         * Instrumentos.
         *
         */
        public override void onMessage(QuickFix44.SecurityList message, SessionID sessionId)
        {
            try
            {
                int ocorrencias =
                    message.getInt(NoRelatedSym.FIELD);

                logger.Info("LISTA_INSTRUMENTO Sequencial[" +
                            message.getHeader().getString(MsgSeqNum.FIELD) +
                            "] Ocorrencias[" + ocorrencias + "]");

                for (uint ocorrencia = 1;
                     ocorrencia <= ocorrencias; ocorrencia++)
                {
                    SecurityList.NoRelatedSym grupo = new SecurityList.NoRelatedSym();
                    message.getGroup(ocorrencia, ((QuickFix.Group)grupo));

                    if (padraoInstrumentos != null)
                    {
                        // Se instrumento combinar com o padrao de instrumentos,
                        // efetua assinatura
                        if (padraoInstrumentos.IsMatch(grupo.getString(Symbol.FIELD)))
                        {
                            logger.InfoFormat("Requisitando assinatura {0}-{1}-{2}",
                                              grupo.getString(Symbol.FIELD),
                                              grupo.getString(SecurityID.FIELD),
                                              grupo.getString(SecurityIDSource.FIELD));

                            requisitaInstrumento(
                                SubscriptionRequestType.SNAPSHOT_PLUS_UPDATES,
                                grupo.getString(Symbol.FIELD),
                                grupo.getString(SecurityID.FIELD),
                                grupo.getString(SecurityIDSource.FIELD));

                            assinados = true;

                            if (!instrumentosAssinados.ContainsKey(
                                    grupo.getString(Symbol.FIELD)))
                            {
                                instrumentosAssinados.Add(
                                    grupo.getString(Symbol.FIELD),
                                    new DadosInstrumentosBMF(
                                        grupo.getString(SecurityID.FIELD),
                                        grupo.getString(SecurityIDSource.FIELD)));
                            }
                        }
                    }

                    enviaInstrumento(
                        message.getHeader().getInt(MsgSeqNum.FIELD),
                        ocorrencia,
                        grupo);

                    logger.Debug("INSTRUMENTO [" +
                                 grupo.getString(Symbol.FIELD) + "] Descricao[" +
                                 grupo.getString(SecurityDesc.FIELD) + "]");
                }
            }

            catch (FieldNotFound e)
            {
                logger.Error("Campo nao encontrado na mensagem: " + e.Message, e);
            }
        }
예제 #2
0
 public virtual void onMessage( SecurityList message, QuickFix.SessionID session ) 
   { throw new QuickFix.UnsupportedMessageType(); }