/** * Alipay.com Inc. * Copyright (c) 2004-2012 All Rights Reserved. */ package com.alipay.zdal.datasource.tm; /** * LocalId is a wrapper for a long value that identifies a transaction within * a JBoss server. This implementation is immutable and serializable at * runtime. * * @author ���� * @version $Id: LocalId.java, v 0.1 2014-1-6 ����05:47:48 Exp $ */ public class LocalId implements java.io.Externalizable { static final long serialVersionUID = 2076780468014328911L; /** * Long value that identifies a transaction within a JBoss server. * This is really a sequence number generated by the XidFactory. */ private long value; // Static -------------------------------------------------------- public static void toByteArray(long localIdValue, byte[] dst, int dstBegin) { dst[dstBegin + 0] = (byte) (0xff & (localIdValue >>> 56)); dst[dstBegin + 1] = (byte) (0xff & (localIdValue >>> 48)); dst[dstBegin + 2] = (byte) (0xff & (localIdValue >>> 40)); dst[dstBegin + 3] = (byte) (0xff & (localIdValue >>> 32)); dst[dstBegin + 4] = (byte) (0xff & (localIdValue >>> 24)); dst[dstBegin + 5] = (byte) (0xff & (localIdValue >>> 16)); dst[dstBegin + 6] = (byte) (0xff & (localIdValue >>> 8)); dst[dstBegin + 7] = (byte) (0xff & (localIdValue >>> 0)); } public static long fromByteArray(byte[] src, int srcBegin) { return ((long) (src[srcBegin + 0] & 0xff) << 56) | ((long) (src[srcBegin + 1] & 0xff) << 48) | ((long) (src[srcBegin + 2] & 0xff) << 40) | ((long) (src[srcBegin + 3] & 0xff) << 32) | ((long) (src[srcBegin + 4] & 0xff) << 24) | ((long) (src[srcBegin + 5] & 0xff) << 16) | ((long) (src[srcBegin + 6] & 0xff) << 8) | ((long) (src[srcBegin + 7] & 0xff)); } // Constructors -------------------------------------------------- /** * No-arg constructor for Externalizable support. */ public LocalId() { } /** * Create a new instance. This constructor is public <em>only</em> * to get around a class loader problem; it should be package-private. */ public LocalId(long value) { this.value = value; } public LocalId(XidImpl xid) { this(xid.getLocalIdValue()); } // Public -------------------------------------------------------- public long getValue() { return value; } /** * Compare for equality. */ public boolean equals(Object obj) { return (obj instanceof LocalId) ? (value == ((LocalId) obj).value) : false; } public int hashCode() { return (int) value; } // Externalizable implementation --------------------------------- public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException { out.writeLong(value); } public void readExternal(java.io.ObjectInput in) throws java.io.IOException, ClassNotFoundException { value = in.readLong(); } }