private bool parseCommandLine(String[] args)
        {
            for (int i = 0; i < args.Length; ++i)
            {
                if (string.Compare(args[i], "-s", true) == 0)
                {
                    d_securities.Add(args[i + 1]);
                }
                else if (string.Compare(args[i], "-f", true) == 0)
                {
                    d_field       = args[i + 1];
                    d_fieldAsName = Name.GetName(d_field);
                }
                else if (string.Compare(args[i], "-c", true) == 0)
                {
                    String credential = args[i + 1];
                    int    idx        = credential.IndexOf(':');
                    d_uuids.Add(
                        int.Parse(credential.Substring(0, idx)));
                    d_programAddresses.Add(credential.Substring(idx + 1));
                }
                else if (string.Compare(args[i], "-ip", true) == 0)
                {
                    d_host = args[i + 1];
                }
                else if (string.Compare(args[i], "-p", true) == 0)
                {
                    d_port = int.Parse(args[i + 1]);
                }
                else if (string.Compare(args[i], "-h", true) == 0)
                {
                    printUsage();
                    return(false);
                }
            }

            if (d_uuids.Count <= 0)
            {
                System.Console.WriteLine("No uuids were specified");
                return(false);
            }

            if (d_uuids.Count != d_programAddresses.Count)
            {
                System.Console.WriteLine("Invalid number of program addresses provided");
            }

            if (d_securities.Count <= 0)
            {
                d_securities.Add("MSFT US Equity");
            }

            foreach (String security in d_securities)
            {
                d_subscriptions.Add(new Subscription(security, d_field, "",
                                                     new CorrelationID(security)));
            }
            return(true);
        }
        private void sendEqsDataRequest(Session session)
        {
            Service refDataService = session.GetService("//blp/refdata");
            Request request        = refDataService.CreateRequest("BeqsRequest");

            request.Set("screenName", d_screenName);
            request.Set("screenType", Name.GetName(d_screenType));

            System.Console.WriteLine("Sending Request: " + request);
            session.SendRequest(request, null);
        }
        public ServerMode_EntitlementsVerificationSubscriptionTokenExample()
        {
            d_host        = "localhost";
            d_port        = 8194;
            d_field       = "BEST_BID1";
            d_fieldAsName = Name.GetName(d_field);
            d_appName     = string.Empty;

            d_securities    = new List <string>();
            d_identities    = new List <Identity>();
            d_tokens        = new List <string>();
            d_subscriptions = new System.Collections.Generic.List <Subscription>();
        }
        public EntitlementsVerificationSubscriptionExample()
        {
            d_host        = "localhost";
            d_port        = 8194;
            d_field       = "BEST_BID1";
            d_fieldAsName = Name.GetName(d_field);

            d_securities       = new List <string>();
            d_uuids            = new List <int>();
            d_identities       = new List <Identity>();
            d_programAddresses = new List <string>();
            d_subscriptions    = new System.Collections.Generic.List <Subscription>();
        }
 public Msg1RecoveryExample()
 {
     d_port        = 8194;
     d_hosts       = new ArrayList();
     d_startType   = SERIAL;
     d_startSerial = 0;
     d_endType     = TIME;
     d_endTime     = new Datetime(DateTime.Now);
     d_filter      = FilterChoiceType.LAST_UPDATE_ONLY;
     d_eid         = 0;
     d_eidProvided = false;
     d_requestType = STATUS_INFO;
     d_authOption  = "LOGON";
     d_dsName      = "";
     d_name        = "";
 }
        /*
         * static void PerformRequest(DateTime date, List<string> secs) {
         *  Console.WriteLine( date.ToString("yyyy-M-d") );
         *  foreach (string sec in secs) {
         *      Console.WriteLine("    " + sec);
         *  }
         *  Console.WriteLine();
         * }
         */

        void PerformRequest(DateTime date, List <string> secs)
        {
            if (secs.Count == 0)
            {
                Console.Error.WriteLine("Request for date " + date + " had 0 securities");
                return;
            }

            Request request    = refDataService.CreateRequest("HistoricalDataRequest");
            Element securities = request.GetElement("securities");

            foreach (string s in secs)
            {
                securities.AppendValue(s);
            }
            Element fields = request.GetElement("fields");

            fields.AppendValue("PX_LAST"); // close?
            //fields.AppendValue("LAST_PRICE");   // last trade price
            request.Set("startDate", date.ToString("yyyyMMdd"));
            request.Set("endDate", date.ToString("yyyyMMdd"));
            request.Set("periodicityAdjustment", "ACTUAL");
            request.Set("periodicitySelection", "DAILY");
            request.Set("nonTradingDayFillOption", "ALL_CALENDAR_DAYS"); // report when not trading
            request.Set("nonTradingDayFillMethod", "PREVIOUS_VALUE");    // use last value when not trading

            //request.Set("pricingOption", "PRICING_OPTION_YIELD");

            request.Set("maxDataPoints", 40000);
            //request.Set("returnEids", true);  // ?? Needed

            System.Console.Error.WriteLine("Sending Request: " + request);
            session.SendRequest(request, null);

            // following code from:
            // http://stackoverflow.com/questions/12315754/bloomberg-net-api-response-data-for-multiple-securities
            while (true)
            {
                Event eventObj = session.NextEvent();
                foreach (Message msg in eventObj)
                {
                    if (msg.MessageType.Equals(Name.GetName("HistoricalDataResponse")))
                    {
                        if (msg.HasElement("securityData"))
                        {
                            Element secData = msg.GetElement("securityData");

                            String secId = secData.GetElementAsString("security"); // AUD curncy...
                            //int seqNum = secData.GetElementAsInt32("sequenceNumber");  // index in secs
                            if (secData.HasElement("fieldData"))                   //ARRAY!
                            {
                                Element fieldDataArray = secData.GetElement("fieldData");
                                //System.Console.Error.WriteLine("fieldDataArray has " +  fieldDataArray.NumValues + " elements");
                                for (int i = 0; i < fieldDataArray.NumValues; i++)
                                {
                                    Element  fieldData = fieldDataArray.GetValueAsElement(i); // "fieldData not array
                                    Datetime d         = fieldData.GetElementAsDate("date");
                                    if (fieldData.HasElement("PX_LAST"))
                                    {
                                        double yield = fieldData.GetElementAsFloat64("PX_LAST");

                                        // output price
                                        System.Console.WriteLine(secId + "," + d.Year + "-" + d.Month + "-" + d.DayOfMonth + "," + yield);
                                    }
                                    else
                                    {
                                        // output missing price
                                        System.Console.WriteLine(secId + "," + d.Year + "-" + d.Month + "-" + d.DayOfMonth + ",");
                                    }
                                }
                            }
                            else
                            {
                                System.Console.Error.WriteLine("HistoricalDataResponse for " + secId + " had no fieldData[] element");
                                System.Console.Error.WriteLine("Full Msg: " + msg.AsElement);
                                Environment.Exit(2);
                            }
                        }
                        else
                        {
                            System.Console.Error.WriteLine("HistoricalDataResponse had no securityData element");
                            System.Console.Error.WriteLine("Full Msg: " + msg.AsElement);
                            Environment.Exit(2);
                        }
                    }
                    else
                    {
                        System.Console.Error.WriteLine("Received Msg: " + msg.AsElement);
                    }
                }
                if (eventObj.Type == Event.EventType.RESPONSE)
                {
                    break;
                }
            }
        }
        private bool parseCommandLine(String[] args)
        {
            for (int i = 0; i < args.Length; ++i)
            {
                if (string.Compare(args[i], "-s", true) == 0 &&
                    i + 1 < args.Length)
                {
                    d_securities.Add(args[++i]);
                }
                else if (string.Compare(args[i], "-f", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_field       = args[++i];
                    d_fieldAsName = Name.GetName(d_field);
                }
                else if (string.Compare(args[i], "-a", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_appName = args[++i];
                }
                else if (string.Compare(args[i], "-t", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_tokens.Add(args[++i]);
                }
                else if (string.Compare(args[i], "-ip", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_host = args[++i];
                }
                else if (string.Compare(args[i], "-p", true) == 0 &&
                         i + 1 < args.Length)
                {
                    int outPort = 0;
                    if (int.TryParse(args[++i], out outPort))
                    {
                        d_port = outPort;
                    }
                }
                else if (string.Compare(args[i], "-h", true) == 0)
                {
                    printUsage();
                    return(false);
                }
            }

            if (d_appName.Length == 0)
            {
                System.Console.WriteLine("No server side Application Name were specified");
                printUsage();
                return(false);
            }

            if (d_tokens.Count <= 0)
            {
                System.Console.WriteLine("No tokens were specified");
                printUsage();
                return(false);
            }

            if (d_securities.Count <= 0)
            {
                d_securities.Add("MSFT US Equity");
            }

            foreach (String security in d_securities)
            {
                d_subscriptions.Add(new Subscription(security, d_field, "",
                                                     new CorrelationID(security)));
            }
            return(true);
        }
        private bool parseCommandLine(string[] args)
        {
            for (int i = 0; i < args.Length; ++i)
            {
                if (string.Compare(args[i], "-s", true) == 0 &&
                    i + 1 < args.Length)
                {
                    d_requestType = REPLAY;
                    int    startSerial = 0;
                    string startArg    = args[++i];
                    if (int.TryParse(startArg, out startSerial))
                    {
                        d_startType   = SERIAL;
                        d_startSerial = startSerial;
                    }
                    else
                    {
                        try
                        {
                            d_startTime = new Datetime(Convert.ToDateTime(startArg));
                            d_startType = TIME;
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Error: '{0}' is not in the proper Datetime format.", startArg);
                            printUsage();
                            return(false);
                        }
                    }
                }
                else if (string.Compare(args[i], "-e", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_requestType = REPLAY;
                    int    endSerial = 0;
                    string endArg    = args[++i];
                    if (int.TryParse(endArg, out endSerial))
                    {
                        d_endType   = SERIAL;
                        d_endSerial = endSerial;
                    }
                    else
                    {
                        try
                        {
                            d_endTime = new Datetime(Convert.ToDateTime(endArg));
                            d_endType = TIME;
                        }
                        catch (FormatException)
                        {
                            Console.WriteLine("Error: '{0}' is not in the proper Datetime format.", endArg);
                            printUsage();
                            return(false);
                        }
                    }
                }
                else if (string.Compare(args[i], "-f", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_requestType = REPLAY;
                    string filter = args[++i];
                    try
                    {
                        d_filter = (FilterChoiceType)Enum.Parse(d_filter.GetType(), filter, true);
                    }
                    catch (ArgumentException)
                    {
                        Console.WriteLine("Error: '{0}' is not a supported filter type.", filter);
                        printUsage();
                        return(false);
                    }
                }
                else if (string.Compare(args[i], "-eid") == 0 &&
                         i + 1 < args.Length)
                {
                    string eidArg = args[++i];
                    if (int.TryParse(eidArg, out d_eid))
                    {
                        d_eidProvided = true;
                    }
                    else
                    {
                        Console.WriteLine("Error: '{0}' is not an integer", eidArg);
                        printUsage();
                        return(false);
                    }
                }
                else if (string.Compare(args[i], "-ip", true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_hosts.Add(args[++i]);
                }
                else if (string.Compare(args[i], "-p", true) == 0 &&
                         i + 1 < args.Length)
                {
                    int outPort = 0;
                    if (int.TryParse(args[++i], out outPort))
                    {
                        d_port = outPort;
                    }
                }
                else if (string.Compare("-auth", args[i], true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_authOption = args[++i].Trim();
                }
                else if (string.Compare("-ds", args[i], true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_dsName = args[++i].Trim();
                }
                else if (string.Compare("-n", args[i], true) == 0 &&
                         i + 1 < args.Length)
                {
                    d_name = args[++i].Trim();
                }
                else if (string.Compare(args[i], "-h", true) == 0)
                {
                    printUsage();
                    return(false);
                }
                else
                {
                    Console.WriteLine("Error: unknown argument '{0}'", args[i]);
                    printUsage();
                    return(false);
                }
            }

            // check for application name
            if ((d_authOption == "APPLICATION" || d_authOption == "USER_APP") && (d_name == ""))
            {
                System.Console.WriteLine("Application name cannot be NULL for application authorization.");
                printUsage();
                return(false);
            }
            if (d_authOption == "USER_DS_APP" && (d_name == "" || d_dsName == ""))
            {
                System.Console.WriteLine("Application or DS name cannot be NULL for application authorization.");
                printUsage();
                return(false);
            }
            // check for Directory Service name
            if ((d_authOption == "DIRSVC") && (d_dsName == ""))
            {
                System.Console.WriteLine("Directory Service property name cannot be NULL for DIRSVC authorization.");
                printUsage();
                return(false);
            }

            // handle default arguments
            if (d_hosts.Count == 0)
            {
                d_hosts.Add("localhost");
            }

            return(true);
        }
        void ProcessFields(Message msg)
        {
            String delimiter = "\t";

            //Print out the date column header
            System.Console.Write("DATE" + delimiter + delimiter);

            // Print out the field column headers
            for (int k = 0; k < d_fields.Count; k++)
            {
                System.Console.Write(d_fields[k].ToString() + delimiter);
            }
            System.Console.Write("\n\n");

            Element securityData = msg.GetElement(SECURITY_DATA);
            Element fieldData    = securityData.GetElement(FIELD_DATA);

            //Iterate through all field values returned in the message
            if (fieldData.NumValues > 0)
            {
                for (int j = 0; j < fieldData.NumValues; j++)
                {
                    Element element = fieldData.GetValueAsElement(j);

                    //Print out the date
                    Datetime date = element.GetElementAsDatetime(DATE);
                    System.Console.Write(date.DayOfMonth + "/" + date.Month + "/" + date.Year + delimiter);

                    //Check for the presence of all the fields requested
                    for (int k = 0; k < d_fields.Count; k++)
                    {
                        String temp_field_str = d_fields[k].ToString();
                        if (element.HasElement(temp_field_str))
                        {
                            Element temp_field     = element.GetElement(temp_field_str);
                            Name    TEMP_FIELD_STR = new Name(temp_field_str);

                            int datatype = temp_field.Datatype.GetHashCode();

                            //Extract the value dependent on the dataype and print to the console
                            switch (datatype)
                            {
                            case (int)DataType.BOOL:    //Bool
                            {
                                bool field1;
                                field1 = element.GetElementAsBool(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }

                            case (int)DataType.CHAR:    //Char
                            {
                                char field1;
                                field1 = element.GetElementAsChar(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }

                            case (int)DataType.INT32:    //Int32
                            {
                                Int32 field1;
                                field1 = element.GetElementAsInt32(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }

                            case (int)DataType.INT64:    //Int64
                            {
                                Int64 field1;
                                field1 = element.GetElementAsInt64(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }

                            case (int)DataType.FLOAT32:    //Float32
                            {
                                float field1;
                                field1 = element.GetElementAsFloat32(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }

                            case (int)DataType.FLOAT64:    //Float64
                            {
                                double field1;
                                field1 = element.GetElementAsFloat64(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }

                            case (int)DataType.STRING:    //String
                            {
                                String field1;
                                field1 = element.GetElementAsString(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }

                            case (int)DataType.DATE:    //Date
                            {
                                Datetime field1;
                                field1 = element.GetElementAsDatetime(TEMP_FIELD_STR);
                                System.Console.Write(field1.Year + '/' + field1.Month + '/' + field1.DayOfMonth + delimiter);
                                break;
                            }

                            case (int)DataType.TIME:    //Time
                            {
                                Datetime field1;
                                field1 = element.GetElementAsDatetime(TEMP_FIELD_STR);
                                System.Console.Write(field1.Hour + '/' + field1.Minute + '/' + field1.Second + delimiter);
                                break;
                            }

                            case (int)DataType.DATETIME:    //Datetime
                            {
                                Datetime field1;
                                field1 = element.GetElementAsDatetime(TEMP_FIELD_STR);
                                System.Console.Write(field1.Year + '/' + field1.Month + '/' + field1.DayOfMonth + '/');
                                System.Console.Write(field1.Hour + '/' + field1.Minute + '/' + field1.Second + delimiter);
                                break;
                            }

                            default:
                            {
                                String field1;
                                field1 = element.GetElementAsString(TEMP_FIELD_STR);
                                System.Console.Write(field1 + delimiter);
                                break;
                            }
                            } //end of switch
                        }     //end of if
                        System.Console.WriteLine("");
                    }         //end of for
                }             //end of for
            }                 //end of if
        }                     //end of method
 private void ParseCommandLine(string[] args)
 {
     for (int i = 0; i < args.Length; ++i)
     {
         if (string.Compare("-r", args[i], true) == 0 && i + 1 < args.Length)
         {
             d_requestType = Name.GetName(args[++i]);
         }
         else if (string.Compare("-s", args[i], true) == 0 && i + 1 < args.Length)
         {
             d_queryString = args[++i];
         }
         else if (string.Compare("-ip", args[i], true) == 0 && i + 1 < args.Length)
         {
             d_host = args[++i];
         }
         else if (string.Compare("-p", args[i], true) == 0 && i + 1 < args.Length)
         {
             d_port = int.Parse(args[++i]);
         }
         else if (string.Compare("-m", args[i], true) == 0 && i + 1 < args.Length)
         {
             d_maxResults = int.Parse(args[++i]);
         }
         else if (string.Compare("-f", args[i], true) == 0 && i + 1 < args.Length)
         {
             string[] tokens = args[++i].Split('=');
             if (tokens.Length == 2)
             {
                 d_filters[tokens[0].Trim()] = tokens[1].Trim();
             }
         }
         else if (string.Compare("-auth", args[i], true) == 0 && i + 1 < args.Length)
         {
             ++i;
             if (string.Compare(AUTH_OPTION_NONE, args[i], true) == 0)
             {
                 d_authOptions = null;
             }
             else if (string.Compare(AUTH_OPTION_USER, args[i], true) == 0)
             {
                 d_authOptions = AUTH_USER;
             }
             else if (string.Compare(
                          AUTH_OPTION_APP,
                          0,
                          args[i],
                          0,
                          AUTH_OPTION_APP.Length,
                          true) == 0)
             {
                 d_authOptions = AUTH_APP_PREFIX
                                 + args[i].Substring(AUTH_OPTION_APP.Length);
             }
             else if (string.Compare(
                          AUTH_OPTION_DIR,
                          0,
                          args[i],
                          0,
                          AUTH_OPTION_DIR.Length,
                          true) == 0)
             {
                 d_authOptions = AUTH_DIR_PREFIX
                                 + args[i].Substring(AUTH_OPTION_DIR.Length);
             }
             else if (string.Compare(
                          AUTH_OPTION_USER_APP,
                          0,
                          args[i],
                          0,
                          AUTH_OPTION_USER_APP.Length,
                          true) == 0)
             {
                 d_authOptions = AUTH_USER_APP_PREFIX
                                 + args[i].Substring(AUTH_OPTION_USER_APP.Length);
             }
             else
             {
                 throw new Exception(string.Format("Invalid -auth option: {0}", args[i]));
             }
         }
         else
         {
             throw new Exception(string.Format("Unknown option {0}", args[i]));
         }
     }
 }