Example #1
0
        static void Main(string[] args)
        {
            _dpf = DomainParticipantFactory.Instance;
            ErrorHandler.checkHandle(_dpf, "Domain Participant Factory");

            _dp = _dpf.CreateParticipant(Domain);

            //Initialize QOS
            pQos  = new PublisherQos();
            dwQos = new DataWriterQos();

            fdmDataType = new FDMTypeSupport();
            string     FDMDATATypeName = fdmDataType.TypeName;
            ReturnCode status          = fdmDataType.RegisterType(_dp, FDMDATATypeName);

            ErrorHandler.checkStatus(status, "FDMDATA: Cannot Register Type");


            //Create FDMDATA Topic
            fdmDataTopic = _dp.FindTopic("FDMDATA", Duration.FromMilliseconds(1000));
            if (fdmDataTopic == null)
            {
                fdmDataTopic = _dp.CreateTopic("FDMDATA", FDMDATATypeName);
            }
            ErrorHandler.checkHandle(fdmDataTopic, "Cannot Create Topic FDMDATA");

            //Get Publisher QOS and Set Partition Name
            _dp.GetDefaultPublisherQos(ref pQos);
            pQos.Partition.Name    = new String[1];
            pQos.Partition.Name[0] = PartitionName;

            //Create Subscriber for FDMDATA Topic
            Publisher = _dp.CreatePublisher(pQos);
            ErrorHandler.checkHandle(Publisher, "Cannot Create FDMDATA Publisher");

            //Get Data Writer QOS and Set History Depth
            Publisher.GetDefaultDataWriterQos(ref dwQos);
            ErrorHandler.checkHandle(dwQos, "Cannot get Data Writer Qos");
            dwQos.History.Depth    = 5;
            dwQos.Reliability.Kind = ReliabilityQosPolicyKind.BestEffortReliabilityQos;


            //Create DataReader for FDMDATA Topic
            parentWriter = Publisher.CreateDataWriter(fdmDataTopic, dwQos);
            ErrorHandler.checkHandle(parentWriter, "Cannot Create FDMDATA Data Writer");

            //Narrow abstract parentWriter into its typed representative
            fdmDataWriter = parentWriter as FDMDataWriter;
            ErrorHandler.checkHandle(fdmDataWriter, "Cannot Narrow FDMDATA Data Writer");

            fdmData = new FDM();
            while (true)
            {
                StartPublish();
                Console.WriteLine("Publishing data! ");
                Thread.Sleep(10);
            }
        }
Example #2
0
        static void Main(string[] args)
        {
            _dpf = DomainParticipantFactory.Instance;
            ErrorHandler.checkHandle(_dpf, "Domain Participant Factory");

            _dp = _dpf.CreateParticipant(Domain);

            //Initialize QOS
            sQos  = new SubscriberQos();
            drQos = new DataReaderQos();

            fdmDataType = new FDMTypeSupport();
            string     FDMDATATypeName = fdmDataType.TypeName;
            ReturnCode status          = fdmDataType.RegisterType(_dp, FDMDATATypeName);

            ErrorHandler.checkStatus(status, "FDMDATA: Cannot Register Type");

            //Create FDMDATA Topic
            fdmDataTopic = _dp.FindTopic("FDMDATA", Duration.FromMilliseconds(1000));
            if (fdmDataTopic == null)
            {
                fdmDataTopic = _dp.CreateTopic("FDMDATA", FDMDATATypeName);
            }
            ErrorHandler.checkHandle(fdmDataTopic, "Cannot Create Topic FDMDATA");

            //Get Subscriber QOS and Set Partition Name
            _dp.GetDefaultSubscriberQos(ref sQos);
            sQos.Partition.Name    = new String[1];
            sQos.Partition.Name[0] = PartitionName;

            //Create Subscriber for FDMDATA Topic
            Subscriber = _dp.CreateSubscriber(sQos);
            ErrorHandler.checkHandle(Subscriber, "Cannot Create FDMDATA Subscriber");

            //Get Data Reader QOS and Set History Depth
            Subscriber.GetDefaultDataReaderQos(ref drQos);
            ErrorHandler.checkHandle(drQos, "Cannot get Data Reader Qos");
            drQos.History.Depth    = 5;
            drQos.Reliability.Kind = ReliabilityQosPolicyKind.BestEffortReliabilityQos;

            //Create DataReader for FDMDATA Topic
            parentReader = Subscriber.CreateDataReader(fdmDataTopic, drQos);
            ErrorHandler.checkHandle(parentReader, "Cannot Create FDMDATA Data Reader");

            //Narrow abstract parentReader into its typed representative
            fdmDataReader = parentReader as FDMDataReader;
            ErrorHandler.checkHandle(fdmDataReader, "Cannot Narrow FDMDATA Data Reader");
            // drQos.Durability.Kind = DurabilityQosPolicyKind.TransientLocalDurabilityQos;

            fdmData = new FDM();
            //Rececieve Loop
            while (true)
            {
                StartReceive();

                Console.WriteLine("abc: " + fdmData.aa.ToString());
            }
        }
Example #3
0
        /// <summary>
        /// Start Receiving
        /// </summary>
        static void StartReceive()
        {
            _stopReceive = false;


            //while (!_stopReceive)
            //{
            var msg        = new FDM[5];
            var sampleInfo = new SampleInfo[5];

            //InstanceHandle[] InstanceHandles = null;
            //FDMDATAReader.GetMatchedSubscriptions(ref InstanceHandles);
            //MessageBox.Show("Matched: " + InstanceHandles.GetLength(0));
            LivelinessChangedStatus aliveStatus = null;
            var returnCode = fdmDataReader.GetLivelinessChangedStatus(ref aliveStatus);

            ErrorHandler.checkStatus(returnCode, "FDM SUB : Get liveliness");
            if (aliveStatus.AliveCount > 0)
            {
                // FDM is on
                IsAlive = true;
            }
            else
            {
                // FDM is off
                IsAlive = false;
            }

            //Register FDMDATA (pre-allocating resources for it)
            //InstanceHandle cmdHandle = FDMDATAReader.RegisterInstance(msg);

            //MessageBox.Show("Data Sent: Start: " + msg.Start);
            // Take Data from FDM and populate into temporary MSG array
            ReturnCode status = fdmDataReader.Take(ref msg, ref sampleInfo);

            ErrorHandler.checkStatus(status, "Unable to Read : FDMDATA");
            //Console.WriteLine(status.ToString());
            // Copy only latest data to FdmData variable if some Data has been read
            if (status == ReturnCode.Ok)
            {
                fdmData = msg[0];
            }

            Thread.Sleep(10);
            //}
        }
Example #4
0
    public static void Main()
    {
        // Option data
        double expiry     = 0.25;
        double strike     = 10.0;
        double volatility = 0.30;
        double interest   = 0.06;
        double dividend   = 0.0;
        double truncation = 5 * strike; // Magic number

        /* // P = 5.84..
         * double expiry = 0.25;
         * double strike = 65.0;
         * double volatility = 0.30;
         * double interest = 0.08;
         * double dividend = 0.0;
         * double truncation = 5 * strike; // Magic number
         */

        Pde_BS pde = new Pde_BS(expiry, strike, volatility, interest, dividend, truncation);

        // Numerical data
        int J  = 325;
        int NT = 300 * 300;

        Console.WriteLine("Explicit method, be patient ...");

        // Create the mesh
        Mesher1D        mesh = new Mesher1D(0.0, truncation, expiry);
        Vector <double> xarr = new Vector <double>(mesh.xarr(J));
        Vector <double> tarr = new Vector <double>(mesh.tarr(NT));

        FDM         fdm  = new FDM(pde);
        FDMDirector fdir = new FDMDirector(fdm, xarr, tarr);

        fdir.Start();

        printOneExcel(xarr, fdir.current(), "Value");     // Display in Excel
    }
 public FDMDirector(FDM fdScheme, Vector <double> xmesh, Vector <double> tmesh)
 {
     fdm  = fdScheme;
     xarr = xmesh;
     tarr = tmesh;
 }