public ArrayList getAttributeList(Filter filter)
    {
        // check for errors first
        int rcID = getReplicaCatalogueID();
        if (filter == null || rcID == -1) {
            return null;
        }

        ArrayList attrList = null;
        int eventTag = DataGridTags.CTLG_FILTER;
        Object[] packet = new Object[2];
        packet[0] = filter;
        packet[1] = myID_;

        // send an event message
        super.send(super.output, 0, eventTag,
                   new IO_data(packet, DataGridTags.PKT_SIZE, rcID));

        // waiting for a response from the RC
        Sim_type_p tag = new Sim_type_p(DataGridTags.CTLG_FILTER_DELIVERY);
        Sim_event ev = new Sim_event();
        super.sim_get_next(tag, ev);    // only look for this type of ack

        try {
            attrList = (ArrayList) ev.get_data();
        }
        catch (Exception e) {
            attrList = null;
            System.out.println(super.get_name() +
                    ".getAttributeList(): Exception");
        }
        return attrList;
    }