⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messageprocessor.java

📁 基于jxta的局域网P2P文件共享,可以实现局域网中的文件p2p共享,实现文件快速传输及交流
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    }

    protected synchronized void sendPicUpdate() {
        Message msg = PresenceProtocol.createPictureUpdateMessage();

        ses.send(msg);
        if (LOG.isEnabledFor(Level.INFO)) {
            LOG.info(" picUpdateMessage sent");
        }

    }

    protected synchronized void sendServiceReq(String backID, String serviceID) {
        Message msg = PresenceProtocol.createServiceReqMessage(serviceID);

        try {

            ses.sendToBackDoor(backID, msg); // send with back door pipe
            if (LOG.isEnabledFor(Level.INFO)) {
                LOG.info(" ServiceRequestMessage sent");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    protected synchronized void sendServiceRes(String backID, String serviceID) {

        Message msg = PresenceProtocol.createServiceResMessage(serviceID,
                services.get(serviceID).getPipe());

        try {

            ses.sendToBackDoor(backID, msg); // send with back door pipe
            if (LOG.isEnabledFor(Level.INFO)) {
                LOG.info(" ServiceResponseMessage sent");
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }


    /*************************************************************************
                      Processing
     /*************************************************************************/



    /**
     * processes statusUpdate messages.
     * @param id String
     * @param status String
     * @param backID String
     */

    protected void processStatusUpdate(String id, String status,
                                       String backID) {
        if (!PresenceService.getInstance().getMemberCollection().
            containsKey(id)) {
            sendPresenceReq(backID);
        } else {
            this.updateMember(id, status, null, null, backID);
        }

    }


    /**
     * processes presenceRequest messages.
     * @param id String
     * @param status String
     * @param profAdv ProfileAdv
     * @param peerAdv PeerAdvertisement
     * @param backID String
     */
    protected void processpresenceReq(String id, String status,
                                     ProfileAdv profAdv,
                                     PeerAdvertisement peerAdv,
                                     String backID) {

        // rigesterMember(id, status, profAdv, peerAdv, backID);
        if (!rigesterMember(id, status, profAdv, peerAdv, backID)) {

            updateMember(id, status, profAdv, peerAdv, backID);
        }

        sendPresenceRes(backID);

    }

    /**
     * processes presenceresponce messages.
     * @param id String
     * @param status String
     * @param profAdv ProfileAdv
     * @param peerAdv PeerAdvertisement
     * @param backID String
     */
    protected void processpresenceRes(String id, String status,
                                     ProfileAdv profAdv,
                                     PeerAdvertisement peerAdv,
                                     String backID) {

        rigesterMember(id, status, profAdv, peerAdv, backID);

    }

    /**
     * processes presenceUpdate messages.
     * @param id String
     * @param status String
     * @param profAdv ProfileAdv
     * @param peerAdv PeerAdvertisement
     * @param backID String
     */
    protected void processpresenceUpdate(String id, String status,
                                        ProfileAdv profAdv,
                                        PeerAdvertisement peerAdv,
                                        String backID) {
        if (!rigesterMember(id, status, profAdv, peerAdv, backID)) {

            updateMember(id, status, profAdv, peerAdv, backID);
        }
    }

    /**
     *
     * @param backId String
     * @param serviceID String
     */
    protected void processServiceReq(String backId, String serviceID) {
        if (services.containsKey(serviceID)) {
            this.sendServiceRes(backId, serviceID);
        } else {
            if (LOG.isEnabledFor(Level.INFO)) {
                LOG.info(" unknown ServiceRequest:" + serviceID);
                //TODO: option to start or to download the Service.
            }
        }

    }

    /**
     *
     * @param membID String
     * @param serviceID String
     * @param pipeID String
     */
    protected void processServiceRes(String membID, String serviceID,
                                     String pipeID) {
        Member memb = PresenceService.getInstance().getMemberCollection().
                      get(membID);
        memb.setService(serviceID, pipeID);
        if(services.containsKey(serviceID)){
            services.get(serviceID).receivePipe(memb.getName(), membID, pipeID);
        }

    }

    /**
     *
     * @param backID String
     */
    protected void processPicReq(String backID) {

        sendPicRes(backID);

    }

    /**
     *
     * @param id String
     * @param buf byte[]
     */
    protected void processPicRes(String id, byte[] buf) {

        // ImageIcon img = new ImageIcon(buf);
        Member memb = PresenceService.getInstance().getMemberCollection().
                      get(id);
        File file = new File(memb.getPicture());

        if (file.exists()) {
            file.delete();
        }
        try {
            FileOutputStream out = new FileOutputStream(
                    PresenceService.getInstance().getPicsFolder() +
                    File.separator + id.substring(46) + buf.length + ".jpg");
            out.write(buf);
            //doc.sendToStream(out);
            out.flush();
            out.close();

        } catch (Exception ex) {
            System.out.print("Picture not saved: " + ex.getMessage());
        }

        memb.setPicture(
                PresenceService.getInstance().getPicsFolder() +
                File.separator + id.substring(46) + buf.length + ".jpg");

    }

    /**
     *
     * @param id String
     * @param status String
     * @param backID String
     */
    protected void processPicUpdate(String id, String status,
                                    String backID) {

        //rigesterMember(id, status, null, null, backID);
        if (!PresenceService.getInstance().getMemberCollection().
                    containsKey(id)) {
                    sendPresenceReq(backID);
         }else{
             PresenceService.getInstance().getMemberCollection().
                     get(id).pictureUpdated();
         }
    }


    /**
     * regesteration of new Members
     * @param id String
     * @param status String
     * @param pAdv ProfileAdv
     * @param peerAdv PeerAdvertisement
     * @param backID String
     * @return boolean
     */

    protected boolean rigesterMember(String id, String status,
                                     ProfileAdv pAdv,
                                     PeerAdvertisement peerAdv,
                                     String backID) {

        if (!PresenceService.getInstance().getMemberCollection().
            containsKey(id)) {

            Member memb = new Member();

            memb.setID(id);
            memb.setStatus(status);
            memb.setPresenceBackDoorID(backID);

            if (pAdv != null) {
                memb.setProfilAdv(pAdv);

            }
            if (peerAdv != null) {
                memb.setPeerAdv(peerAdv);

            }
            if (memb.getProfileAdv() == null) {
                sendPresenceReq(backID);
            }

            if (LOG.isEnabledFor(Level.INFO)) {
                LOG.info(" new Member name: " + memb.getName() + "Status: " +
                         status);
            }

            PresenceService.getInstance().getMemberCollection().put(id,
                    memb);

            PresenceEvent e = new PresenceEvent(status, memb.getName(),
                                                id);
            this.informNewMember(e); // event

            return true;
        }
        return false;
    }

    protected void updateMember(String id, String status,
                                ProfileAdv pAdv,
                                PeerAdvertisement peerAdv,
                                String backID) {
        Member memb = PresenceService.getInstance().getMemberCollection().
                      get(id);

        memb.setID(id);
        memb.setStatus(status);
        memb.setPresenceBackDoorID(backID);

        if (pAdv != null) {
            memb.setProfilAdv(pAdv);

        }
        if (peerAdv != null) {
            memb.setPeerAdv(peerAdv);

        }
        if (memb.getProfileAdv() == null) {
            sendPresenceReq(backID);
        }

        if (LOG.isEnabledFor(Level.INFO)) {
            LOG.info(" memberUpdated name: " + memb.getName() + " Status: " +
                     status);
        }

        PresenceEvent e = new PresenceEvent(status, memb.getName(),
                                            id);
        this.informUpdateMember(e); // event

    }


    /**
     *
     * @param presenceListener PresenceListener
     */

    public void attach(PresenceListener presenceListener) {
        presenceListenersVector.addElement(presenceListener);
    }

    /**
     *
     * @param presenceListener PresenceListener
     */
    public void detach(PresenceListener presenceListener) {
        presenceListenersVector.removeElement(presenceListener);
    }

    /**
     *
     * @param serviceId String
     * @param serviceListener ServiceListener
     */
    public void attachService(String serviceId, ServiceListener serviceListener) {
        services.put(serviceId, serviceListener);
    }

    public void detachService(ServiceListener serviceListener) {
        services.remove(serviceListener);
    }

    public void informNewMember(PresenceEvent e) {
        java.util.Enumeration enumeration = presenceListeners();
        while (enumeration.hasMoreElements()) {
            ((PresenceListener) enumeration.nextElement()).newMember(e);
        }
    }

    public void informUpdateMember(PresenceEvent e) {
        java.util.Enumeration enumeration = presenceListeners();
        while (enumeration.hasMoreElements()) {
            ((PresenceListener) enumeration.nextElement()).updateMember(e);
        }

    }

    /**
     *
     * @return Enumeration
     */
    public Enumeration presenceListeners() {
        return ((java.util.Vector) presenceListenersVector.clone()).
                elements();
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -