private void processFileAttrRequest(Sim_event ev)
    {
        if (ev == null) {
            return;
        }

        int requesterID = -1;
        int size = 0;
        FileAttribute attr = null;

        try
        {
            Object[] obj = (Object[]) ev.get_data();
            if (obj == null) {
                return;
            }

            String name = (String) obj[0];          // get file name
            Integer senderID = (Integer) obj[1];    // get sender id
            requesterID = senderID.intValue();

            // get the file attribute of a given filename
            attr = (FileAttribute) attrHash_.get(name);
            if (attr != null) {
                size = attr.getAttributeSize();
            }
            else
            {
                size = DataGridTags.PKT_SIZE;
                attr = null;
            }
        }
        catch (Exception e)
        {
            attr = null;
            size = DataGridTags.PKT_SIZE;
        }

        // send back to requester
        if (requesterID != -1)
        {
            super.send(super.output, 0, DataGridTags.CTLG_FILE_ATTR_DELIVERY,
                       new IO_data(attr, size, requesterID) );
        }
    }