Get Session List (O2GO, CS)

From FxCodeBaseWiki
Jump to: navigation, search

The example shows how to define if it is required to specify PIN and SubID when logging in for a certain connection.

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;

namespace Sample.LoginInfo
{
    class Program
    {
        static FXCore.CoreAut mCore;
        static FXCore.TradeDeskAut mDesk;        

        static void Main(string[] args)
        {
            try
            {
                if (args.Length < 2)
                {
                    Console.WriteLine("usage: sample.LoginInfo user password [url] [connection]");
                    return;
                }
                string user = args[0];
                string pwd = args[1];
                string url = (args.Length > 2) ? args[2] : "http://www.fxcorporate.com";
                string connection = (args.Length > 3) ? args[3] : "Demo";
                
                //create o2go objects
                mCore = new FXCore.CoreAut();
                mDesk = (FXCore.TradeDeskAut)mCore.CreateTradeDesk("trader");

                //gets the information about available trading sessions.
                FXCore.SessionDescriptorEnumAut sessions = (FXCore.SessionDescriptorEnumAut)mDesk.RetrieveTradeSessions(user, pwd, url, connection);

                //check whether the SubID is required for logging in
                string subID = null ;
                if (sessions.Count == 1)
                    Console.WriteLine("Only one trading session is available, so it is not necessary to specify SubID in the Login* methods.");
                else
                {
                    Console.WriteLine("There are several sessions available:");
                    //print information about available sessions
                    foreach (FXCore.SessionDescriptorAut sess in sessions)
                        Console.WriteLine("Session SubID:{0}; Name:{1}; Description:{2}; RequirePIN:{3}.", sess.SubID, sess.Name, sess.Description, sess.RequirePIN);
                    Console.WriteLine("Please specify a session (type its SubID).");
                    subID = Console.ReadLine();
                }

                //check whether PIN is required for the selected session 
                string pin = null;
                FXCore.SessionDescriptorAut session = subID == null ? (FXCore.SessionDescriptorAut)sessions.Item(1) : FindSession(sessions, subID);
                if (session == null)
                    throw new Exception("Incorrect subid was specified.");
                if (!session.RequirePIN)
                    Console.WriteLine("PIN is not required.");
                else
                {
                    Console.WriteLine("PIN is required. Please type the PIN.");
                    pin = Console.ReadLine();
                }

                //logging in
                Console.WriteLine("Logging in using the following parameters: user='{0}', url='{1}', connection='{2}', subid='{3}', PIN='{4}'...",
                    user, url, connection, subID, pin);
                mDesk.LoginWithSubidPIN(user, pwd, url, connection, subID, pin);
                Console.WriteLine("Logged in.");
                
            }
            catch (Exception e)
            {
                Console.WriteLine("{0}", e.ToString());
            }

             //finalizing
             mDesk.Logout();
        }

        /// <summary>
        /// Search for the session by its subid.
        /// </summary>        
        static FXCore.SessionDescriptorAut FindSession(FXCore.SessionDescriptorEnumAut sessions, string subID)
        {
            foreach (FXCore.SessionDescriptorAut session in sessions)
            {
                if (session.SubID.CompareTo(subID) == 0)
                    return session;
            }
            return null;
        }
    }
}

This Article in Other Languages

Language: English  • español