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

        Object[] obj = (Object[]) ev.get_data();
        if (obj == null)
        {
            System.out.println(super.get_name() +
                    ".processDeleteReplica(): no object is found");
            return;
        }

        String name = (String) obj[0];      // get file name
        Integer resID = (Integer) obj[1];   // get resource id

        int msg = DataGridTags.CTLG_DELETE_REPLICA_SUCCESSFUL;
        try
        {
            // if there will be no more files registered on this resource, then
            // first unregister this RC from the higher level RC
            ArrayList list = (ArrayList) catalogueHash_.get(name);
            if (list != null && list.size() == 1)
            {
                int event = DataGridTags.CTLG_DELETE_REPLICA;
                sendMessageToHighLevelRC(name, event);

                // add the event to the list of waiting requests
                if (waitingReplicaDeleteAck_ == null) {
                    waitingReplicaDeleteAck_ = new ArrayList();
                }

                waitingReplicaDeleteAck_.add(obj);
            }
            // otherwise just delete the location from the catalogue
            else
            {
                if (!list.remove(resID)) {
                    msg = DataGridTags.CTLG_DELETE_REPLICA_ERROR_DOESNT_EXIST;
                }

                // notify the sender
                sendMessage(name, DataGridTags.CTLG_DELETE_REPLICA_RESULT, msg,
                            resID.intValue() );
            }
        }
        catch (Exception e)
        {
            System.out.println(super.get_name() +
                ".processDeleteReplica(): exception error");
        }
    }