serialencoder.java

来自「银行项目为后台socket通信写的程序」· Java 代码 · 共 58 行

JAVA
58
字号
/****************************************************************************
 * Package		: com.ecSolutions.ecAppServer.server.encoder
 * File			: SerialEncoder.java
 * Create Date  : 2007-7-20
 * Author		: Steven Chen
 * 
 * Copyright(C) 2006 ecSolutions(shanghai) Co.,Limited.All Rights Reserved.
 *			
 ***************************************************************************/
package com.ecSolutions.ecAppServer.server.encoder;

import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.nio.ByteBuffer;

import com.ecSolutions.ecAppServer.server.Packet;
import com.ecSolutions.ecAppServer.server.PacketEncoder;
import com.ecSolutions.ecAppServer.server.Session;
import com.ecSolutions.ecAppServer.server.buffer.BufferBuilder;
import com.ecSolutions.ecAppServer.server.packet.DefaultPacket;

/**
 * Encode serial object to <code>Packet</code>.
 * 
 * @author Steven Chen
 * @version $Id: SerialEncoder.java,v 1.2 2007/07/26 03:19:40 stevenchen Exp $
 */
public class SerialEncoder implements PacketEncoder {

    public Packet encode(Session session, Object obj) throws Exception {
        if (obj instanceof Serializable) {
            final BufferBuilder builder = new BufferBuilder();
            try {
                ObjectOutputStream oos = new ObjectOutputStream(
                        new OutputStream() {

                            public void write(int b) {
                                builder.append((byte) b);
                            }

                            public void write(byte[] b, int off, int len) {
                                builder.append(ByteBuffer.wrap(b, off, len));
                            }
                        });
                oos.writeUnshared(obj);
                oos.close();
                return new DefaultPacket(builder.toBuffer());
            } finally {
                builder.release();
            }
        }
        return null;

    }

}

⌨️ 快捷键说明

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