replicationdata.java

来自「JGRoups源码」· Java 代码 · 共 144 行

JAVA
144
字号
// $Id: ReplicationData.java,v 1.3 2004/07/05 05:41:45 belaban Exp $package org.jgroups.blocks;import java.io.Externalizable;import java.io.IOException;import java.io.ObjectInput;import java.io.ObjectOutput;/** * Class used for data exchange by ReplicationManager and ReplicationReceiver. * @author Bela Ban */public class ReplicationData implements Externalizable {    public static final int SEND     = 1;    public static final int COMMIT   = 2;    public static final int ROLLBACK = 3;        int      type=0;    byte[]   data=null;    Xid      transaction=null;    byte[]   lock_info=null;    long     lock_acquisition_timeout=0;    long     lock_lease_timeout=0;    boolean  use_locks=false;            public ReplicationData() {        ; // used by externalization    }        public ReplicationData(int      type,                           byte[]   data,                           Xid      transaction,                           byte[]   lock_info,                           long     lock_acquisition_timeout,                           long     lock_lease_timeout,                           boolean  use_locks) {        this.type=type;        this.data=data;        this.transaction=transaction;        this.lock_info=lock_info;        this.lock_acquisition_timeout=lock_acquisition_timeout;        this.lock_lease_timeout=lock_lease_timeout;        this.use_locks=use_locks;    }        public int     getType()                   {return type;}    public byte[]  getData()                   {return data;}    public Xid     getTransaction()            {return transaction;}    public byte[]  getLockInfo()               {return lock_info;}    public long    getLockAcquisitionTimeout() {return lock_acquisition_timeout;}    public long    getLockLeaseTimeout()       {return lock_lease_timeout;}    public boolean useLocks()                  {return use_locks;}    public String toString() {        StringBuffer sb=new StringBuffer();        sb.append(typeToString(type)).append(" [").append(", transaction=").append(transaction);        switch(type) {        case SEND:            if(data != null)                sb.append(", data=").append(data.length).append(" bytes");            sb.append(", lock_acquisition_timeout=").append(lock_acquisition_timeout);            sb.append(", lock_lease_timeout=").append(lock_lease_timeout);            sb.append(", use_locks=").append(use_locks);            break;        case COMMIT:        case ROLLBACK:            break;        }        sb.append(']');        return sb.toString();    }    public static String typeToString(int t) {        switch(t) {        case SEND:     return "SEND";        case COMMIT:   return "COMMIT";        case ROLLBACK: return "ROLLBACK";        default:       return "<unknown>";        }    }    public void writeExternal(ObjectOutput out) throws IOException {        out.writeInt(type);        if(data != null) {            out.writeInt(data.length);            out.write(data, 0, data.length);        }        else            out.writeInt(0);        if(transaction != null) {            out.writeBoolean(true);            transaction.writeExternal(out);        }        else            out.writeBoolean(false);        if(use_locks) {            out.writeBoolean(true);            if(lock_info != null) {                out.writeInt(lock_info.length);                out.write(lock_info, 0, lock_info.length);            }            else                out.writeInt(0);            out.writeLong(lock_acquisition_timeout);            out.writeLong(lock_lease_timeout);        }        else            out.writeBoolean(false);    }            public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {        int num;        type=in.readInt();        if((num=in.readInt()) > 0) {            data=new byte[num];            in.readFully(data, 0, num);        }        if(in.readBoolean()) {            transaction=new Xid();            transaction.readExternal(in);        }        use_locks=in.readBoolean();        if(use_locks) {            if((num=in.readInt()) > 0) {                lock_info=new byte[num];                in.readFully(lock_info, 0, num);            }            lock_acquisition_timeout=in.readLong();            lock_lease_timeout=in.readLong();                }    }}

⌨️ 快捷键说明

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