`
seafront12
  • 浏览: 4730 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
文章分类
社区版块
存档分类
最新评论

FIX with JDBC Storage: Initiator Code quickfixj

FIX 
阅读更多
import quickfix.Application;
import quickfix.ConfigError;
import quickfix.DefaultMessageFactory;
import quickfix.DoNotSend;
import quickfix.FieldConvertError;
import quickfix.FieldNotFound;
import quickfix.IncorrectDataFormat;
import quickfix.IncorrectTagValue;
import quickfix.JdbcStoreFactory;
import quickfix.MemoryStoreFactory;
import quickfix.Message;
import quickfix.MessageStoreFactory;
import quickfix.RejectLogon;
import quickfix.SLF4JLogFactory;
import quickfix.Session;
import quickfix.SessionID;
import quickfix.SessionNotFound;
import quickfix.SessionSettings;
import quickfix.SocketInitiator;
import quickfix.UnsupportedMessageType;
import quickfix.field.MsgType;
import quickfix.field.Password;
import quickfix.field.Username;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;

import static com.google.common.base.Throwables.propagate;

public class FixClient implements Application {

    private final SocketInitiator socketInitiator;
    private SessionID sessionID;
    private CountDownLatch latch;
    public final List<Message> receivedMsgs = new ArrayList<>();

    public FixClient(String fixServerConfigFile) throws ConfigError, FieldConvertError {
        this(fixServerConfigFile, false);
    }

    public FixClient(String fixServerConfigFile, boolean jdbcStorage) throws ConfigError, FieldConvertError {
        SessionSettings sessionSettings = FixUtils.loadSessionSettings(fixServerConfigFile);
        MessageStoreFactory messageStoreFactory =jdbcStorage ?new JdbcStoreFactory(sessionSettings): new MemoryStoreFactory() ;
        this.socketInitiator = new SocketInitiator(
                this,
                messageStoreFactory,
                sessionSettings,
                new SLF4JLogFactory(sessionSettings),
                new DefaultMessageFactory()
        );
        latch = new CountDownLatch(1);
    }

    public void start() throws ConfigError {
        socketInitiator.start();
    }

    public void waitUntilInit() throws InterruptedException {
        latch.await();
    }

    public void stop() {
        socketInitiator.stop(true);
    }

    public void sendMessage(Message message) throws InterruptedException {
        latch.await();

        try {
            Session.sendToTarget(message, sessionID);
        } catch (SessionNotFound sessionNotFound) {
            propagate(sessionNotFound);
        }
    }

    public void onCreate(SessionID sessionID) {

    }

    public void onLogon(SessionID sessionID) {
        this.sessionID = sessionID;
        latch.countDown();
    }

    public void onLogout(SessionID sessionID) {
        this.sessionID = null;
    }

    public void toAdmin(Message message, SessionID sessionID) {
        try {
            String msgType = message.getHeader().getString(MsgType.FIELD);
            if (MsgType.LOGON.equals(msgType)) {
                message.setString(Username.FIELD, "FOG");
                message.setString(Password.FIELD, "password");
            }
        } catch (FieldNotFound e) {
            propagate(e);
        }
    }

    public void fromAdmin(Message message, SessionID sessionID) throws FieldNotFound, IncorrectDataFormat, IncorrectTagValue, RejectLogon {

    }

    public void toApp(Message message, SessionID sessionID) throws DoNotSend {

    }

    public void fromApp(Message message, SessionID sessionID) throws FieldNotFound, IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType {
        receivedMsgs.add(message);
        System.out.println("Received: " + message.getClass().getSimpleName());
    }

    public List<Message> receivedMsgs() {
        return receivedMsgs;
    }
}
分享到:
评论

相关推荐

    ISCSI 客户端软件(微软:Initiator-2.08-build3825-x86fre)

    在本案例中,我们讨论的是微软提供的ISCSI客户端软件——"Initiator-2.08-build3825-x86fre"。这个软件是用于x86架构计算机的,即32位系统,版本号为2.08-build3825。 ISCSI发起器(Initiator)是ISCSI技术的关键...

    QuickFix 实现代码例子

    QuickFix 是一个开源的金融信息交换(FIX)协议实现库,专为交易系统设计,用于高效、可靠地传输证券和衍生品交易相关的数据。FIX 协议是一种国际标准,广泛应用于金融机构之间,包括股票、债券、期货、期权等各种...

    quickfix, 在Go中,修复协议库.zip

    quickfix, 在Go中,修复协议库 quickfix 网站:http://www.quickfixgo.org邮件列表:GoogleGo中实现的开源修复协议库入门和文档用户手册API文档安装要安装 quickfix/围棋,请使用 go g

    Windows ISCSI Initiator下载

    Windows iSCSI Initiator是一款由微软开发的软件,用于在Windows操作系统上实现iSCSI(Internet Small Computer System Interface)协议,使计算机能够通过IP网络连接到远程存储设备,如磁盘阵列或存储服务器。...

    iSCSISoftwareInitiator

    在本文中,我们将深入探讨iSCSI Software Initiator的基本概念、工作原理、安装与配置过程,以及其在IT环境中的应用。 一、iSCSI简介 iSCSI(Internet Small Computer System Interface)是基于TCP/IP协议的存储...

    iSCSI Initiator的安装

    执行`yum -y install iscsi-initiator-utils`命令,即可安装iscsi-initiator-utils套件,这个套件包含了iscsiadm工具,它是管理和配置iSCSI Initiator的主要命令行工具。 安装完成后,可以使用`service iscsi start...

    iSCSI Initiator

    1. 配置iSCSI Initiator:在控制面板中找到iSCSI Initiator选项,设置软件的属性,包括初始化器名称和启动类型。 2. 搜索目标:输入iSCSI目标的IQN(iSCSI Qualified Name)或IP地址,以发现并连接到存储设备。 3. ...

    Initiator-2.08 32位64位

    【Initiator-2.08 32位64位】是Microsoft提供的iSCSI发起程序的一个版本,它主要用于在Windows操作系统中实现iSCSI(Internet Small Computer System Interface)协议,使得计算机能够通过TCP/IP网络连接到存储设备...

    iscsiRFC协议

    1. Initiator:Initiator是iSCSI协议中的客户端,它负责将SCSI命令转换为iSCSI命令,并将其发送到目标设备上。 2. Target:Target是iSCSI协议中的服务器端,它负责接收iSCSI命令,并将其转换为SCSI命令,然后执行...

    Microsoft iSCSI Software Initiator Version 2.08

    Microsoft iSCSI Software Initiator Version 2.08 iSCSI发起程序,附件中包括32位和64位程序,根据系统不同进行选择。 Install Instructions Initiator-2.08-build3825-ia64fre.exe Initiator-2.08-build3825-x64...

    MicrosoftiSCSIInitiator软件配置指南

    ### Microsoft iSCSI Initiator 软件配置指南:深入解析 #### 一、iSCSI简介 **iSCSI**(Internet Small Computer System Interface),即互联网小型计算机系统接口,是一种标准化协议,允许通过TCP/IP网络(即...

    微软iSCSI_initiator的安装和配置步骤

    微软iSCSI initiator的安装和配置涉及到一系列步骤,旨在让服务器能够通过网络连接到存储设备,实现数据存储和访问。本文将详细介绍iSCSI initiator的安装配置过程,以及如何进行管理配置和MPIO(多路径输入/输出)...

    iscsi_initiator安装包

    iscsi-initiator-utils-6.2.0.873-2.el6.x86_64.rpm

    linux下的开源iscsi initiator

    Linux下的开源iSCSI Initiator是一个强大的存储网络技术,它允许Linux系统作为iSCSI发起端(Initiator),连接到远程iSCSI目标端(Target)以访问存储设备。iSCSI(Internet Small Computer System Interface)是...

    iscsi-initiator-utils-iscsiuio-6.2.0.874-10.el7.x86_64.rpm

    离线安装包,亲测可用

    iSCSI Initiator2.08/ Open-iSCSI

    Windonws下 Microsoft iSCSI Software Initiator Version 2.08 Initiator-2.08-build3825-x64fre.exe Initiator-2.08-build3825-x86fre.exe Linux下 open-iscsi-2.0-873.tar

    iSCSI Initiator Configuration-redhat5

    在REDHAT5.0系统中配置iSCSI Initiator是实现远程存储访问的关键步骤,以下是对iSCSI Initiator配置的详细解析。 首先,iSCSI Initiator的主要管理程序是`iscsid`守护进程。这个守护进程负责与iSCSI目标建立连接,...

    Initiator-2.02-QFE-bld1895-x86fre.rar

    标题“Initiator-2.02-QFE-bld1895-x86fre.rar”表明这是一款名为“Initiator”的软件的更新版本,版本号为2.02,包含了QFE(Quick Fix Engineering)补丁,构建编号为1895,且是针对x86架构(32位)的操作系统设计...

    方正FIX统一金融接入平台接口规范

    方正FIX统一金融接入平台接口规范是一份详细阐述了方正证券股份有限公司如何通过FIX(Financial Information eXchange)协议实现金融交易系统接入的文档。FIX协议是一种国际标准化的通信协议,广泛应用于金融行业,...

    FC协议学习笔记以及target initiator 的配置等

    根据提供的文件信息,我们可以深入探讨FC(Fibre Channel)协议的相关知识点、Target Initiator的配置方法、安装过程、配置环境及实现条件。 ### FC协议概述 #### FC协议速度等级 FC支持多种速度等级,包括1Gb/s、...

Global site tag (gtag.js) - Google Analytics