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

📄 abstractreplicatedmap.java

📁 精通tomcat书籍原代码,希望大家共同学习
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        public boolean isPrimary() {            return ( (!proxy) && (!backup));        }        public void setProxy(boolean proxy) {            this.proxy = proxy;        }        public boolean isDiffable() {            return (value instanceof ReplicatedMapEntry) &&                   ((ReplicatedMapEntry)value).isDiffable();        }        public void setBackupNodes(Member[] nodes) {            this.backupNodes = nodes;        }        public Member[] getBackupNodes() {            return backupNodes;        }        public Object getValue() {            return value;        }        public Object setValue(Object value) {            Object old = this.value;            this.value = (Serializable) value;            return old;        }        public Object getKey() {            return key;        }                public Object setKey(Object key) {            Object old = this.key;            this.key = (Serializable)key;            return old;        }        public int hashCode() {            return key.hashCode();        }        public boolean equals(Object o) {            return key.equals(o);        }        /**         * apply a diff, or an entire object         * @param data byte[]         * @param offset int         * @param length int         * @param diff boolean         * @throws IOException         * @throws ClassNotFoundException         */        public void apply(byte[] data, int offset, int length, boolean diff) throws IOException, ClassNotFoundException {            if (isDiffable() && diff) {                ReplicatedMapEntry rentry = (ReplicatedMapEntry) value;                try {                    rentry.lock();                    rentry.applyDiff(data, offset, length);                } finally {                    rentry.unlock();                }            } else if (length == 0) {                value = null;                proxy = true;            } else {                value = XByteBuffer.deserialize(data, offset, length);            }        }                public String toString() {            StringBuffer buf = new StringBuffer("MapEntry[key:");            buf.append(getKey()).append("; ");            buf.append("value:").append(getValue()).append("; ");            buf.append("primary:").append(isPrimary()).append("; ");            buf.append("backup:").append(isBackup()).append("; ");            buf.append("proxy:").append(isProxy()).append(";]");            return buf.toString();        }    }//------------------------------------------------------------------------------//                map message to send to and from other maps//------------------------------------------------------------------------------    public static class MapMessage implements Serializable {        public static final int MSG_BACKUP = 1;        public static final int MSG_RETRIEVE_BACKUP = 2;        public static final int MSG_PROXY = 3;        public static final int MSG_REMOVE = 4;        public static final int MSG_STATE = 5;        public static final int MSG_START = 6;        public static final int MSG_STOP = 7;        public static final int MSG_INIT = 8;        private byte[] mapId;        private int msgtype;        private boolean diff;        private transient Serializable key;        private transient Serializable value;        private byte[] valuedata;        private byte[] keydata;        private byte[] diffvalue;        private Member[] nodes;        public MapMessage() {}        public MapMessage(byte[] mapId,int msgtype, boolean diff,                          Serializable key, Serializable value,                          byte[] diffvalue, Member[] nodes)  {            this.mapId = mapId;            this.msgtype = msgtype;            this.diff = diff;            this.key = key;            this.value = value;            this.diffvalue = diffvalue;            this.nodes = nodes;            setValue(value);            setKey(key);        }                public void deserialize(ClassLoader[] cls) throws IOException, ClassNotFoundException {            key(cls);            value(cls);        }        public int getMsgType() {            return msgtype;        }        public boolean isDiff() {            return diff;        }        public Serializable getKey() {            try {                return key(null);            } catch ( Exception x ) {                log.error("Deserialization error of the MapMessage.key",x);                return null;            }        }        public Serializable key(ClassLoader[] cls) throws IOException, ClassNotFoundException {            if ( key!=null ) return key;            if ( keydata == null || keydata.length == 0 ) return null;            key = XByteBuffer.deserialize(keydata,0,keydata.length,cls);            keydata = null;            return key;        }                public byte[] getKeyData() {            return keydata;        }                public Serializable getValue() {            try {                return value(null);            } catch ( Exception x ) {                log.error("Deserialization error of the MapMessage.value",x);                return null;            }        }        public Serializable value(ClassLoader[] cls) throws IOException, ClassNotFoundException  {            if ( value!=null ) return value;            if ( valuedata == null || valuedata.length == 0 ) return null;            value = XByteBuffer.deserialize(valuedata,0,valuedata.length,cls);            valuedata = null;;            return value;        }                public byte[] getValueData() {            return valuedata;        }        public byte[] getDiffValue() {            return diffvalue;        }        public Member[] getBackupNodes() {            return nodes;        }        private void setBackUpNodes(Member[] nodes) {            this.nodes = nodes;        }        public byte[] getMapId() {            return mapId;        }        public void setValue(Serializable value) {            try {                if ( value != null ) valuedata = XByteBuffer.serialize(value);                this.value = value;            }catch ( IOException x ) {                throw new RuntimeException(x);            }        }                public void setKey(Serializable key) {            try {                if (key != null) keydata = XByteBuffer.serialize(key);                this.key = key;            } catch (IOException x) {                throw new RuntimeException(x);            }        }                protected Member[] readMembers(ObjectInput in) throws IOException, ClassNotFoundException {            int nodecount = in.readInt();            Member[] members = new Member[nodecount];            for ( int i=0; i<members.length; i++ ) {                byte[] d = new byte[in.readInt()];                in.read(d);                if (d.length > 0) members[i] = MemberImpl.getMember(d);            }            return members;        }                protected void writeMembers(ObjectOutput out,Member[] members) throws IOException {            if ( members == null ) members = new Member[0];            out.writeInt(members.length);            for (int i=0; i<members.length; i++ ) {                if ( members[i] != null ) {                    byte[] d = members[i] != null ? ( (MemberImpl)members[i]).getData(false) : new byte[0];                    out.writeInt(d.length);                    out.write(d);                }            }        }                        /**         * shallow clone         * @return Object         */        public Object clone() {            MapMessage msg = new MapMessage(this.mapId, this.msgtype, this.diff, this.key, this.value, this.diffvalue, this.nodes);            msg.keydata = this.keydata;            msg.valuedata = this.valuedata;            return msg;        }    } //MapMessage    public Channel getChannel() {        return channel;    }    public byte[] getMapContextName() {        return mapContextName;    }    public RpcChannel getRpcChannel() {        return rpcChannel;    }    public long getRpcTimeout() {        return rpcTimeout;    }    public Object getStateMutex() {        return stateMutex;    }    public boolean isStateTransferred() {        return stateTransferred;    }    public Object getMapOwner() {        return mapOwner;    }    public ClassLoader[] getExternalLoaders() {        return externalLoaders;    }    public int getChannelSendOptions() {        return channelSendOptions;    }    public void setMapOwner(Object mapOwner) {        this.mapOwner = mapOwner;    }    public void setExternalLoaders(ClassLoader[] externalLoaders) {        this.externalLoaders = externalLoaders;    }    public void setChannelSendOptions(int channelSendOptions) {        this.channelSendOptions = channelSendOptions;    }}

⌨️ 快捷键说明

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