Ejemplo n.º 1
0
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.BASIC, "Teams: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.BASIC, "Teams: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    String errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.BASIC, "Error getting teams: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_TEAMS))
                {
                    Log.LogMessage(LogLevels.BASIC, "Teams: processing successful RESPONSE");

                    Element teamList = message.GetElement("TEAMS");

                    int numValues = teamList.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        String teamName = teamList.GetValueAsString(i);
                        Team   newTeam  = new Team(teams, teamName);
                        teams.add(newTeam);
                        Log.LogMessage(LogLevels.DETAILED, "Teams: Added new team " + newTeam.name);
                    }
                }
            }
Ejemplo n.º 2
0
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    string errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_BROKER_STRATEGY_INFO))
                {
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "]: processing succesful RESPONSE");

                    Element parameters = message.GetElement("EMSX_STRATEGY_INFO");

                    int numValues = parameters.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        Element parameter = parameters.GetValueAsElement(i);

                        string parameterName = parameter.GetElementAsString("FieldName");
                        int    disable       = parameter.GetElementAsInt32("Disable");
                        string stringValue   = parameter.GetElementAsString("StringValue");

                        BrokerStrategyParameter newParameter = new BrokerStrategyParameter(brokerStrategyParameters, parameterName, stringValue, disable);
                        brokerStrategyParameters.add(newParameter);
                        Log.LogMessage(LogLevels.DETAILED, "Broker Strategy Parameters [" + brokerStrategyParameters.brokerStrategy.parent.broker.name + "." + brokerStrategyParameters.brokerStrategy.name + "] Added new parameter " + parameterName);
                    }
                }
            }
Ejemplo n.º 3
0
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.DETAILED, "Broker Strategies [" + brokerStrategies.broker.name + "]: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.BASIC, "Broker Strategies [" + brokerStrategies.broker.name + "]: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    string errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.BASIC, "Broker Strategies [" + brokerStrategies.broker.name + "]: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_BROKER_STRATEGIES))
                {
                    Log.LogMessage(LogLevels.DETAILED, "Broker Strategies [" + brokerStrategies.broker.name + "]: processing succesful RESPONSE");

                    Element strategies = message.GetElement("EMSX_STRATEGIES");

                    int numValues = strategies.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        string strategy = strategies.GetValueAsString(i);
                        if (strategy.Length > 0)
                        {
                            BrokerStrategy newBrokerStrategy = new BrokerStrategy(brokerStrategies, strategy);
                            brokerStrategies.add(newBrokerStrategy);
                            Log.LogMessage(LogLevels.DETAILED, "Broker Strategies [" + brokerStrategies.broker.name + "]: added new strategy " + newBrokerStrategy.name);
                        }
                    }
                }
            }
        private void processMessage(Message msg)
        {
            Element data     = msg.GetElement(TICK_DATA).GetElement(TICK_DATA);;
            int     numItems = data.NumValues;

            System.Console.WriteLine("TIME\t\t\tTYPE\tVALUE\t\tSIZE\tCC");
            System.Console.WriteLine("----\t\t\t----\t-----\t\t----\t--");
            for (int i = 0; i < numItems; ++i)
            {
                Element  item  = data.GetValueAsElement(i);
                Datetime time  = item.GetElementAsDate(TIME);
                string   type  = item.GetElementAsString(TYPE);
                double   value = item.GetElementAsFloat64(VALUE);
                int      size  = item.GetElementAsInt32(SIZE);
                string   cc    = "";
                if (item.HasElement(COND_CODE))
                {
                    cc = item.GetElementAsString(COND_CODE);
                }

                System.DateTime sysDatetime =
                    new System.DateTime(time.Year, time.Month, time.DayOfMonth,
                                        time.Hour, time.Minute, time.Second, time.MilliSecond);
                System.Console.WriteLine(
                    sysDatetime.ToString("s") + "\t" +
                    type + "\t" +
                    value.ToString("C") + "\t\t" +
                    size + "\t" +
                    cc);
            }
        }
        private void ProcessCurveListResponse(Message msg)
        {
            Element results    = msg.GetElement(RESULTS_ELEMENT);
            int     numResults = results.NumValues;

            Console.WriteLine("Processing " + numResults + " results:");
            for (int i = 0; i < numResults; ++i)
            {
                Element       result = results.GetValueAsElement(i);
                StringBuilder sb     = new StringBuilder();
                foreach (Name n in CURVE_RESPONSE_ELEMENTS)
                {
                    if (sb.Length != 0)
                    {
                        sb.Append(" ");
                    }
                    sb.Append(n).Append("=").Append(result.GetElementAsString(n));
                }
                Console.WriteLine(
                    "\t{0} {1} - {2} '{3}'",
                    i + 1,
                    result.GetElementAsString(CURVE_ELEMENT),
                    result.GetElementAsString(DESCRIPTION_ELEMENT),
                    sb.ToString());
            }
        }
        private void processMessage(Message msg)
        {
            Element data    = msg.GetElement(BAR_DATA).GetElement(BAR_TICK_DATA);
            int     numBars = data.NumValues;

            System.Console.WriteLine("Response contains " + numBars + " bars");
            System.Console.WriteLine("Datetime\t\tOpen\t\tHigh\t\tLow\t\tClose" +
                                     "\t\tNumEvents\tVolume");
            for (int i = 0; i < numBars; ++i)
            {
                Element         bar         = data.GetValueAsElement(i);
                Datetime        time        = bar.GetElementAsDate(TIME);
                double          open        = bar.GetElementAsFloat64(OPEN);
                double          high        = bar.GetElementAsFloat64(HIGH);
                double          low         = bar.GetElementAsFloat64(LOW);
                double          close       = bar.GetElementAsFloat64(CLOSE);
                int             numEvents   = bar.GetElementAsInt32(NUM_EVENTS);
                long            volume      = bar.GetElementAsInt64(VOLUME);
                System.DateTime sysDatetime = time.ToSystemDateTime();
                System.Console.WriteLine(
                    sysDatetime.ToString("s") + "\t" +
                    open.ToString("C") + "\t\t" +
                    high.ToString("C") + "\t\t" +
                    low.ToString("C") + "\t\t" +
                    close.ToString("C") + "\t\t" +
                    numEvents + "\t\t" +
                    volume);
            }
        }
Ejemplo n.º 7
0
            public void processMessage(Message message)
            {
                Log.LogMessage(LogLevels.BASIC, "Brokers: processing message");

                if (message.MessageType.Equals(ERROR_INFO))
                {
                    Log.LogMessage(LogLevels.BASIC, "Brokers: processing RESPONSE error");
                    int    errorCode    = message.GetElementAsInt32("ERROR_CODE");
                    string errorMessage = message.GetElementAsString("ERROR_MESSAGE");
                    Log.LogMessage(LogLevels.BASIC, "Error getting brokers: [" + errorCode + "] " + errorMessage);
                }
                else if (message.MessageType.Equals(GET_BROKERS))
                {
                    Log.LogMessage(LogLevels.BASIC, "Brokers: processing successful RESPONSE");

                    Element brokerList = message.GetElement("EMSX_BROKERS");

                    int numValues = brokerList.NumValues;

                    for (int i = 0; i < numValues; i++)
                    {
                        string brokerName = brokerList.GetValueAsString(i);
                        Broker newBroker  = new Broker(brokers, brokerName, assetClass);
                        brokers.add(newBroker);
                        Log.LogMessage(LogLevels.DETAILED, "Brokers: added new broker " + newBroker.name);
                    }
                }
            }
        private void distributeMessage(Message msg)
        {
            Service service = msg.Service;

            List <int> failedEntitlements = new List <int>();

            Element securities    = msg.GetElement(SECURITY_DATA);
            int     numSecurities = securities.NumValues;

            System.Console.WriteLine("Processing " + numSecurities + " securities:");
            for (int i = 0; i < numSecurities; ++i)
            {
                Element security     = securities.GetValueAsElement(i);
                String  ticker       = security.GetElementAsString(SECURITY);
                Element entitlements = ((security.HasElement(EID_DATA) ?
                                         security.GetElement(EID_DATA) : null));

                int numUsers = d_identities.Count;
                if (entitlements != null)
                {
                    // Entitlements are required to access this data
                    for (int j = 0; j < numUsers; ++j)
                    {
                        failedEntitlements.Clear();
                        Identity identity = (Identity)d_identities[j];
                        if (identity.HasEntitlements(entitlements, service,
                                                     failedEntitlements))
                        {
                            System.Console.WriteLine("User: "******" is entitled to get data for: " + ticker);
                            // Now Distribute message to the user.
                        }
                        else
                        {
                            System.Console.WriteLine("User: "******" is NOT entitled to get data for: " + ticker +
                                                     " - Failed eids: ");
                            printFailedEntitlements(failedEntitlements);
                        }
                    }
                }
                else
                {
                    // No Entitlements are required to access this data.
                    for (int j = 0; j < numUsers; ++j)
                    {
                        System.Console.WriteLine("User: "******" is entitled to get data for: " + ticker);
                        // Now Distribute message to the user.
                    }
                }
            }
        }
Ejemplo n.º 9
0
        void utilities_OnMessage(object sender, EventArgs e)
        {
            BloombergMessageEventArgs args = e as BloombergMessageEventArgs;

            Bloomberglp.Blpapi.Message message = args.Message;
            string eventType = message.GetElementAsString("EVENT_TYPE");

            if ((eventType == "QUOTE") || (eventType == "SUMMARY"))
            {
                m_logger.Info(args.Message);
            }
        }
Ejemplo n.º 10
0
        bool ProcessErrors(Message msg)
        {
            Element securityData = msg.GetElement(SECURITY_DATA);

            if (securityData.HasElement(SECURITY_ERROR))
            {
                Element security_error = securityData.GetElement(SECURITY_ERROR);
                Element error_message  = security_error.GetElement(MESSAGE);
                System.Console.WriteLine(error_message);
                return(true);
            }
            return(false);
        }
        private void ProcessInstrumentListResponse(Message msg)
        {
            Element results    = msg.GetElement(RESULTS_ELEMENT);
            int     numResults = results.NumValues;

            Console.WriteLine("Processing " + numResults + " results:");
            for (int i = 0; i < numResults; ++i)
            {
                Element result = results.GetValueAsElement(i);
                Console.WriteLine(
                    "\t{0} {1} - {2}",
                    i + 1,
                    result.GetElementAsString(SECURITY_ELEMENT),
                    result.GetElementAsString(DESCRIPTION_ELEMENT));
            }
        }
        private void ProcessGovtListResponse(Message msg)
        {
            Element results    = msg.GetElement(RESULTS_ELEMENT);
            int     numResults = results.NumValues;

            Console.WriteLine("Processing " + numResults + " results:");
            for (int i = 0; i < numResults; ++i)
            {
                Element result = results.GetValueAsElement(i);
                Console.WriteLine(
                    "\t{0} {1}, {2} - {3}",
                    i + 1,
                    result.GetElementAsString(PARSEKY_ELEMENT),
                    result.GetElementAsString(NAME_ELEMENT),
                    result.GetElementAsString(TICKER_ELEMENT));
            }
        }
Ejemplo n.º 13
0
        }//end printErrorInfo

        bool ProcessExceptions(Message msg)
        {
            Element securityData     = msg.GetElement(SECURITY_DATA);
            Element field_exceptions = securityData.GetElement(FIELD_EXCEPTIONS);

            if (field_exceptions.NumValues > 0)
            {
                Element element       = field_exceptions.GetValueAsElement(0);
                Element field_id      = element.GetElement(FIELD_ID);
                Element error_info    = element.GetElement(ERROR_INFO);
                Element error_message = error_info.GetElement(MESSAGE);
                System.Console.WriteLine(field_id);
                System.Console.WriteLine(error_message);
                return(true);
            }
            return(false);
        }
Ejemplo n.º 14
0
        internal void populateFields(Message message, bool dynamicFieldsOnly)
        {
            Log.LogMessage(LogLevels.BASIC, "Populate fields");

            CurrentToOldValues();

            int fieldCount = message.NumElements;

            Element e = message.AsElement;

            fieldChanges = new List <FieldChange>();

            for (int i = 0; i < fieldCount; i++)
            {
                Boolean load = true;

                Element f = e.GetElement(i);

                String fieldName = f.Name.ToString();
                // Workaround for schema field nameing
                if (fieldName.Equals("EMSX_ORD_REF_ID"))
                {
                    fieldName = "EMSX_ORDER_REF_ID";
                }

                if (dynamicFieldsOnly)
                {
                    SchemaFieldDefinition sfd = null;
                    if (owner is Order)
                    {
                        Order o = (Order)owner;
                        sfd = findSchemaFieldByName(fieldName, o.parent.emsxapi.orderFields);
                    }
                    else if (owner is Route)
                    {
                        Route r = (Route)owner;
                        sfd = findSchemaFieldByName(fieldName, r.parent.emsxapi.routeFields);
                    }
                    if (sfd != null && sfd.isStatic())
                    {
                        load = false;
                    }
                }

                if (load)
                {
                    Field fd = field(fieldName);

                    if (fd == null)
                    {
                        fd = new Field(this);
                    }

                    fd.setName(fieldName);
                    // set the CURRENT value NOT the new_value. new_value is only set by client side.
                    fd.setCurrentValue(f.GetValueAsString());

                    FieldChange fc = fd.getFieldChanged();
                    if (fc != null)
                    {
                        fieldChanges.Add(fc);
                    }
                }
            }
        }
Ejemplo n.º 15
0
        public void processMessage(Message message)
        {
            Log.LogMessage(LogLevels.DETAILED, "RouteSubscriptionHandler: Processing message");

            Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

            if (message.MessageType.Equals(SUBSCRIPTION_STARTED))
            {
                Log.LogMessage(LogLevels.BASIC, "Route subscription started");
                return;
            }

            int eventStatus = message.GetElementAsInt32("EVENT_STATUS");

            if (eventStatus == 1)
            {
                Log.LogMessage(LogLevels.DETAILED, "RouteSubscriptionHandler: HEARTBEAT received");
            }
            else if (eventStatus == 4)          //init_paint
            {
                Log.LogMessage(LogLevels.BASIC, "RouteSubscriptionHandler: INIT_PAINT message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

                int sequence = message.GetElementAsInt32("EMSX_SEQUENCE");
                int routeID  = message.GetElementAsInt32("EMSX_ROUTE_ID");

                Route r = routes.getBySequenceNoAndID(sequence, routeID);

                if (r == null)
                {
                    r = routes.createRoute(sequence, routeID);
                }

                r.fields.populateFields(message, false);
                r.notify(new Notification(NotificationCategory.ROUTE, NotificationType.INITIALPAINT, r, r.fields.getFieldChanges()));
            }
            else if (eventStatus == 6)          //new
            {
                Log.LogMessage(LogLevels.BASIC, "RouteSubscriptionHandler: NEW_ORDER_ROUTE message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

                int sequence = message.GetElementAsInt32("EMSX_SEQUENCE");
                int routeID  = message.GetElementAsInt32("EMSX_ROUTE_ID");

                Route r = routes.getBySequenceNoAndID(sequence, routeID);

                if (r == null)
                {
                    r = routes.createRoute(sequence, routeID);
                }

                r.fields.populateFields(message, false);
                r.notify(new Notification(NotificationCategory.ROUTE, NotificationType.NEW, r, r.fields.getFieldChanges()));
            }
            else if (eventStatus == 7)          // update
            {
                Log.LogMessage(LogLevels.BASIC, "RouteSubscriptionHandler: UPD_ORDER_ROUTE message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

                int sequence = message.GetElementAsInt32("EMSX_SEQUENCE");
                int routeID  = message.GetElementAsInt32("EMSX_ROUTE_ID");

                Route r = routes.getBySequenceNoAndID(sequence, routeID);

                if (r == null)
                {
                    Log.LogMessage(LogLevels.BASIC, "RouteSubscriptionHandler: WARNING > Update received for unkown route");
                    r = routes.createRoute(sequence, routeID);
                }
                r.fields.populateFields(message, true);
                r.notify(new Notification(NotificationCategory.ROUTE, NotificationType.UPDATE, r, r.fields.getFieldChanges()));
            }
            else if (eventStatus == 8)          // deleted/expired
            {
                Log.LogMessage(LogLevels.BASIC, "RouteSubscriptionHandler: DELETE message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

                int sequence = message.GetElementAsInt32("EMSX_SEQUENCE");
                int routeID  = message.GetElementAsInt32("EMSX_ROUTE_ID");

                Route r = routes.getBySequenceNoAndID(sequence, routeID);

                if (r == null)            // Order not found
                {
                    Log.LogMessage(LogLevels.BASIC, "RouteSubscriptionHandler: WARNING > Delete received for unkown route");
                    r = routes.createRoute(sequence, routeID);
                }
                r.fields.populateFields(message, false);
                r.fields.field("EMSX_STATUS").setCurrentValue("EXPIRED");
                r.notify(new Notification(NotificationCategory.ROUTE, NotificationType.DELETE, r, r.fields.getFieldChanges()));
            }
            else if (eventStatus == 11)          // INIT_PAINT_END
            // End of inital paint messages
            {
                Log.LogMessage(LogLevels.BASIC, "RouteSubscriptionHandler: End of Initial Paint");
                routes.emsxapi.routeBlotterInitialized = true;
            }
        }
 public void displaySecurityInfo(Message msg)
 {
     System.Console.WriteLine(d_name + ": " + msg);
 }
        public void processMessage(Message message)
        {
            Log.LogMessage(LogLevels.DETAILED, "OrderSubscriptionHandler: Processing message");

            Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

            if (message.MessageType.Equals(SUBSCRIPTION_STARTED))
            {
                Log.LogMessage(LogLevels.BASIC, "Order subscription started");
                return;
            }

            int eventStatus = message.GetElementAsInt32("EVENT_STATUS");

            if (eventStatus == 1)
            {
                Log.LogMessage(LogLevels.DETAILED, "OrderSubscriptionHandler: HEARTBEAT received");
            }
            else if (eventStatus == 4)          //init_paint
            {
                Log.LogMessage(LogLevels.BASIC, "OrderSubscriptionHandler: INIT_PAINT message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());
                Order o;
                int   sequence = message.GetElementAsInt32("EMSX_SEQUENCE");
                o = orders.getBySequenceNo(sequence);
                if (o == null)            // Order not found
                {
                    o = orders.createOrder(sequence);
                }
                o.fields.populateFields(message, false);
                o.notify(new Notification(NotificationCategory.ORDER, NotificationType.INITIALPAINT, o, o.fields.getFieldChanges()));
            }
            else if (eventStatus == 6)          //new
            {
                Log.LogMessage(LogLevels.BASIC, "OrderSubscriptionHandler: NEW_ORDER_ROUTE message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

                int sequence = message.GetElementAsInt32("EMSX_SEQUENCE");

                Order o = orders.getBySequenceNo(sequence);
                if (o == null)
                {
                    o = orders.createOrder(sequence);
                }

                o.fields.populateFields(message, false);
                o.notify(new Notification(NotificationCategory.ORDER, NotificationType.NEW, o, o.fields.getFieldChanges()));
            }
            else if (eventStatus == 7)          // update
            {
                Log.LogMessage(LogLevels.BASIC, "OrderSubscriptionHandler: UPD_ORDER_ROUTE message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

                // Order should already exists. If it doesn't create it anyway.
                Order o;
                int   sequence = message.GetElementAsInt32("EMSX_SEQUENCE");
                o = orders.getBySequenceNo(sequence);
                if (o == null)            // Order not found
                {
                    Log.LogMessage(LogLevels.BASIC, "OrderSubscriptionHandler: WARNING > Update received for unkown order");
                    o = orders.createOrder(sequence);
                }
                o.fields.populateFields(message, true);
                o.notify(new Notification(NotificationCategory.ORDER, NotificationType.UPDATE, o, o.fields.getFieldChanges()));
            }
            else if (eventStatus == 8)          // deleted/expired
            {
                Log.LogMessage(LogLevels.BASIC, "OrderSubscriptionHandler: DELETE message received");
                Log.LogMessage(LogLevels.DETAILED, "Message: " + message.ToString());

                // Order should already exists. If it doesn't create it anyway.
                Order o;
                int   sequence = message.GetElementAsInt32("EMSX_SEQUENCE");
                o = orders.getBySequenceNo(sequence);
                if (o == null)            // Order not found
                {
                    Log.LogMessage(LogLevels.BASIC, "OrderSubscriptionHandler: WARNING > Delete received for unkown order");
                    o = orders.createOrder(sequence);
                }
                o.fields.populateFields(message, false);
                o.fields.field("EMSX_STATUS").setCurrentValue("EXPIRED");
                o.notify(new Notification(NotificationCategory.ORDER, NotificationType.DELETE, o, o.fields.getFieldChanges()));
            }
            else if (eventStatus == 11)          // INIT_PAINT_END
            // End of inital paint messages
            {
                Log.LogMessage(LogLevels.BASIC, "OrderSubscriptionHandler: End of Initial Paint");
                orders.emsxapi.orderBlotterInitialized = true;
            }
        }
Ejemplo n.º 18
0
 public void processSecurityUpdate(Message msg, long row)
 {
     System.Console.WriteLine(d_name + ": row " +
                              row + " got update for " + d_securityList[(int)row]);
 }
Ejemplo n.º 19
0
        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