diff --git a/lib/JavaTUN0.3.jar b/lib/JavaTUN0.3.jar index cdb2fef..6befd4b 100644 Binary files a/lib/JavaTUN0.3.jar and b/lib/JavaTUN0.3.jar differ diff --git a/lib/KNElib1.0.jar b/lib/KNElib1.0.jar index ddab9ad..6405709 100644 Binary files a/lib/KNElib1.0.jar and b/lib/KNElib1.0.jar differ diff --git a/src/org/kne/cloud/network/ByteBufferPool.java b/src/org/kne/cloud/network/ByteBufferPool.java index d40e705..fc47623 100644 --- a/src/org/kne/cloud/network/ByteBufferPool.java +++ b/src/org/kne/cloud/network/ByteBufferPool.java @@ -9,9 +9,6 @@ import java.util.concurrent.atomic.AtomicReferenceArray; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import org.kne.concurrent.SpinLock; -import org.kne.debug.TimeDebugger; - public class ByteBufferPool { private AtomicReferenceArray< ByteBuffer> rec; diff --git a/src/org/kne/cloud/network/FilterSocket.java b/src/org/kne/cloud/network/FilterSocket.java index 678ceb6..7e90858 100644 --- a/src/org/kne/cloud/network/FilterSocket.java +++ b/src/org/kne/cloud/network/FilterSocket.java @@ -258,7 +258,7 @@ public class FilterSocket extends Socket { // TODO 自动生成的方法存根 return socket.isOutputShutdown(); } - + @SuppressWarnings("all") @Override public void setPerformancePreferences(int connectionTime, int latency, int bandwidth) { // TODO 自动生成的方法存根 diff --git a/src/org/kne/cloud/network/congestion/ArrayListMessageBatcher.java b/src/org/kne/cloud/network/congestion/ArrayListMessageBatcher.java index 73445e5..1a1f43b 100644 --- a/src/org/kne/cloud/network/congestion/ArrayListMessageBatcher.java +++ b/src/org/kne/cloud/network/congestion/ArrayListMessageBatcher.java @@ -8,7 +8,7 @@ import java.util.concurrent.locks.LockSupport; import java.util.function.Consumer; import org.kne.cloud.network.ThreadTool; -import org.kne.concurrent.SpinLock; +import org.kne.concurrent.YieldLock; import org.kne.opencl64.Releaser; /** @@ -105,7 +105,7 @@ class ArrayListMessageBatcherReleaser extends Releaser implements Runnable,MessageBatcher{ private ArrayList messageList; - private Lock lock=new SpinLock(); + private Lock lock=new YieldLock(); private final int batchSize; private final long maxDelay; private Consumer> consumer; diff --git a/src/org/kne/cloud/network/congestion/Vegas2CongestionAlgorithm.java b/src/org/kne/cloud/network/congestion/Vegas2CongestionAlgorithm.java index ca2caed..a661289 100644 --- a/src/org/kne/cloud/network/congestion/Vegas2CongestionAlgorithm.java +++ b/src/org/kne/cloud/network/congestion/Vegas2CongestionAlgorithm.java @@ -2,8 +2,7 @@ package org.kne.cloud.network.congestion; import java.util.function.Consumer; -import org.kne.cloud.network.monitor.DelaySampler; -import org.kne.concurrent.SpinLock; +import org.kne.concurrent.YieldLock; public class Vegas2CongestionAlgorithm implements CongestionAlgorithm,DetnetCongestionAlgorithm { @@ -32,7 +31,7 @@ public class Vegas2CongestionAlgorithm implements CongestionAlgorithm,DetnetCong private volatile long window2 = MIN_WINDOW; private volatile long maxwindow = 99999999999L; - private final SpinLock slock=new SpinLock(); + private final YieldLock slock=new YieldLock(); public Vegas2CongestionAlgorithm() { reset(); diff --git a/src/org/kne/cloud/network/ipv6/IPv6Packet.java b/src/org/kne/cloud/network/ipv6/IPv6Packet.java index 6b502ee..79be864 100644 --- a/src/org/kne/cloud/network/ipv6/IPv6Packet.java +++ b/src/org/kne/cloud/network/ipv6/IPv6Packet.java @@ -613,13 +613,16 @@ public class IPv6Packet extends NetworkPacket { */ @Override public void readFromChannel(ReadableByteChannel din, long length) throws IOException { - IPv6header.limit(IPv6_HEADER_LENGTH); IPv6header.position(0); - while (IPv6header.hasRemaining()) { - if (din.read(IPv6header) == -1) { - throw new EOFException(); - } + IPv6header.limit(1); + KNEChannels.readFully(din,IPv6header); + int ver=getVersion(); + if(ver!=6){ + throw new StreamCorruptedException("Unsupported IPv"+ver); } + + IPv6header.limit(IPv6_HEADER_LENGTH); + KNEChannels.readFully(din,IPv6header); int payloadlength = getPayloadLength(); int nextheader = getNextHeader(); loop: while (true) { diff --git a/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java b/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java index 07f34d7..85d74ae 100644 --- a/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java +++ b/src/org/kne/cloud/network/ipv6/IPv6TUNLoopbackNetworkLink.java @@ -2,8 +2,11 @@ package org.kne.cloud.network.ipv6; import java.io.Closeable; import java.io.IOException; +import java.io.StreamCorruptedException; import java.net.InetAddress; import java.nio.ByteBuffer; +import java.nio.channels.ReadableByteChannel; +import java.nio.channels.WritableByteChannel; import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -25,20 +28,21 @@ import org.kne.cloud.network.srv6.SRv6Router; import org.kne.cloud.network.tun.InetAddressRow; import org.kne.cloud.network.tun.TUNChannel; import org.kne.cloud.network.tun.TUNNetworkDevice; -import org.kne.concurrent.SpinLock; +import org.kne.concurrent.ThreadParker; +import org.kne.concurrent.YieldLock; import org.kne.io.KNEChannels; public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink implements IPv6NetworkLink, Closeable, AutoCloseable { + private TUNChannel channel; private TUNNetworkDevice tun; private IPv6AddressGroup hostAddress; - private Thread tr; - private Lock slok = new SpinLock(); + private Lock slok = new YieldLock(); public IPv6TUNLoopbackNetworkLink(String name,IPv6AddressGroup hostAddress, int mtu, List dns) throws IOException { super(true); @@ -60,27 +64,20 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink } catch (IOException e) { e.printStackTrace(); } - - TUNChannel channel= tun.openSession(); + + channel = tun.openSession(); Thread tb = new Thread(() -> { while (true) { - ByteBuffer tmp = NetworkPacket.bufferAllocator.allocateNative(65535); try { - channel.read(tmp); - tmp.flip(); - // System.out.println(tmp); - if (IPv6Packet.getIPVersion(tmp.get(0)) == 6) { - + ReadableByteChannel tmp = channel.readPacket(); try { IPv6Packet ipp = new IPv6Packet(); - ipp.readFromChannel(KNEChannels.newReadableChannel(tmp), mtu); + ipp.readFromChannel(tmp, mtu); - // NetworkPacket.databufferpool_65535.back(tmp); BiConsumer> con = super.getReceiveConsumer(); if (con != null) { if (ipp.getPayload().getProtocolNumber() == 6) { SRv6Router router = getSrv6Router(); - if (router != null) { router.insertHopByHopHeader(ipp); } @@ -91,51 +88,22 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink if (pid != null) { monitor.getUploadBandwidth().recordPacket(pid,1, (int) ipp.getTotalLength()); } - // ipp.setDisposeAfterSend(true); - // ipp.getPayload().setDisposeAfterSend(true); return ipp; }); - } else { - // ipp.dispose(); } + }catch(StreamCorruptedException e){ } catch (IOException e) { e.printStackTrace(); + }finally { + tmp.close(); } - - } else { - // NetworkPacket.databufferpool_65535.back(tmp); - } } catch (Exception e) { - // NetworkPacket.databufferpool_65535.back(tmp); e.printStackTrace(); } } }); - tb.setPriority(Thread.MAX_PRIORITY - 1); tb.start(); - tr = new Thread(() -> { - while (true) { - ByteBuffer tmp = sendQueue.poll(); - if (tmp != null) { - slok.lock(); - try { - channel.write(tmp); - } catch (IOException e) { - e.printStackTrace(); - } finally { - slok.unlock(); - // NetworkPacket.databufferpool_65535.back(tmp); - } - } else { - - LockSupport.parkNanos(1000000L); - } - - } - }); - tr.setPriority(Thread.MAX_PRIORITY - 1); - tr.start(); } catch (UnsatisfiedLinkError e) { throw new IOException(e); @@ -143,8 +111,6 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink onOnlineStateUpdate(); } - private LinkedBlockingQueue sendQueue = new LinkedBlockingQueue(); - private SpeedAndTrafficMonitorDataImpl monitor; @Override @@ -192,17 +158,20 @@ public class IPv6TUNLoopbackNetworkLink extends AbstractIPv6NetworkLink } private void sendPacket0(IPv6Packet pack, KLALBOAMHopByHopTLV oamtlv, DetNetSRv6TLV detNet) throws IOException { - - - ByteBuffer tmp = NetworkPacket.bufferAllocator.allocate(65535); - pack.writeToChannel(KNEChannels.newWritableChannel(tmp)); + WritableByteChannel wp = null; + slok.lock(); + try { + wp= channel.writePacket(); + pack.writeToChannel(wp); UUID pid = pack.getPacketID(); if (pid != null) { - monitor.getUploadBandwidth().recordPacket(pid, 1,(int) pack.getTotalLength()); + monitor.getUploadBandwidth().recordPacket(pid, 1, (int) pack.getTotalLength()); } - tmp.flip(); - sendQueue.add(tmp); - LockSupport.unpark(tr); + }finally { + if(wp!=null) + wp.close(); + slok.unlock(); + } } @Override diff --git a/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java b/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java index 2f440fd..d96c623 100644 --- a/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java +++ b/src/org/kne/cloud/network/klalb/KLALBRemoteLink.java @@ -41,8 +41,8 @@ import org.kne.cloud.network.monitor.LinkStatus; import org.kne.cloud.network.monitor.SpeedAndTrafficAndDelayMonitorDataImpl; import org.kne.cloud.network.perf.TESTNPacket; import org.kne.cloud.network.te.BandwidthDistributer; -import org.kne.concurrent.SpinLock; import org.kne.concurrent.ThreadParker; +import org.kne.concurrent.YieldLock; import org.kne.math.Long128; public class KLALBRemoteLink extends AbstractControlledIPv6NetworkLink implements ControlledIPv6NetworkLink { @@ -192,7 +192,7 @@ public class KLALBRemoteLink extends AbstractControlledIPv6NetworkLink implement private volatile long time = System.nanoTime(); private volatile long pingInterval = 100000000L; - private Lock sendLock=new SpinLock(); + private Lock sendLock=new YieldLock(); private boolean checkPingTime() { long cu = System.nanoTime(); diff --git a/src/org/kne/cloud/network/klalb/ui/GraphPanel.java b/src/org/kne/cloud/network/klalb/ui/GraphPanel.java index 7da8456..3f75dac 100644 --- a/src/org/kne/cloud/network/klalb/ui/GraphPanel.java +++ b/src/org/kne/cloud/network/klalb/ui/GraphPanel.java @@ -569,13 +569,13 @@ public class GraphPanel extends JPanel { double x_4 = ex - arrXY_2[0]; // (x4,y4)是第二端点 double y_4 = ey - arrXY_2[1]; - Double X3 = new Double(x_3); + Double X3 = Double.valueOf(x_3); x3 = X3.intValue(); - Double Y3 = new Double(y_3); + Double Y3 = Double.valueOf(y_3); y3 = Y3.intValue(); - Double X4 = new Double(x_4); + Double X4 = Double.valueOf(x_4); x4 = X4.intValue(); - Double Y4 = new Double(y_4); + Double Y4 =Double.valueOf(y_4); y4 = Y4.intValue(); // 画线 g2.drawLine(sx, sy, ex, ey); diff --git a/src/org/kne/cloud/network/kltp/KLTPOutputStream.java b/src/org/kne/cloud/network/kltp/KLTPOutputStream.java index 683fd63..ebe1861 100644 --- a/src/org/kne/cloud/network/kltp/KLTPOutputStream.java +++ b/src/org/kne/cloud/network/kltp/KLTPOutputStream.java @@ -82,7 +82,7 @@ public class KLTPOutputStream extends OutputStream implements KLTPPacketConsumer - private Lock olock=new SpinLock(); + private Lock olock=new YieldLock(); private volatile boolean autoFlush=true; @Override diff --git a/src/org/kne/debug/Debuger.java b/src/org/kne/debug/Debuger.java deleted file mode 100644 index be60d10..0000000 --- a/src/org/kne/debug/Debuger.java +++ /dev/null @@ -1,129 +0,0 @@ -package org.kne.debug; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - - -import java.util.Set; -final class Int implements Comparable,Cloneable { - public int value; - - public Int(int value) { - super(); - this.value = value; - } - - @Override - public int hashCode() { - return value; - } - - @Override - public Object clone() throws CloneNotSupportedException { - // TODO �Զ����ɵķ������ - return super.clone(); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - Int other = (Int) obj; - if (value != other.value) - return false; - return true; - } - - @Override - public String toString() { - return new Integer(value).toString(); - } - - @Override - public int compareTo(Int o) { - - return o.value-value; - } - - - -} - -public class Debuger extends Thread { - Map ,Object[]>md=new HashMap,Object[]>(); - @Override - public void run() { - while(true){ - for(int iz=0;iz<100;iz++){ - Map m=Thread.getAllStackTraces(); - Set> s=m.entrySet(); - Iterator> i=s.iterator(); - while(i.hasNext()){ - Entryelements =i.next(); - StackTraceElement[]value=elements.getValue(); - List l=new ArrayList(value.length); - for (int j = 0; j < value.length; j++) { - l.add(value[j]); - } - if(!l.isEmpty()) - if(md.containsKey(l)){ - ((Int)md.get(l)[0]).value++; - }else{ - md.put(l,new Object[]{new Int(1),elements.getKey()} ); - } - } - - } - ArrayList, Object[]>> tmp=new ArrayList(); - Set, Object[]>> sn=md.entrySet(); - Iterator, Object[]>> in=sn.iterator(); - while(in.hasNext()){ - Entry, Object[]>elements =in.next(); - - tmp.add(elements); - } - tmp.sort(new Comparator, Object[]>>() { - - @Override - public int compare(Entry, Object[]> o1, - Entry, Object[]> o2) { - - return ((Int)o2.getValue()[0]).value-((Int)o1.getValue()[0]).value; - } - }); - for(int d=0;d, Object[]>elements=tmp.get(d); - /*if(((Thread)(elements.getValue()[1])).getName().startsWith("SocketBridge A->B")){ - - }else{ - continue; - }*/ - List k=elements.getKey(); - StringBuilder sb=new StringBuilder(); - for(int d2=0;d2 timeMap=new LinkedHashMap(); - private Lock timeLock=new ReentrantLock(); - long tmp=-1; - - public void putTime(String name){ - timeLock.lock(); - try{ - long v=System.nanoTime(); - if(tmp==-1){ - timeMap.put(name, 0l); - }else{ - timeMap.put(name, v-tmp); - } - tmp=v; - }finally { - timeLock.unlock(); - } - } - - public Map getTimeMap() { - return timeMap; - } - - public void print(){ - exct.execute(()->{ - timeLock.lock(); - - try{ - StringBuilder sbdr=new StringBuilder(); - sbdr.append('{'); - for (Iterator> iterator = timeMap.entrySet().iterator(); iterator.hasNext();) { - Entry type = (Entry) iterator.next(); - sbdr.append(type.getKey()).append('=').append(type.getValue()); - if(iterator.hasNext()) { - sbdr.append(','); - } - } - sbdr.append("}(ns)"); - System.out.println(sbdr.toString()); - }finally { - timeLock.unlock(); - } - }); - } - - public void printWithTimeFilter(long nanos){ - exct.execute(()->{ - boolean b=false; - timeLock.lock(); - - try{ - StringBuilder sbdr=new StringBuilder(); - sbdr.append('{'); - for (Iterator> iterator = timeMap.entrySet().iterator(); iterator.hasNext();) { - Entry type = (Entry) iterator.next(); - if(type.getValue()>=nanos) { - b=true; - } - sbdr.append(type.getKey()).append('=').append(type.getValue()); - if(iterator.hasNext()) { - sbdr.append(','); - } - } - sbdr.append("}(ns)"); - if(b) - System.out.println(sbdr.toString()); - }finally { - timeLock.unlock(); - } - }); - } -} diff --git a/src/org/kne/io/AddInputStream.java b/src/org/kne/io/AddInputStream.java deleted file mode 100644 index ecbd26c..0000000 --- a/src/org/kne/io/AddInputStream.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.kne.io; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; - -public final class AddInputStream extends InputStream { - - volatile byte out = 0; - private InputStream in; - - @Override - public int read() throws IOException { - int read = in.read(); - if (read==-1) { - return -1; - } - out = (byte) (out+(byte) read); - return out&0xff; - } - - @Override - public void close() throws IOException { - in.close(); - } - - public AddInputStream(InputStream in) { - super(); - this.in = in; - } - - public void read(byte[][] e) throws IOException { - for (int y = 0; y>> 24) & 0xFF); - bo[1]=(byte) ((v >>> 16) & 0xFF); - bo[2]=(byte) ((v >>> 8) & 0xFF); - bo[3]=(byte) ((v >>> 0) & 0xFF); - return new Data(bo,0,vp+4); - } -public static Data uncompress(Data b) throws IOException, DataFormatException { - if(b.len<4){ - throw new EOFException("!!"); - } - int ch1 =b.b[b.off+0]&0xff; - int ch2 = b.b[b.off+1]&0xff; - int ch3 =b. b[b.off+2]&0xff; - int ch4 =b.b[b.off+3]&0xff; - - int zix= ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0)); - - Inflater inf=new Inflater(true); - inf.setInput(b.b, b.off+4, b.len-4); - byte[]d=new byte[zix]; - int l=inf.inflate(d); - inf.end(); - - return new Data(d,0,l); - } -private static class compresstask extends Task{ - volatile Data input,output; - - public compresstask(Data input) { - super(); - this.input = input; - } - - public Data getOutput() { - return output; - } - - @Override - protected void runTask() { - output=compress(input); - } - -} -public static void mulcomp(DataOutputStream dos,byte[]in, TimeDebugger dbg) throws IOException { - ArrayList l=new ArrayList(); - int count =4; - int sze=in.length/count; - int y=in.length%count; - - for (int i = 0; i < count; i++) { - Task t=new compresstask(new Data(in,i*sze,sze)); - exf.execute(t); - l.add(t); - } - Data tmp=null; - if(y>0) { - tmp=compress(new Data(in,count*sze,y)); - } - dbg.putTime("compress"); - dos.writeInt(l.size()+(tmp==null?0:1)); - for (int i = 0; i < l.size(); i++) { - compresstask n=(compresstask) l.get(i); - n.waitfortask(); - Data g=n.getOutput(); - dos.writeInt(g.len); - dos.write(g.b, g.off, g.len); - - } - - - if(tmp!=null) { - dos.writeInt(tmp.len); - dos.write(tmp.b, tmp.off, tmp.len); - } -} -private static class uncompresstask extends Task{ - volatile Data input,output; - - public uncompresstask(Data input) { - super(); - this.input = input; - } - - public Data getOutput() { - return output; - } - - @Override - protected void runTask() { - try { - output=uncompress(input); - } catch (IOException e) { - // TODO �Զ����ɵ� catch �� - e.printStackTrace(); - } catch (DataFormatException e) { - // TODO �Զ����ɵ� catch �� - e.printStackTrace(); - } - } - -} -public static byte[] muluncomp(DataInputStream dis,TimeDebugger dbg) throws IOException, DataFormatException { - ArrayList l=new ArrayList(); - ByteArrayOutputStream bod=new ByteArrayOutputStream(1024); - int bc=dis.readInt(); - for(int x=0;x= 0) { - offset += numRead; - } - Task tsk=new uncompresstask(new Data(input,0,input.length)); - exf.execute(tsk); - l.add(tsk); - - //Data rez=uncompress(new Data(input,0,input.length)); - - } dbg.putTime("read"); - for (int i = 0; i < l.size(); i++) { - uncompresstask uct=(uncompresstask) l.get(i); - uct.waitfortask(); - Data rez=uct.getOutput(); - bod.write(rez.b,rez.off,rez.len); - } - - - //rez.b.length=rez.off; - return bod.toByteArray(); -} - public static void main(String[] args) throws IOException, DataFormatException { - String s="jjjjjjjjjjjjjjjjjjhjhjhm"; - byte[] ib=s.getBytes(); - Data i=new Data(ib,0,ib.length); - Data o=compress(i); - Data d=uncompress(o); - System.out.println(o.len+" "+d.len); - //for (int j = d.off; j < d.off+d.len; j++) { - System.out.println(new String(d.b,d.off,d.len)); - //} - } - -} diff --git a/src/org/kne/io/Data.java b/src/org/kne/io/Data.java deleted file mode 100644 index 59f7ad3..0000000 --- a/src/org/kne/io/Data.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.kne.io; - -public class Data { - byte[]b; - int off,len; - public Data(byte[] b, int off, int len) { - super(); - this.b = b; - this.off = off; - this.len = len; - } - -} diff --git a/src/org/kne/io/KNEChannels.java b/src/org/kne/io/KNEChannels.java deleted file mode 100644 index 0af9eb9..0000000 --- a/src/org/kne/io/KNEChannels.java +++ /dev/null @@ -1,89 +0,0 @@ -package org.kne.io; - -import java.io.EOFException; -import java.io.IOException; -import java.nio.BufferOverflowException; -import java.nio.ByteBuffer; -import java.nio.channels.ReadableByteChannel; -import java.nio.channels.SocketChannel; -import java.nio.channels.WritableByteChannel; - - -public class KNEChannels { - public static class ByteBufferWritableByteChannel implements WritableByteChannel{ - private ByteBuffer bbf; - - public ByteBuffer getBbf() { - return bbf; - } - public ByteBufferWritableByteChannel(ByteBuffer bbf) { - this.bbf=bbf; - } - @Override - public boolean isOpen() { - return true; - } - - @Override - public void close() throws IOException { - - } - - @Override - public int write(ByteBuffer src) throws IOException { - int opos=src.position(); - //System.out.println(bbf+" "+src); - //FastLib .bufferPut(bbf,src); - try { - bbf.put(src); - }catch(BufferOverflowException e) { - throw new IOException(src.toString()+" "+bbf.toString(), e); - } - return src.position()-opos; - } - } - public static WritableByteChannel newWritableChannel(ByteBuffer bbf) { - return new ByteBufferWritableByteChannel(bbf); - } - public static class ByteBufferReadableByteChannel implements ReadableByteChannel { - private ByteBuffer bbf; - - public ByteBuffer getBbf() { - return bbf; - } - public ByteBufferReadableByteChannel(ByteBuffer bbf) { - this.bbf=bbf; - } - @Override - public boolean isOpen() { - return true; - } - - @Override - public void close() throws IOException { - } - - @Override - public int read(ByteBuffer dst) throws IOException { - if(!bbf.hasRemaining()) { - return -1; - } - int lmtl=Math.min(bbf.remaining() ,dst.remaining()); - int olm=bbf.limit(); - bbf.limit(bbf.position()+lmtl); - dst.put(bbf); - bbf.limit(olm); - return lmtl; - } - } - public static ReadableByteChannel newReadableChannel(ByteBuffer bbf) { - return new ByteBufferReadableByteChannel(bbf); - } - public static void readFully(ReadableByteChannel connectSocket, ByteBuffer szeRead) throws EOFException, IOException { - while (szeRead.hasRemaining()) { - if (connectSocket.read(szeRead) == -1) { - throw new EOFException(); - } - } - } -} diff --git a/src/org/kne/io/VarDataInputStream.java b/src/org/kne/io/VarDataInputStream.java deleted file mode 100644 index 6f2f94f..0000000 --- a/src/org/kne/io/VarDataInputStream.java +++ /dev/null @@ -1,80 +0,0 @@ -package org.kne.io; - -import java.io.DataInputStream; -import java.io.EOFException; -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.Charset; - -public class VarDataInputStream extends DataInputStream { - - public VarDataInputStream(InputStream in) { - super(in); - - } - public byte[] readPacketVarBytes() throws IOException { - - int i; - try { - i=readVarInt(); - }catch(Exception e) { - return null; - } - byte[]b=new byte[i]; - readFully(b); - return b; - } - public byte[] readVarBytes() throws IOException { - - int i=readVarInt(); - byte[]b=new byte[i]; - readFully(b); - return b; - } - public String readVarUTF8() throws IOException { - return new String(readVarBytes(), Charset.forName("UTF-8")); - } - int cache=0; - public int readVarInt_addd()throws IOException { - cache+=readVarInt(); - return cache; - } - public int readVarInt() throws IOException { - int i = 0; - int j = 0; - - while (true) { - byte b0 = this.readByte(); - i |= (b0 & 127) << j++ * 7; - - if (j > 5) { - throw new RuntimeException("VarInt too big"); - } - - if ((b0 & 128) != 128) { - break; - } - } - - return i; - } - public long readVarLong() throws IOException { - long i = 0L; - int j = 0; - - while (true) { - byte b0 = this.readByte(); - i |= (long) (b0 & 127) << j++ * 7; - - if (j > 10) { - throw new RuntimeException("VarLong too big"); - } - - if ((b0 & 128) != 128) { - break; - } - } - - return i; - } -} diff --git a/src/org/kne/io/VarDataOutputStream.java b/src/org/kne/io/VarDataOutputStream.java deleted file mode 100644 index f6512b6..0000000 --- a/src/org/kne/io/VarDataOutputStream.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.kne.io; - -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.nio.charset.Charset; - -public class VarDataOutputStream extends DataOutputStream { - - public VarDataOutputStream(OutputStream out) { - super(out); - } - int cache=0; - public void writeVarInt_add(int input)throws IOException{ - writeVarInt (input-cache); - cache=input; - } - public void writeVarBytes(byte[]b) throws IOException { - writeVarInt(b.length); - write(b); - } - public void writeVarUTF8(String str) throws IOException { - writeVarBytes(str.getBytes(Charset.forName("UTF-8"))); - } - public void writeVarInt(int input) throws IOException { - while ((input & -128) != 0) { - this.out.write(input & 127 | 128); - input >>>= 7; - } - - this.out.write(input); - } - - - public void writeVarLong(long value) throws IOException { - while ((value & -128L) != 0L) { - this.writeByte((int) (value & 127L) | 128); - value >>>= 7; - } - - this.writeByte((int) value); - } -}