public StructString(String init, int size) { chars = new char[size]; len = 0; setString(init); }
@Override @NoAssist public Object getFieldValues() { return toString(); } }
/** * modify content of this StructString. The length of the new String must not exceed * the length of internal char array * @param s */ public void setString(String s) { if ( s == null ) { setLen(0); return; } if ( s.length() > charsLen() ) { throw new RuntimeException("String length exceeds buffer size. String len "+s.length()+" charsLen:"+charsLen()); } for (int i=0; i < s.length(); i++) { chars(i,s.charAt(i)); } len = s.length(); }
public PacketReceiveBuffer getBuffer(StructString sender) { PacketReceiveBuffer receiveBuffer = bufferMap.get(sender); if ( receiveBuffer == null ) { int hSize = historySize; if ( ((long)hSize*packetSize) > Integer.MAX_VALUE-2*packetSize ) { final int newHist = (Integer.MAX_VALUE - 2 * packetSize) / packetSize; topicEntry.getSubscriberConf().receiveBufferPackets(newHist); FCLog.get().warn("int overflow, degrading history size from "+hSize+" to "+newHist); historySize = newHist; } receiveBuffer = new PacketReceiveBuffer(packetSize,nodeId,historySize,sender.toString(), topicEntry, receiver); bufferMap.put((StructString) sender.createCopy(),receiveBuffer); } return receiveBuffer; }
payMaxLen = template.data.length; template.getSender().setString(theNodeId); template.setTopic(topic); retransTemplate.getSender().setString(theNodeId); retransTemplate.getReceiver().setString(receivesFrom); retransTemplate.setTopic(topic); retransTemplate.setSeqNo(-1); this.nodeId = packetAllocator.newStruct( new StructString(Packet.MAX_NODE_NAME_LEN) ); this.nodeId.setString(theNodeId);
@Override public int hashCode() { int l = len; int h = 0; if (l > 0) { for (int i = 0; i < len; i++) { h = 31 * h + chars(i); } } return h; }
@Override @NoAssist public int compareTo(Object o) { if ( o instanceof StructString) { return compareTo((StructString)o); } return -1; }
public TransportDriver(PhysicalTransport trans, String nodeId) { this.trans = trans; this.nodeId = alloc.newStruct( new StructString(nodeId) ); final PhysicalTransportConf tconf = trans.getConf(); this.autoFlushMS = tconf.getAutoFlushMS(); this.spinIdleLoopMicros = tconf.getSpinLoopMicros(); this.idleParkMicros = tconf.getIdleParkMicros(); receiver = new ReceiveBufferDispatcher[MAX_NUM_TOPICS]; sender = new PacketSendBuffer[MAX_NUM_TOPICS]; lastMsg = new long[MAX_NUM_TOPICS]; receiverThread = new Thread("trans receiver "+ tconf.getName()) { public void run() { receiveLoop(); } }; receiverThread.start(); houseKeeping = new Thread("trans houseKeeping "+ tconf.getName()) { public void run() { houseKeepingLoop(); } }; houseKeeping.start(); }
/** * modify content of this StructString. The length of the new String must not exceed * the length of internal char array * @param s */ public void setString(String s) { if ( s == null ) { setLen(0); return; } if ( s.length() > charsLen() ) { throw new RuntimeException("String length exceeds buffer size. String len "+s.length()+" charsLen:"+charsLen()); } for (int i=0; i < s.length(); i++) { chars(i,s.charAt(i)); } len = s.length(); }
public PacketReceiveBuffer getBuffer(StructString sender) { PacketReceiveBuffer receiveBuffer = bufferMap.get(sender); if ( receiveBuffer == null ) { int hSize = historySize; if ( ((long)hSize*packetSize) > Integer.MAX_VALUE-2*packetSize ) { final int newHist = (Integer.MAX_VALUE - 2 * packetSize) / packetSize; topicEntry.getSubscriberConf().receiveBufferPackets(newHist); FCLog.get().warn("int overflow, degrading history size from "+hSize+" to "+newHist); historySize = newHist; } receiveBuffer = new PacketReceiveBuffer(packetSize,nodeId,historySize,sender.toString(), topicEntry, receiver); bufferMap.put((StructString) sender.createCopy(),receiveBuffer); } return receiveBuffer; }
payMaxLen = template.data.length; template.getSender().setString(theNodeId); template.setTopic(topic); retransTemplate.getSender().setString(theNodeId); retransTemplate.getReceiver().setString(receivesFrom); retransTemplate.setTopic(topic); retransTemplate.setSeqNo(-1); this.nodeId = packetAllocator.newStruct( new StructString(Packet.MAX_NODE_NAME_LEN) ); this.nodeId.setString(theNodeId);
public String toString() { // fixme: optimize this by direct copy char ch[] = new char[len]; for ( int i=0; i < len; i++ ) { ch[i] = chars(i); } return new String(ch); }
@Override @NoAssist public int compareTo(Object o) { if ( o instanceof StructString) { return compareTo((StructString)o); } return -1; }
public TransportDriver(PhysicalTransport trans, String nodeId) { this.trans = trans; this.nodeId = alloc.newStruct( new StructString(nodeId) ); final PhysicalTransportConf tconf = trans.getConf(); this.autoFlushMS = tconf.getAutoFlushMS(); this.spinIdleLoopMicros = tconf.getSpinLoopMicros(); this.idleParkMicros = tconf.getIdleParkMicros(); receiver = new ReceiveBufferDispatcher[MAX_NUM_TOPICS]; sender = new PacketSendBuffer[MAX_NUM_TOPICS]; lastMsg = new long[MAX_NUM_TOPICS]; receiverThread = new Thread("trans receiver "+ tconf.getName()) { public void run() { receiveLoop(); } }; receiverThread.start(); houseKeeping = new Thread("trans houseKeeping "+ tconf.getName()) { public void run() { houseKeepingLoop(); } }; houseKeeping.start(); }
public StructString(String init, int size) { chars = new char[size]; len = 0; setString(init); }
@Override @NoAssist public Object getFieldValues() { return toString(); } }