コード例 #1
0
        public override void processTick(Symbol symbol, Tick tick)
        {
            if (!partialBars.ContainsKey(symbol))
            {
                partialBars[symbol] = new Bar(tick.price, tick.price, tick.price, tick.price, tick.time);
            }
            partialBars[symbol] = partialBars[symbol].update(tick);
            var processThisTick = system.runOnNewTick() || !lastTickProcessed.ContainsKey(symbol) || lastTickProcessed[symbol] <= tick.time.AddMinutes(-1);

            try {
                if (processThisTick)
                {
                    manager.newTick();
                    if (!isLive)
                    {
                        isLive = true;
                        manager.goLive();
                        system.goLiveDO_NOT_CALL_EXCEPT_FROM_BRIDGE();
                        monitor().goLive(system);
                    }
                    var partialBar = updateBarSpud(symbol);
                    if (Systematic.isLoggingTicks())
                    {
                        LogC.info("processing tick " + symbol + ": bar=" + partialBar + ", tick=" + tick);
                    }
                    system.processTickDO_NOT_CALL_EXCEPT_FROM_BRIDGE(symbol, partialBar, tick);
                    manager.recalculate();
                    lastTickProcessed[symbol] = tick.time;
                }
                monitor().tickProcessed(symbol, tick);
            } catch (Exception e) {
                LogC.info("exception caught in processTick: ", e);
                throw;
            }
        }
コード例 #2
0
ファイル: StatusTracker.cs プロジェクト: TzarIvan/ratel
        void addRow(LiveSystem system)
        {
            var row = table.NewRow();

            systems.Add(row, system);
            insertUnknownRow(row, system);
            plans[system] = new List <Plan>();

            setHeartbeatStatus(row, system, SystemStatus.UNKNOWN);
            setTickStatus(row, system, SystemStatus.UNKNOWN);

            tickTimers[system]      = statusFades(status => setTickStatus(row, system, status));
            heartbeatTimers[system] = statusFades(status => setHeartbeatStatus(row, system, status));

            lastTickProcessed[system] = DateTime.MinValue;

            subscribeSystemHeartbeat(row, system);
            var symbols = convert(list <JMarket>(system.markets()), m => new Symbol(m));

            each(symbols, symbol => {
                try {
                    symbol.subscribe(bar => onTickPublished(row, system, bar.time));
                } catch (Exception ex) {
                    LogC.err("exception caught subscribing to tick data for " + symbol + ", " + system, ex);
                    gui.alertUser("exception caught susbcribing to data for " + symbol + ", " + system + ".\nSkipping... see log for details.");
                }
            });
        }
コード例 #3
0
ファイル: STOClient.cs プロジェクト: TzarIvan/ratel
        public static void Main(string[] args)
        {
            ThreadPool.SetMaxThreads(50, 50);
            STORunner stoRunner    = null;
            var       arguments    = Arguments.arguments(args, jStrings("numInstances", "id", "start", "end", "maxRunHours", "DO_NOT_USE_THIS_OPTION_UNLESS_YOU_ARE_JERIC"));
            var       numInstances = arguments.integer("numInstances");
            var       systemId     = arguments.integer("id");
            var       start        = arguments.get("start", 1);
            var       end          = arguments.containsKey("end") ? arguments.integer("end") : (int?)null;
            var       maxRunMillis = numInstances == 0 ? 0 : (long)(arguments.numeric("maxRunHours") * 3600 * 1000);
            var       noKill       = arguments.get("DO_NOT_USE_THIS_OPTION_UNLESS_YOU_ARE_JERIC", false);

            try {
                stoRunner = new STORunner(numInstances, systemId, start, end, noKill);
                stoRunner.createDirectories();
                var dbServer = stoRunner.startDbServer();
                stoRunner.initialize(maxRunMillis);
                stoRunner.enqueueRequests();
                stoRunner.processResults();
                dbServer.stopServer();
                stoRunner.copyMetrics();
            } catch (Exception e) {
                if (stoRunner != null)
                {
                    stoRunner.killRun(LogC.errMessage("caught exception in Main: ", e));
                }
            }
            Environment.Exit(0);
        }
コード例 #4
0
        public void logAndAlert(string s, Exception e)
        {
            var message = LogC.errMessage(s, e);

            LogC.err(message);
            alertUser(s + ": examine " + LogC.errFile() + "\n" + message);
        }
コード例 #5
0
ファイル: System.cs プロジェクト: TzarIvan/ratel
        public virtual void placeOrder(Order order)
        {
            var place = (forecastMode ? "forecast" : "place");

            LogC.info(place + " order: " + order);
            order.placedBy(this, bars[order.symbol][0].time);
            var symbol = order.symbol;

            Bomb.unless(isActive(), () => "cannot " + place + " an order in a deactivated symbol: " + order);
            if (inClose)
            {
                order.placedOnClose();
            }
            if (forecastMode)
            {
                if (order.canFill(Bomb.missing(bars, symbol)[0].close, true))
                {
                    // bug - if two exits are placed in onClose, they can both be "filled" for the
                    // forecast, which is not what would happen in the actual onClose
                    monitor().orderForecast(this, order);
                }
            }
            else
            {
                Bomb.when(exists(orders(symbol), order.descriptionAndSymbolMatch), () =>
                          "symbol+description must be unique for outstanding orders.  Tried placing: " +
                          order + "\nin:\n" + toShortString(orders(symbol)));
                monitor().orderPlaced(order);
                orders_.get(symbol).Add(order);
            }
        }
コード例 #6
0
        public void testCanFailToRunCompleteSimulation()
        {
            Db.reallyRollback(); // open transaction system details insert (on unrelated  row, jeff hates sqlserver) from DbTestCase causes test failure.
            var gui = new FakeResearchGUI();

            gui.setMarkets(O.list("RE.TEST.TY.1C"));
            var parameters = new Parameters {
                { "ATRLen", 10 },
                { "ATRlong", 100 },
                { "BreakDays", 30 },
                { "FixEquity", 1 },
                { "InitEquity", 6000000 },
                { "LeadBars", 50 },
                { "MaxPyramid", 1 },
                { "Risk", 0.02 },
                { "nATR", 2 },
                { "upATR", 2 },
                { "systemId", 39 } // ok?
            };

            gui.setParameters(parameters);
            gui.setStartDate(date("2001/01/01"));
            gui.setEndDate(date("2001/04/01"));
            gui.runSystem();
            O.wait(() => gui.runButtonEnabled == false);
            O.wait(100, 100, gui.runComplete);
            IsTrue(gui.runButtonEnabled);
            gui.hasMessage("failed");
            LogC.info("done");
        }
コード例 #7
0
ファイル: TestSymbolSpud.cs プロジェクト: TzarIvan/ratel
        public void testSymbolValueLive()
        {
            Log.setFile(@"C:\logs\jefftest");

            SystemTimeSeriesTable.SYSTEM_TS.insert("testone", "ASCII", "ActiveMQ", "somedangtopic");
            AsciiTable.SYSTEM_ASCII.insert("testone", @"\\nysrv37\share\Tools\RightEdge\TransitionTest\TY1C.full.csv", true, 1);
            var manager  = new SpudManager();
            var barSpud  = new BarSpud(manager);
            var barSpud2 = new BarSpud(manager);
            var symbol   = new Symbol("testone");
            var spud     = symbol.doubles(barSpud);
            var spud2    = new Symbol("RE.TEST.TY.1C").doubles(barSpud2);

            manager.newBar();
            barSpud.set(new Bar(1, 3, 1, 2, O.date("2008/08/06")));
            barSpud2.set(new Bar(1, 3, 1, 2, O.date("2008/08/06")));

            manager.newTick();
            spud.doSubscribe();

            barSpud.lastTickedAt(O.date("2008/08/06 11:22:34"));
            spud2.doSubscribe();
            IsTrue(spud2.isDirty());
            symbol.javaSymbol().jmsLive().topic().send("value=97.1|timestamp=2008/08/06 11:22:33|MSTimestamp=2008/06/05 13:10:08");

            Bombs(() => LogC.info("" + spud[0]), "stale");
            symbol.javaSymbol().jmsLive().topic().send("value=97.2|timestamp=2008/08/06 11:22:34|MSTimestamp=2008/06/05 13:10:08");
            O.wait(() => spud[0] == 97.2);
            barSpud.lastTickedAt(O.date("2008/08/06 11:22:35"));
            spud.allowStaleTicks();
            AreEqual(97.2, spud[0]);
            AreEqual(116.140625, spud2[0]);
        }
コード例 #8
0
ファイル: STOClient.cs プロジェクト: TzarIvan/ratel
            public STORunner(int numInstances, int systemId, int start, int?end, bool noKill)
            {
                this.numInstances = numInstances;
                this.systemId     = systemId;
                this.start        = start;
                this.noKill       = noKill;
                details           = SystemDetailsTable.DETAILS.details(systemId);
                this.end          = end.HasValue ? end.Value : details.lastRunNumber();
                writer            = new STOMetricsWriter(details, false);
                STO.populateSymbolsPortfolios(details, out symbols, out portfolios);
                runner = new EC2Runner(systemId + "-" + Dates.yyyyMmDdHhMmSsNoSeparator(Dates.now()));
                LogC.info("checking for completed runs");
                existingRuns = completedRuns();
                var allRunsComplete = true;

                for (var i = this.start; i <= this.end; i++)
                {
                    if (!existingRuns.Contains(i))
                    {
                        allRunsComplete = false;
                        break;
                    }
                }
                if (allRunsComplete)
                {
                    this.numInstances = 0;
                }
                unhandledExceptionProcessor = ((sender, args) => killRun(LogC.errMessage("unhandled exception", (Exception)args.ExceptionObject)));
            }
コード例 #9
0
 void debug(string message)
 {
     if (!toEnd && isAverage && toEnd)
     {
         LogC.debug(message);
     }
 }
コード例 #10
0
ファイル: MainWindow.cs プロジェクト: TzarIvan/ratel
        public MainWindow(string[] unused) : base("NORAD")
        {
            var arguments = Arguments.arguments(unused, o.jStrings("live", "settings"));

            System.Environment.SetEnvironmentVariable("RE_TEST_MODE", "TRUE");
            LogC.useJavaLog = true;
            LogC.info("starting MainWindow.");
            var workbench = new WorkbenchPanel();

            dockManager.Content = workbench;
            var path = Systematic.mainDir().file("dotNET/Gui/Resources/target.ico").path();

            Icon = BitmapFrame.Create(new FileStream(path, FileMode.Open, FileAccess.Read));
            if (arguments.containsKey("settings"))
            {
                if (arguments.get("live", false))
                {
                    workbench.liveButton.doClick();
                }
                else
                {
                    workbench.runButton.doClick();
                }
            }
        }
コード例 #11
0
        public static Simulator run(int systemId, IEnumerable <Symbol> symbols, IEnumerable <QPortfolio> portfolios, int runNumber, BarLoader data, bool dumpParamsOnly, bool shutdown)
        {
            var parameters = new Parameters {
                { "systemId", systemId },
                { "RunMode", (double)RunMode.STO },
                { "RunNumber", runNumber }
            };

            try {
                parameters.runNumber();
                LogC.err("" + parameters);
                if (dumpParamsOnly)
                {
                    return(null);
                }
                var simulator = new Simulator(new SystemArguments(symbols, portfolios, parameters), data, "QUEDGE");
                simulator.processBars();
                if (shutdown)
                {
                    simulator.shutdown();
                }
                else
                {
                    var metrics = simulator.metrics();
                    LogC.verbose(() => "skipping shutdown based on noShutdown parameter.");
                    LogC.verbose(() => toShortString(metrics["ALL"]));
                }
                return(simulator);
            } catch (Exception e) {
                throw Bomb.toss("\nFailed in run " + runNumber + "\nUsing:\n" + parameters + "\n", e);
            }
        }
コード例 #12
0
ファイル: Parameters.cs プロジェクト: TzarIvan/ratel
        public void load()
        {
            if (loaded)
            {
                return;
            }
            loaded = true;
            LogC.verbose(() => "loading parameters");
            var extras = new Dictionary <string, string>();

            if (!has("RunMode") || isRE() || isCloudSTO())
            {
                return;
            }
            if (isSTO())
            {
                extras = stoParameters();
            }
            else if (isLive())
            {
                extras = liveParameters();
            }
            else
            {
                Bomb.toss("unexpected run mode " + get <int>("RunMode"));
            }

            extras["systemId"] = getDirect <string>("systemId");
            data.Clear();
            eachKey(extras, delegate(String k) { data[k] = extras[k]; });
            LogC.verbose(() => "loaded parameters:\n" + this);
        }
コード例 #13
0
ファイル: STOClient.cs プロジェクト: TzarIvan/ratel
            void process(Message message, Dictionary <int, bool> completed, int totalRuns)
            {
                var response = (STOResponse)message.@object();

                runner.received(response);
                var completedRun   = response.runNumber();
                var runTimeMillis  = response.runTimeMillis();
                var completionTime = response.completedAt();
                var isLocal        = response.instanceId().Equals("LOCAL");

                message.delete();
                // Letting message get GC'd, rather than sitting in the thread pool really helps with the Java heap space.
                queueWorkItem(() => {
                    lock (completed) {
                        if (completed.ContainsKey(completedRun))
                        {
                            return;
                        }
                        completed[completedRun] = true;
                        if (!isLocal)
                        {
                            completionTimes.Add(date(completionTime));
                            updateRunsPerMinute(runTimeMillis);
                        }
                    }
                    LogC.info("completed run " + completedRun + paren(completed.Count + "/" + totalRuns));
                    new Topic(CloudMonitor.progressTopic(systemId)).send(new Dictionary <string, object> {
                        { "RunsComplete", completed.Count },
                        { "TotalRuns", totalRuns },
                        { "RunsPerMinute", runsPerMinute },
                    });
                    writeResults(completedRun);
                });
            }
コード例 #14
0
 static void checkMetric(string rMetricName, Metrics.MetricCalculator metric, List values, Csv csv)
 {
     LogC.info("checking metric " + rMetricName);
     checkOne(metric, double.Parse(csv.value("tol1", values)), CURVE_FILE, double.Parse(csv.value("value1", values)));
     checkOne(metric, double.Parse(csv.value("tol2", values)), ANOTHER_FILE, double.Parse(csv.value("value2", values)));
     checkOne(metric, double.Parse(csv.value("tol3", values)), INTRADAY_FILE, double.Parse(csv.value("value3", values)));
 }
コード例 #15
0
ファイル: STOClient.cs プロジェクト: TzarIvan/ratel
 public void enqueueRequests()
 {
     LogC.info("enqueueing requests " + runner.requestQueueName());
     zeroTo(end - start + 1, i => ThreadPool.QueueUserWorkItem(o => enqueueRun(start + i)));
     wait(int.MaxValue, 1000, () => runsQueued == end - start + 1);
     LogC.info("done enqueueing requests " + runner.requestQueueName());
 }
コード例 #16
0
ファイル: FakeOrderTrackerGUI.cs プロジェクト: TzarIvan/ratel
        public void logAndAlert(string s, Exception e)
        {
            var message = LogC.errMessage("failed during simulation run\n", e);

            LogC.err(message);
            alertUser("failed during simulation. examine " + LogC.errFile() + "\n" + message);
        }
コード例 #17
0
        public static void Main(string[] args)
        {
            var arguments = Arguments.arguments(args, jStrings("system", "prefix"));
            var system    = arguments.get("system");
            var prefix    = arguments.get("prefix", PREFIX_DEFAULT);

            LogC.setOut("Tomahawk", Systematic.logsDir().file("Tomahawk." + system + ".log").path(), true);
            LogC.useJavaLog = true;
            LogC.info("running system " + system + ", process " + processId());
            var liveSystems = accept(list <LiveSystem>(MsivLiveHistory.LIVE.liveSystems()), ls => ls.siv().system().Equals(system));

            each(liveSystems, liveSystem => {
                Bomb.when(liveSystem.details().runInNativeCurrency(), () => "not allowed to run live systems in native currency");
                var markets    = list <Market>(liveSystem.markets());
                var symbols    = convert(markets, market => new Symbol(market.name(), market.bigPointValue()));
                var systemId   = liveSystem.id();
                var parameters = new Parameters {
                    { "systemId", systemId },
                    { "RunMode", (double)RunMode.LIVE }
                };
                Bomb.when(isEmpty(symbols), () => "No markets for " + systemId);
                var systemArguments = new SystemArguments(symbols, parameters);

                var start = date(systemArguments.interval().isDaily() ? BloombergSecurity.BBG_START_HISTORICAL : BloombergSecurity.BBG_START_INTRADAY);
                if (parameters.has("DaysBack"))
                {
                    start = now().AddDays(-parameters.get <int>("DaysBack"));
                }
                var loader    = new SystemDbBarLoader(liveSystem.details().interval(), symbols, start);
                var simulator = new Simulator(systemArguments, loader, prefix);
                simulator.processBars();
                simulator.goLive();
            });
            sleep(Int32.MaxValue);
        }
コード例 #18
0
ファイル: MainWindow.cs プロジェクト: TzarIvan/ratel
        public MainWindow(string[] args) : base("Recon")
        {
            LogC.info("started MainWindow.");
            LogC.useJavaLog = true;
            var arguments = Arguments.arguments(args, O.jStrings("prefix", "pane"));

            OrderTable.prefix = arguments.get("prefix", "TOMAHAWK");
            var pane = arguments.get("pane", "all");

            dockManager.Content = dockPane;
            addPanels(dockPane, pane);
            Title = "Recon " + OrderTable.prefix;
            if (DEVELOPERS.Contains(O.username()))
            {
                return;
            }
            while (!UsersTable.USERS.isLoggedIn(O.username()))
            {
                var result = MessageBox.Show(
                    "You are not logged in to Bloomberg, or do not have permission to view data from the Server API.  Press OK to try again, Cancel to close Recon.",
                    "Please Log In To Bloomberg",
                    MessageBoxButton.OKCancel,
                    MessageBoxImage.Error,
                    MessageBoxResult.OK
                    );
                if (result.Equals(MessageBoxResult.Cancel))
                {
                    O.systemExit(0);
                }
            }
        }
コード例 #19
0
ファイル: MainWindow.cs プロジェクト: TzarIvan/ratel
        static bool usePane(string userPane, string potential)
        {
            var result = "all".Equals(userPane) || userPane.Equals(potential);

            LogC.info("usePane " + potential + " " + result);
            return(result);
        }
コード例 #20
0
ファイル: STOServer.cs プロジェクト: TzarIvan/ratel
        public static void Main(string[] args)
        {
            Directory.CreateDirectory(@"E:\logs");
            LogC.setOut("STOServer", @"E:\logs\STOServer." + processId() + ".log", true);
            LogC.setErr(@"E:\logs\STOServer." + processId() + ".error.log");
            AppDomain.CurrentDomain.UnhandledException += handleUncaughtExceptions;
            S3Cache.setDefaultSqsDbMode(true);
            if (!(hostname().StartsWith("NY") || hostname().StartsWith("LN")))
            {
                QHttpClient.turnOffProxy();
            }
            var runner = EC2Runner.fromUserData();

            S3Cache.setS3Cache(runner.s3Cache());
            var lastRunTime = 120;

            while (trueDat())
            {
                info("lastRunTime: " + lastRunTime);
                STORequest request = null;
                try {
                    lastRunTime = processNextMessage(runner, lastRunTime, out request);
                } catch (Exception e) {
                    LogC.err("failed " + request, e);
                    LogC.info("failed " + request, e);
                    continue;
                }
                info("finished " + request);
            }
        }
コード例 #21
0
ファイル: CurveFiles.cs プロジェクト: TzarIvan/ratel
        public static void Main(string[] args)
        {
            Log.doNotDebugSqlForever();
            var startTime    = now();
            var arguments    = Arguments.arguments(args, jStrings("systemId", "runs", "start", "end", "markets", "skipExisting"));
            var skipExisting = arguments.get("skipExisting", false);
            var systemId     = arguments.get("systemId", -1);
            var details      = SystemDetailsTable.DETAILS.details(systemId);
            var runs         = arguments.containsKey("runs")
                ? convert(split(",", arguments.get("runs")), run => int.Parse(run))
                : seq(arguments.integer("start"), arguments.integer("end"));
            var curvesDir = sto.STO.fromId(systemId).curvesDir();
            var markets   = arguments.containsKey("markets") ? split(",", arguments.@string("markets")) : allMarkets(details);

            ThreadPool.SetMaxThreads(200, 200);
            each(runs, run => each(markets, market => {
                var directory = curvesDir.directory(new[] { details.siv().svimName("_", market, "") });
                var runFile   = directory.file("run_" + run + ".bin");
                if (skipExisting && runFile.exists())
                {
                    info("skipped " + runFile.path());
                    return;
                }
                var path_ = runFile.path();
                queueWorkItem(() => { readFromS3(systemId, market, run, path_); LogC.info("wrote " + path_); });
            }));
            waitForAllWorkItems(6000, 100);
            LogC.info("took " + now().Subtract(startTime).TotalSeconds + " seconds.");
        }
コード例 #22
0
ファイル: Parameters.cs プロジェクト: TzarIvan/ratel
 public void logSystemCreation(SystemArguments arguments)
 {
     if (has("systemId"))
     {
         LogC.consoleOut("running id(" + get <int>("systemId") + "), system(" + arguments.siv().system() + ")");
     }
     else
     {
         LogC.consoleOut("running in research mode(" + systemClassName() + ")");
     }
     if (reDebug())
     {
         LogC.consoleOut("in DEBUG mode (slow)");
     }
     if (isLive())
     {
         LogC.consoleOut("PV = " + pvName());
     }
     else if (isSTO())
     {
         LogC.consoleOut("STO = " + paren(commaSep(stoDir(), stoId(), runNumber())));
     }
     else
     {
         logParameters();
     }
 }
コード例 #23
0
        public static bool RegisterHotKey(this HotKeyData keyData, Form parent)
        {
            if (!keyData.UseHotKey)
            {
                return(true);
            }

            // update HotKey
            User32HotKey.KeyModifiers modifiers = User32HotKey.KeyModifiers.None;

            if (keyData.KeyData.HasFlag(Keys.Control))
            {
                modifiers |= User32HotKey.KeyModifiers.Control;
            }
            if (keyData.KeyData.HasFlag(Keys.Shift))
            {
                modifiers |= User32HotKey.KeyModifiers.Shift;
            }
            if (keyData.KeyData.HasFlag(Keys.Alt))
            {
                modifiers |= User32HotKey.KeyModifiers.Alt;
            }
            if (keyData.KeyData.HasFlag(Keys.LWin) || keyData.KeyData.HasFlag(Keys.RWin))
            {
                modifiers |= User32HotKey.KeyModifiers.Windows;
            }

            Keys key = (Keys)((int)keyData.KeyData & 0x0000FFFF); //filter out modifiers

            LogC.WriteLine("RegisterHotKey: " + keyData);
            return(User32HotKey.RegisterHotKey(parent.Handle, keyData.AppId, modifiers, key));
        }        //end RegisterHotKey
コード例 #24
0
ファイル: STOMetricResults.cs プロジェクト: TzarIvan/ratel
 public IEnumerator GetEnumerator()
 {
     LogC.info("GetEnumerator called"); foreach (var run in runs())
     {
         LogC.info("yielding next"); yield return(cache.get(run));
     }
 }
コード例 #25
0
        public CloudSTOPanel()
        {
            var panel = new QDockPanel();

            Content      = panel;
            Loaded      += initialize;
            instanceGrid = new QDataTableGrid(loadInstanceRow, unloadInstanceRow);
            var controls = new QDockPanel();

            systemIdBox = new QComboBox("-1", resetInstanceId, true)
            {
                MinWidth = 80, IsTextSearchEnabled = true, IsSynchronizedWithCurrentItem = false
            };
            controls.add(systemIdBox, Dock.Left);
            var grid = new QGrid();

            grid.addColumns(4);
            instancesLabel = label("");
            grid.add(instancesLabel, 0);
            redGreenLabel = label("");
            grid.add(redGreenLabel, 1);
            summaryLabel = label("");
            grid.add(summaryLabel, 2);
            completionTimeLabel = label("");
            grid.add(completionTimeLabel, 3);
            controls.add(grid, Dock.Left);
            controls.add(new QButton("Refresh System Ids", refreshSystemIds), Dock.Left);
            panel.add(controls, Dock.Top);
            panel.add(instanceGrid, Dock.Top);
            LogC.info("starting cloud STO tracker");
            tracker = new CloudSTOTracker(this);
        }
コード例 #26
0
 public bool StartWatching()
 {
     Directory.CreateDirectory(@"C:\logs");
     LogC.setOut("LiveData", @"C:\logs\QLiveData" + Process.GetCurrentProcess().Id + ".log", true);
     watching = true;
     return(true);
 }
コード例 #27
0
ファイル: MetricFiles.cs プロジェクト: TzarIvan/ratel
        public static void Main(string[] arguments)
        {
            var args    = Arguments.arguments(arguments, jStrings("systemId", "run", "symbol"));
            var results = readFromS3(args.integer("systemId"), args.integer("run"));

            LogC.info(toShortString(results[args.@string("symbol")]));
        }
コード例 #28
0
 void killIfNeeded(Process process)
 {
     LogC.info("killing " + O.the(O.accept(processes, entry => entry.Value.Equals(process))).Key);
     if (!process.HasExited)
     {
         process.Kill();
     }
 }
コード例 #29
0
 static object loggedError(string message, Exception e)
 {
     LogC.setErr(@"c:\QExcel.log");
     LogC.err(message, e);
     message += ".  check " + LogC.errFile() + " to see stack trace.";
     LogC.setErr(null);
     return(message);
 }
コード例 #30
0
 void safeProcessUpdate(ObservationListener listener, Date date, double value)
 {
     try {
         listener.onUpdate(date, value);
     } catch (Exception e) {
         LogC.err(symbol.name + " failed processing observation " + ymdHuman(date) + ": " + value, e);
     }
 }
コード例 #31
0
ファイル: RabbitListener.cs プロジェクト: DropZone/LogC
 protected override void Connection_Disconnected(object sender, LogC.RabbitAmqp.ConnectionEventArgs e)
 {
     this.HaltSubscription();
     base.Connection_Disconnected(sender, e);
 }