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.
                    }
                }
            }
        }
 public void processSubscriptionDataEvent(Event eventObj, Session session)
 {
     foreach (Message msg in eventObj)
     {
         if (!msg.HasElement(d_fieldAsName))
         {
             continue;
         }
         string topic = (string)msg.CorrelationID.Object;
         System.Console.WriteLine(System.DateTime.Now.ToString("s")
                                  + ": " + topic + " - " + msg.MessageType);
         Element field = msg.GetElement(d_fieldAsName);
         if (field.IsNull)
         {
             System.Console.WriteLine(d_field + "is null, ignoring");
         }
         Service service          = msg.Service;
         bool    needsEntitlement = msg.HasElement(EID);
         for (int j = 0; j < d_identities.Count; ++j)
         {
             Identity identity = (Identity)d_identities[j];
             if (!needsEntitlement ||
                 identity.HasEntitlements(msg.GetElement(EID), service))
             {
                 System.Console.WriteLine("User: "******" is entitled to " + field);
                 // Now Distribute message to the user.
             }
             else
             {
                 System.Console.WriteLine("User: "******" is NOT entitled for " + d_field + " because of " +
                                          msg.GetElement(EID));
             }
         }
     }
 }