package org.fi; // ************************************ java import java.io.*; import java.lang.*; import java.lang.management.ManagementFactory; //public class FMContext implements Writable { public class FMContext { // to test memory, if there is any leaakge, we'll hit an exception // private char [] big = new char [1024*1024]; private int cutpointRandomId = 0; private String targetIO = ""; private String nodeId = "Unknown"; private int pid = 0; private String messageType = "Undecided"; //******************************************** // writable interface // this is serialization (see DatanodeID.java for example) // need to decide how to serialize the RPC //******************************************** public void write(DataOutput out) throws IOException { // xml rpc out.writeInt(cutpointRandomId); out.writeUTF(targetIO); out.writeUTF(nodeId); out.writeInt(pid); out.writeUTF(messageType); // hadoop rpc // out.writeInt(cutpointRandomId); // UTF8.writeString(out, targetIO); // UTF8.writeString(out, nodeId); // out.writeInt(pid); } public void readFields(DataInput in) throws IOException { // xml rpc cutpointRandomId = in.readInt(); targetIO = in.readUTF(); nodeId = in.readUTF(); pid = in.readInt(); messageType = in.readUTF(); // hadoop rpc // cutpointRandomId = in.readInt(); // targetIO = UTF8.readString(in); // nodeId = UTF8.readString(in); // pid = in.readInt(); } //******************************************** // rest //******************************************** public FMContext() { setAttributes(); } public FMContext(String s) { targetIO = new String(s); setAttributes(); } public FMContext(String s, String mtype) { this(s); setMessageType(mtype); } private void setAttributes() { setPidAndNodeId(); } public void setPidAndNodeId() { pid = Util.getIntPid(); String pidStr = Util.getPid(); nodeId = Util.getNodeIdFromPid(pidStr); } public int getPid() { return pid; } public String getNodeId() { return nodeId; } public void setCutpointRandomId() { cutpointRandomId = Util.r8(); } public int getCutpointRandomId() { return cutpointRandomId; } public String getTargetIO() { return targetIO; } private String getTargetIOPrint(String f) { String forPrint = " [targetIO]["; int width = 58; int i; for (i = 0; i+width < f.length() ; i += width) { forPrint += f.substring(i, i+width); forPrint += "\n "; } forPrint += f.substring(i, f.length()); forPrint += "]"; return forPrint; } public String toString() { String tmp = targetIO; if (targetIO.contains("/tmp/" + FMLogic.CASS_USERNAME)) tmp = tmp.replaceFirst("/tmp/" + FMLogic.CASS_USERNAME, "/thh/"); if (targetIO.contains(FMLogic.CASS_STORAGE_DIR)) tmp = tmp.replaceFirst(FMLogic.CASS_STORAGE_DIR, "/rhh/"); String buf = String.format(" [targetIO][%s] at *%s* :: [%s] message \n", tmp, nodeId, messageType); return buf; } public void setTargetIO(String f) { targetIO = new String (f); } public String getMessageType() { return messageType; } public void setMessageType(String t) { messageType = new String (t); } }