private void decodePayload(OMMMsg msg)
    {
        OMMMap map;
        if (msg.getDataType() == OMMTypes.MAP)
        {
            try
            {
                map = (OMMMap)msg.getPayload();
            }
            catch (Exception e) // Just in case
            {
                System.out.println(e.getClass().getName() + ": " + e.getMessage());
                throw new RuntimeException("in method DirectoryManager.decodePayload(OMMMsg msg)");
            }
            for (Iterator<?> iter = map.iterator(); iter.hasNext();)
            {
                OMMMapEntry mapEntry = (OMMMapEntry)((OMMEntry)iter.next());
                if (mapEntry.getDataType() != OMMTypes.FILTER_LIST)
                    System.out.println("ERROR--expected a FilterList");

                // each mapEntry will be a separate service
                ServiceEntry serviceEntry = null;
                byte action = mapEntry.getAction();
                String serviceName = mapEntry.getKey().toString();
                if (action == OMMMapEntry.Action.ADD)
                {
                    serviceEntry = new ServiceEntry();
                    serviceEntry._serviceName = serviceName.toString();
                    _serviceMap.put(serviceName.toString(), serviceEntry);
                    serviceEntry.decodeServiceData(mapEntry);
                }
                else if (action == OMMMapEntry.Action.UPDATE)
                {
                    serviceEntry = getServiceEntry(serviceName);
                    serviceEntry.decodeServiceData(mapEntry);
                }
                else if (action == OMMMapEntry.Action.DELETE)
                {
                    continue;
                }
            }
        }
    }