/** * 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); } }
public virtual void onMessage( SecurityList message, QuickFix.SessionID session ) { throw new QuickFix.UnsupportedMessageType(); }