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

📄 udpccmessenger.java

📁 High performance DB query
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            }        } else if (Output.debuggingEnabled) {            logger.debug(new StructuredLogMessage(data, "Dropped Callback",                                                  null, null));        }    }    /**     * Method serialize_size     * Only Called from NetworkCore     *     * @param msg     * @return     */    public int serialize_size(Object msg) {        if (msg instanceof Payload) {            return SerializationManager.getPayloadSize((Payload) msg);        } else {            return maxSize;        }    }    /**     * Method serialize     * Only Called from NetworkCore     *     * @param msg     * @param buf     */    public void serialize(Object msg, ByteBuffer buf) {        Integer bufferID = StructuredLogMessage.getReference();        if (Output.debuggingEnabled) {            logger.debug(new StructuredLogMessage(msg,                                                  "Beginning Serialization",                                                  new Object[]{"b",                                                               bufferID}, null));        }        try {            if (internalSerialization) {                SerializationManager.serialize(new DataByteBuffer(buf),                                               (Payload) msg);                buf.limit(buf.position());            } else {                byteStream.reset();                ObjectOutputStream objectStream =                    new ObjectOutputStream(byteStream);                objectStream.writeObject(msg);                byte[] bytes = byteStream.toByteArray();                // Place data in ByteBuffer                buf.put(bytes);                buf.limit(buf.position());            }        } catch (Exception exception) {            logger.error(                new StructuredLogMessage(                    msg, "Serialization Error", null, null), exception);        }        if (Output.debuggingEnabled) {            logger.debug(new StructuredLogMessage(msg,                                                  "Completed Serialization",                                                  new Object[]{"z",                                                               bufferID}, null));        }        StatCollector.addSample(StatVars.NETWORK_OUT, StatVars.UDP_NETWORK,                                StatVars.UDP_DATA, buf.limit());    }    /**     * Method deserialize     * Only Called from NetworkCore     *     * @param buf     * @return     * @throws Exception     */    public Object deserialize(ByteBuffer buf) throws Exception {        Integer bufferID = StructuredLogMessage.getReference();        if (Output.debuggingEnabled) {            logger.debug(new StructuredLogMessage(bufferID,                                                  "Beginning Deserialization",                                                  new Object[]{"z",                                                               String.valueOf(buf.limit()                                                               - buf.position())}, null));        }        Object msg = null;        try {            if (internalSerialization) {                msg = SerializationManager.deSerialize(new DataByteBuffer(buf));            } else {                byte bytes[] = new byte[buf.limit() - buf.position()];                buf.get(bytes);                ByteArrayInputStream byteStream =                    new ByteArrayInputStream(bytes);                ObjectInputStream ois = new ObjectInputStream(byteStream);                msg = ois.readObject();            }            if (Output.debuggingEnabled) {                logger.debug(                    new StructuredLogMessage(                        bufferID, "Completed Deserialization", new Object[]{"m",                                                                            Integer.toHexString(                                                                            (msg                                                                            == null)                                                                            ? 0                                                                            : msg.hashCode())}, null));            }        } catch (Exception exception) {            logger.error(                new StructuredLogMessage(                    bufferID, "Deserialization Error", null, null), exception);        }        StatCollector.addSample(StatVars.NETWORK_IN, StatVars.UDP_NETWORK,                                StatVars.UDP_DATA, buf.limit());        return msg;    }    /**     * Method cb     * Only Called from NetworkCore     *     * @param user_data     * @param success     */    public void cb(Object user_data, boolean success) {        if (user_data != null) {            if (Output.debuggingEnabled) {                logger.debug(new StructuredLogMessage(user_data,                                                      "UDPCC Status Callback",                                                      new Object[]{"s",                                                                   String.valueOf(                                                                   success)}, new Object[]{                                                                       "u",                                                                       user_data}));            }            eventCore.register_timer(                0, this,                (new AckCallbackObject((AckObject) user_data, success)));        }    }    /**     * Method recv     * Only Called from NetworkCore     *     * @param msg     * @param src     * @param local     * @param tries     * @param wait_ms     * @param est_rtt_ms     */    public void recv(Object msg, InetSocketAddress src,                     InetSocketAddress local, int tries, long wait_ms,                     long est_rtt_ms) {        UDPClient client =            (UDPClient) listenersClients.get(new Integer(local.getPort()));        if (client != null) {            if (Output.debuggingEnabled) {                logger.debug(                    new StructuredLogMessage(                        msg, "Network Message Received", new Object[]{"t",                                                                      String.valueOf(                                                                      tries),                                                                      "w",                                                                      String.valueOf(                                                                      wait_ms),                                                                      "r",                                                                      String.valueOf(                                                                      est_rtt_ms)}, null));            }            if (msg != null) {                eventCore.register_timer(0, this,                                         (new RunObject(client,                                                        local.getPort(), src,                                                        (Payload) msg)));            }        }    }    /**     * Class SendObject     *     */    public class SendObject {        public InetSocketAddress source;        public InetSocketAddress destination;        public Payload payload;        public AckObject ackObject;        /**         * Constructor SendObject         *         * @param source         * @param destination         * @param payload         * @param ackObject         */        public SendObject(InetSocketAddress source,                          InetSocketAddress destination, Payload payload,                          AckObject ackObject) {            this.source = source;            this.destination = destination;            this.payload = payload;            this.ackObject = ackObject;        }    }    /**     * Class ReleaseObject     *     */    public class ReleaseObject {        public UdpCC listener;        /**         * Constructor ReleaseObject         *         * @param listener         */        public ReleaseObject(UdpCC listener) {            this.listener = listener;        }    }    /**     * Class AckCallbackObject     *     */    public class AckCallbackObject {        public AckObject ackObject;        public boolean success;        /**         * Constructor AckCallbackObject         *         * @param ackObject         * @param success         */        public AckCallbackObject(AckObject ackObject, boolean success) {            this.ackObject = ackObject;            this.success = success;        }    }    /**     * Class RunObject     *     */    public class RunObject {        public UDPClient client;        public int localPort;        public InetSocketAddress remoteIPAddress;        public Payload data;        /**         * Constructor RunObject         *         * @param client         * @param localPort         * @param remoteIPAddress         * @param data         */        public RunObject(UDPClient client, int localPort,                         InetSocketAddress remoteIPAddress, Payload data) {            this.client = client;            this.localPort = localPort;            this.remoteIPAddress = remoteIPAddress;            this.data = data;        }    }    /**     * Method processNetworkCoreSend     *     * @param sendObject     */    public void processNetworkCoreSend(SendObject sendObject) {        if (sendObject.source == null) {            sender.send(sendObject.payload, sendObject.destination, timeout,                        this, sendObject.ackObject);            if (Output.debuggingEnabled) {                logger.debug(                    new StructuredLogMessage(                        sendObject.payload, "Passed to UDPCC Default Sender",                        null, null));            }        } else {            UdpCC theSender = (UdpCC) sendChannels.get(sendObject.source);            if (theSender == null) {                theSender = new UdpCC(networkCore, sendObject.source, this,                                      this);                theSender.set_debug_level(debugLevel);                sendChannels.put(sendObject.source, theSender);            }            theSender.send(sendObject.payload, sendObject.destination, timeout,                           this, sendObject.ackObject);            if (Output.debuggingEnabled) {                logger.debug(                    new StructuredLogMessage(                        sendObject.payload,                        "Passed to UDPCC Non-Default Sender", null, null));            }        }    }    /**     * Method processNetworkCoreRelease     *     * @param releaseObject     */    public void processNetworkCoreRelease(ReleaseObject releaseObject) {        releaseObject.listener.close();    }    /**     * Method processEventCoreAckCallback     *     * @param ackCallbackObject     */    public void processEventCoreAckCallback(            AckCallbackObject ackCallbackObject) {        if ((ackCallbackObject.ackObject != null)                && (ackCallbackObject.ackObject.client != null)) {            ackCallbackObject.ackObject.client.handleUDPNetworkAck(                ackCallbackObject.ackObject.ackData, ackCallbackObject.success);        }    }    /**     * Method processEventCoreRun     *     * @param runObject     */    public void processEventCoreRun(RunObject runObject) {        runEvent(runObject.client, runObject.localPort,                 runObject.remoteIPAddress, runObject.data);    }    /**     * Method timer_cb     *     * @param user_data     */    public void timer_cb(Object user_data) {        if (user_data instanceof SendObject) {            processNetworkCoreSend((SendObject) user_data);        }        if (user_data instanceof ReleaseObject) {            processNetworkCoreRelease((ReleaseObject) user_data);        }        if (user_data instanceof AckCallbackObject) {            processEventCoreAckCallback((AckCallbackObject) user_data);        }        if (user_data instanceof RunObject) {            processEventCoreRun((RunObject) user_data);        }    }}

⌨️ 快捷键说明

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