public static int transferRemaining(ByteBuffer src, ByteBuffer trg) { int xfer = Math.Min(src.remaining(), trg.remaining()); trg.put(src.array(), src.position() + src.arrayOffset(), xfer); src.position(src.position() + xfer); return(xfer); }
public static int transferUpTo(ByteBuffer src, ByteBuffer trg, int maxCount) { int xfer = Math.Min(Math.Min(src.remaining(), trg.remaining()), maxCount); //int oldLimit = src.limit(); //src.limit( src.position() + xfer ); trg.put(src.array(), src.position() + src.arrayOffset(), xfer); src.position(src.position() + xfer); return(xfer); }
private void HandleSeqCompletion() { seqChannel.seqPacketCompleted(); if (seqChannel.XmitRemaining > 0 && seqChannel.getXmitRemainingByRemote() > 0) { xmitChannelRequestData.request(seqChannel.Priority, seqChannel.ChannelId); callXmitRequestListener(); } seqPacketPayload = null; seqChannel = null; packetType = PacketType.NONE; }
public ChabuReceiver(ChabuReceiver receiver, AbortMessage localAbortMessage) { this.localAbortMessage = localAbortMessage; if (receiver == null) { recvBuf = new ByteBuffer(Constants.MAX_RECV_LIMIT_LOW); recvBuf.order(ByteOrder.BIG_ENDIAN); recvBuf.clear(); recvBuf.limit(HEADER_RECV_SZ); } else { recvBuf = receiver.recvBuf; packetSize = receiver.packetSize; } }
private LoopCtrl xmitAction_EvalChannelData() { ChabuChannelImpl ch = PopNextPriorizedChannelRequest(xmitChannelRequestData); if (ch != null) { seqPacketPayload = ch.handleXmitData(this, xmitBuf, RemoteRecvPacketSize - ChabuImpl.SEQ_MIN_SZ); if (seqPacketPayload == null) { return(LoopCtrl.None); } seqChannel = ch; int paddingCount = (4 - (seqPacketPayload.remaining() & 3)) % 4; seqPadding.clear().limit(paddingCount); Utils.ensure(xmitBuf.getInt(0) == xmitBuf.remaining() + seqPacketPayload.remaining() + seqPadding.remaining(), ChabuErrorCode.ASSERT, "{0} = {1} + {2} + {3}", xmitBuf.getInt(0), xmitBuf.remaining(), seqPacketPayload.remaining(), seqPadding.remaining()); } return(xmitBuf.hasRemaining() ? LoopCtrl.Continue : LoopCtrl.None); }
public static void printTraceHexData(TextWriter trc, ByteBuffer buf, int startPos, int endPos) { int len = endPos - startPos; for (int i = 0; i < len; i += 16) { trc.Write(" "); for (int k = 0; k + i < len && k < 16; k++) { if (k > 0) { trc.Write(" "); if (k % 4 == 0) { trc.Write(" "); } } trc.Write("{0:X2}", 0xFF & buf.get(i + k)); } trc.WriteLine(); } trc.WriteLine(" <<"); trc.WriteLine(); }
public static void dump(ByteBuffer bb) { }