⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bytequeue.java

📁 tinyos2.0版本驱动
💻 JAVA
字号:
//$Id: ByteQueue.java,v 1.4 2006/12/12 18:22:59 vlahan Exp $/* "Copyright (c) 2000-2003 The Regents of the University of California.   * All rights reserved. * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose, without fee, and without written agreement * is hereby granted, provided that the above copyright notice, the following * two paragraphs and the author appear in all copies of this software. *  * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY * OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *  * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS." *///@author Cory Sharp <cssharp@eecs.berkeley.edu>package net.tinyos.comm;public class ByteQueue{  byte buffer[];  int nbegin;  int nend;  int num_free_back()  {    return buffer.length - nend;  }  void left_justify_into( byte dest[] )  {    for( int i=nbegin,j=0; i<nend; i++,j++ )      dest[j] = buffer[i];    nend -= nbegin;    nbegin = 0;    buffer = dest;  }  synchronized void ensure_free( int len )  {    if( (nbegin + num_free_back()) < len )    {      int newlen = buffer.length * 2;      int total = available() + len;      while( newlen < total )        newlen *= 2;      left_justify_into( new byte[newlen] );    }    else if( num_free_back() < len )    {      left_justify_into( buffer );    }  }  public int available()  {    return nend - nbegin;  }  public void push_back( byte b )  {    ensure_free(1);    buffer[nend++] = b;  }  public void push_back( byte b[] )  {    push_back( b, 0, b.length );  }  public void push_back( byte b[], int off, int len )  {    ensure_free( len );    int bend = off + len;    while( off < bend )      buffer[nend++] = b[off++];  }  public int pop_front()  {    if( available() > 0 )      return ((int)buffer[nbegin++]) & 255;    return -1;  }  public int pop_front( byte b[] )  {    return pop_front( b, 0, b.length );  }  public int pop_front( byte b[], int off, int len )  {    int n = available();    if( n > len )      n = len;    int bend = off + len;    while( off < bend )      b[off++] = buffer[nbegin++];    return n;  }  public ByteQueue()  {    this(64);  }  public ByteQueue( int initial_buffer_length )  {    buffer = new byte[ initial_buffer_length ];    nbegin = 0;    nend = 0;  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -