/* * Copyright 2009-2010 Eric Bruno, Greg Bollella. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * Neither the name of the Book, * "Real-Time Java Programming with Java RTS" * nor the names of its authors may be used to endorse or promote * products derived from this software without specific prior written * permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * See the GNU General Public License version 2 for more details. * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the: * Free Software Foundation, Inc. * 51 Franklin St, Fifth Floor * Boston, MA 02110-1301 USA. */ package com.sun.oss.trader; import com.sun.oss.trader.tradingengine.*; import com.sun.oss.trader.data.*; import joprt.RtThread; import com.jopdesign.sys.GC; import java.io.*; public class Main { static class GCRunner implements Runnable { public GCRunner() { GC.setConcurrent(); } public void run() { for (;;) { GC.gc(); boolean madePeriod = RtThread.currentRtThread().waitForNextPeriod(); if (!madePeriod) { System.out.print('G'); } } } } public Main() { try { // Create the Runnable worker classes // JOPReader reader = new JOPReader(1024); MarketManager marketMgr = new MarketManager(); OrderManager orderMgr = new OrderManager(marketMgr); orderMgr.displayOrderBook(); // Create and start Threads // RtThread readerThread = new RtThread(reader, 10, 1380); RtThread marketThread = new RtThread(marketMgr, 5, 4800); RtThread orderThread = new RtThread(orderMgr, 4, 300000); // create GCRunner here so we have the normal GC up to this point GCRunner gcRunner = new GCRunner(); RtThread gcThread = new RtThread(gcRunner, 1, 330000); System.out.println("Starting mission ..."); RtThread.startMission(); System.out.println("... up and running"); for(;;); } catch ( Exception e ) { e.printStackTrace(); } } public static void main( String[] args ) { Main main = new Main(); } }