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

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

        String filename = (String) pack[0];         // get file name
        int msg = ((Integer) pack[1]).intValue();   // get result

        int eventSource = findEvent(waitingReplicaAddAck_, filename);
        ArrayList list = (ArrayList) catalogueHash_.get(filename);

        // if adding replica into top RC is successful
        if (msg == DataGridTags.CTLG_ADD_REPLICA_SUCCESSFUL)
        {
            // create a new entry in the catalogue
            if (list == null)
            {
                list = new ArrayList();
                catalogueHash_.put(filename, list);
            }

            list.add(new Integer(eventSource));
        }

        // if this is a local RC, we should not send the event back
        if (!this.localRC_)
        {
            sendMessage(filename, DataGridTags.CTLG_ADD_REPLICA_RESULT,
                        msg, eventSource);
        }
    }