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 name
            Integer senderID = (Integer) obj[1];    // get sender ID
            requesterID = senderID.intValue();

            attr = (FileAttribute) attrHash_.get(name);
            if (attr != null) {
                size = attr.getAttributeSize();
            }
            else if (this.getHigherLevelRCid() != -1)
            {
                super.send(super.output, 0.0, ev.get_tag(),
                    new IO_data(obj,DataGridTags.PKT_SIZE,getHigherLevelRCid()));
            }
            else {      //if there is no such file registered
                attr = null;
            }
        }
        catch (Exception e) {
            attr = null;
        }

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