예제 #1
0
        /**
         * Callback chamado logo antes do envio da mensagem FIX de controle de sessão.
         *
         */
        public void toAdmin(QuickFix.Message message, SessionID sessionId)
        {
            try
            {
                // Se for mensagem de Logon, inclui o RawData e RawDataLength na mensagem
                if (message.getHeader().getString(MsgType.FIELD).Equals("A"))
                {
                    message.setBoolean(ResetSeqNumFlag.FIELD, true);
                    message.setInt(NextExpectedMsgSeqNum.FIELD,
                                   (new NextExpectedMsgSeqNum(ConstantesMDS.BMF_SEQNUM_INICIAL)).getValue());

                    message.setField(RawData.FIELD, new RawData(senha).ToString());
                    message.setField(RawDataLength.FIELD, new RawDataLength(senha.Length).ToString());

                    if (novaSenha != null && novaSenha.Length > 0)
                    {
                        message.setField(NewPassword.FIELD, new NewPassword(novaSenha).ToString());
                        logger.Info("Enviada nova senha para alteracao!");
                    }
                }
                else if (message.getHeader().getString(MsgType.FIELD).Equals("5"))
                {
                    if (assinados)
                    {
                        cancelaInstrumentos();
                    }
                }

                logger.Debug("SEND(SES) --> " + message.ToString());
            }

            catch (FieldNotFound e)
            {
                logger.Error("Campo nao encontrado: " + e.Message, e);
            }
        }