Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
 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;
     }
 }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
 public static void dump(ByteBuffer bb)
 {
 }