001package com.avaje.ebeaninternal.server.cluster.message; 002 003import com.avaje.ebeaninternal.server.cluster.BinaryMessageList; 004import com.avaje.ebeaninternal.server.cluster.ClusterManager; 005import com.avaje.ebeaninternal.server.transaction.RemoteTransactionEvent; 006 007import java.io.IOException; 008 009/** 010 * Mechanism to convert RemoteTransactionEvent to/from byte[] content. 011 */ 012public class MessageReadWrite { 013 014 private final ClusterManager clusterManager; 015 016 public MessageReadWrite(ClusterManager clusterManager) { 017 this.clusterManager = clusterManager; 018 } 019 020 /** 021 * Convert the RemoteTransactionEvent to raw byte[] content. 022 */ 023 public byte[] write(RemoteTransactionEvent transEvent) throws IOException { 024 025 BinaryMessageList messageList = new BinaryMessageList(); 026 transEvent.writeBinaryMessage(messageList); 027 028 BinaryDataWriter writer = new BinaryDataWriter(transEvent.getServerName(), messageList); 029 return writer.write(); 030 } 031 032 /** 033 * Convert the byte[] content to RemoteTransactionEvent. 034 */ 035 public RemoteTransactionEvent read(byte[] data) throws IOException { 036 037 BinaryDataReader reader = new BinaryDataReader(clusterManager, data); 038 return reader.read(); 039 } 040}