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); } }
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()); } }
/// <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); //} }
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; }