当前位置: 首页>>代码示例>>Java>>正文


Java Cleanable类代码示例

本文整理汇总了Java中com.alibaba.dubbo.common.serialize.Cleanable的典型用法代码示例。如果您正苦于以下问题:Java Cleanable类的具体用法?Java Cleanable怎么用?Java Cleanable使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


Cleanable类属于com.alibaba.dubbo.common.serialize包,在下文中一共展示了Cleanable类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: encode

import com.alibaba.dubbo.common.serialize.Cleanable; //导入依赖的package包/类
public void encode(Channel channel, ChannelBuffer buffer, Object message) throws IOException {
    OutputStream output = new ChannelBufferOutputStream(buffer);
    ObjectOutput objectOutput = getSerialization(channel).serialize(channel.getUrl(), output);
    encodeData(channel, objectOutput, message);
    objectOutput.flushBuffer();

    // modified by lishen
    if (objectOutput instanceof Cleanable) {
        ((Cleanable) objectOutput).cleanup();
    }
}
 
开发者ID:zhuxiaolei,项目名称:dubbo2,代码行数:12,代码来源:TransportCodec.java

示例2: decode

import com.alibaba.dubbo.common.serialize.Cleanable; //导入依赖的package包/类
public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {
//        InputStream input = new ChannelBufferInputStream(buffer);
//        return decodeData(channel, getSerialization(channel).deserialize(channel.getUrl(), input));

        // modified by lishen
        InputStream input = new ChannelBufferInputStream(buffer);
        ObjectInput objectInput = getSerialization(channel).deserialize(channel.getUrl(), input);
        Object object = decodeData(channel, objectInput);
        if (objectInput instanceof Cleanable) {
            ((Cleanable) objectInput).cleanup();
        }
        return object;
    }
 
开发者ID:zhuxiaolei,项目名称:dubbo2,代码行数:14,代码来源:TransportCodec.java

示例3: encode

import com.alibaba.dubbo.common.serialize.Cleanable; //导入依赖的package包/类
public void encode(Channel channel, ChannelBuffer buffer, Object message) throws IOException {
    OutputStream output = new ChannelBufferOutputStream(buffer);
    ObjectOutput objectOutput = getSerialization(channel).serialize(channel.getUrl(), output);
    encodeData(channel, objectOutput, message);
    objectOutput.flushBuffer();
    if(objectOutput instanceof Cleanable){
        Cleanable cleanable = (Cleanable)objectOutput;
        cleanable.cleanup();
    }
}
 
开发者ID:AllenRay,项目名称:dubbo-ex,代码行数:11,代码来源:TransportCodec.java

示例4: decode

import com.alibaba.dubbo.common.serialize.Cleanable; //导入依赖的package包/类
public Object decode(Channel channel, ChannelBuffer buffer) throws IOException {
    InputStream input = new ChannelBufferInputStream(buffer);
    ObjectInput objectInput = getSerialization(channel).deserialize(channel.getUrl(), input);
    Object object = decodeData(channel, objectInput);
    if(objectInput instanceof Cleanable){
        Cleanable cleanable = (Cleanable)objectInput;
        cleanable.cleanup();
    }
    return object;
}
 
开发者ID:AllenRay,项目名称:dubbo-ex,代码行数:11,代码来源:TransportCodec.java

示例5: encodeRequest

import com.alibaba.dubbo.common.serialize.Cleanable; //导入依赖的package包/类
protected void encodeRequest(Channel channel, ChannelBuffer buffer, Request req) throws IOException {
    Serialization serialization = getSerialization(channel);
    // header.
    byte[] header = new byte[HEADER_LENGTH];
    // set magic number.
    Bytes.short2bytes(MAGIC, header);

    // set request and serialization flag.
    header[2] = (byte) (FLAG_REQUEST | serialization.getContentTypeId());

    if (req.isTwoWay()) header[2] |= FLAG_TWOWAY;
    if (req.isEvent()) header[2] |= FLAG_EVENT;

    // set request id.
    Bytes.long2bytes(req.getId(), header, 4);

    // encode request data.
    int savedWriteIndex = buffer.writerIndex();
    buffer.writerIndex(savedWriteIndex + HEADER_LENGTH);
    ChannelBufferOutputStream bos = new ChannelBufferOutputStream(buffer);
    ObjectOutput out = serialization.serialize(channel.getUrl(), bos);
    try {
        if (req.isEvent()) {
            encodeEventData(channel, out, req.getData());
        } else {
            encodeRequestData(channel, out, req.getData());
        }
        out.flushBuffer();
    } finally {
        // modified by lishen
        if (out instanceof Cleanable) {
            ((Cleanable) out).cleanup();
        }
    }

    bos.flush();
    bos.close();
    int len = bos.writtenBytes();
    checkPayload(channel, len);
    Bytes.int2bytes(len, header, 12);

    // write
    buffer.writerIndex(savedWriteIndex);
    buffer.writeBytes(header); // write header.
    buffer.writerIndex(savedWriteIndex + HEADER_LENGTH + len);
}
 
开发者ID:zhuxiaolei,项目名称:dubbo2,代码行数:47,代码来源:ExchangeCodec.java

示例6: encodeResponse

import com.alibaba.dubbo.common.serialize.Cleanable; //导入依赖的package包/类
protected void encodeResponse(Channel channel, ChannelBuffer buffer, Response res) throws IOException {
    try {
        Serialization serialization = getSerialization(channel);
        // header.
        byte[] header = new byte[HEADER_LENGTH];
        // set magic number.
        Bytes.short2bytes(MAGIC, header);
        // set request and serialization flag.
        header[2] = serialization.getContentTypeId();
        if (res.isHeartbeat()) header[2] |= FLAG_EVENT;
        // set response status.
        byte status = res.getStatus();
        header[3] = status;
        // set request id.
        Bytes.long2bytes(res.getId(), header, 4);

        int savedWriteIndex = buffer.writerIndex();
        buffer.writerIndex(savedWriteIndex + HEADER_LENGTH);
        ChannelBufferOutputStream bos = new ChannelBufferOutputStream(buffer);
        ObjectOutput out = serialization.serialize(channel.getUrl(), bos);
        try {
            // encode response data or error message.
            if (status == Response.OK) {
                if (res.isHeartbeat()) {
                    encodeHeartbeatData(channel, out, res.getResult());
                } else {
                    encodeResponseData(channel, out, res.getResult());
                }
            }
            else out.writeUTF(res.getErrorMessage());
            out.flushBuffer();
        } finally {
            // modified by lishen
            if (out instanceof Cleanable) {
                ((Cleanable) out).cleanup();
            }
        }

        bos.flush();
        bos.close();

        int len = bos.writtenBytes();
        checkPayload(channel, len);
        Bytes.int2bytes(len, header, 12);
        // write
        buffer.writerIndex(savedWriteIndex);
        buffer.writeBytes(header); // write header.
        buffer.writerIndex(savedWriteIndex + HEADER_LENGTH + len);
    } catch (Throwable t) {
        // 发送失败信息给Consumer,否则Consumer只能等超时了
        if (! res.isEvent() && res.getStatus() != Response.BAD_RESPONSE) {
            try {
                // FIXME 在Codec中打印出错日志?在IoHanndler的caught中统一处理?
                logger.warn("Fail to encode response: " + res + ", send bad_response info instead, cause: " + t.getMessage(), t);
                
                Response r = new Response(res.getId(), res.getVersion());
                r.setStatus(Response.BAD_RESPONSE);
                r.setErrorMessage("Failed to send response: " + res + ", cause: " + StringUtils.toString(t));
                channel.send(r);
                
                return;
            } catch (RemotingException e) {
                logger.warn("Failed to send bad_response info back: " + res + ", cause: " + e.getMessage(), e);
            }
        }
        
        // 重新抛出收到的异常
        if (t instanceof IOException) {
            throw (IOException) t;
        } else if (t instanceof RuntimeException) {
            throw (RuntimeException) t;
        } else if (t instanceof Error) {
            throw (Error) t;
        } else  {
            throw new RuntimeException(t.getMessage(), t);
        }
    }
}
 
开发者ID:zhuxiaolei,项目名称:dubbo2,代码行数:79,代码来源:ExchangeCodec.java

示例7: encodeRequest

import com.alibaba.dubbo.common.serialize.Cleanable; //导入依赖的package包/类
protected void encodeRequest(Channel channel, ChannelBuffer buffer, Request req) throws IOException {
	Serialization serialization = getSerialization(channel);
	// header.
	byte[] header = new byte[HEADER_LENGTH];
	// set magic number.
	Bytes.short2bytes(MAGIC, header);

	// set request and serialization flag.
	header[2] = (byte) (FLAG_REQUEST | serialization.getContentTypeId());

	if (req.isTwoWay())
		header[2] |= FLAG_TWOWAY;
	if (req.isEvent())
		header[2] |= FLAG_EVENT;

	// set request id.
	Bytes.long2bytes(req.getId(), header, 4);

	// encode request data.
	int savedWriteIndex = buffer.writerIndex();
	buffer.writerIndex(savedWriteIndex + HEADER_LENGTH);
	ChannelBufferOutputStream bos = new ChannelBufferOutputStream(buffer);
	ObjectOutput out = serialization.serialize(channel.getUrl(), bos);
	try {
		if (req.isEvent()) {
			encodeEventData(channel, out, req.getData());
		} else {
			encodeRequestData(channel, out, req.getData());
		}
		out.flushBuffer();
	} finally {
		// modified by lishen
		if (out instanceof Cleanable) {
			((Cleanable) out).cleanup();
		}
	}

	bos.flush();
	bos.close();
	int len = bos.writtenBytes();
	checkPayload(channel, len);
	Bytes.int2bytes(len, header, 12);

	// write
	buffer.writerIndex(savedWriteIndex);
	buffer.writeBytes(header); // write header.
	buffer.writerIndex(savedWriteIndex + HEADER_LENGTH + len);
}
 
开发者ID:nince-wyj,项目名称:jahhan,代码行数:49,代码来源:ExchangeCodec.java


注:本文中的com.alibaba.dubbo.common.serialize.Cleanable类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。