@@ -24,10 +24,8 @@ All credit goes to the PocketMine Project (http://pocketmine.net)
2424import net .beaconpe .jraklib .Logger ;
2525
2626import java .net .InetSocketAddress ;
27- import java .util .ArrayList ;
28- import java .util .Deque ;
29- import java .util .List ;
30- import java .util .concurrent .ConcurrentLinkedDeque ;
27+ import java .util .*;
28+ import java .util .concurrent .*;
3129
3230/**
3331 * JRakLib server.
@@ -38,8 +36,8 @@ public class JRakLibServer extends Thread{
3836 protected Logger logger ;
3937 protected boolean shutdown = false ;
4038
41- protected Deque <byte []> externalQueue ;
42- protected Deque <byte []> internalQueue ;
39+ protected List <byte []> externalQueue ;
40+ protected List <byte []> internalQueue ;
4341
4442 public JRakLibServer (Logger logger , int port , String _interface ){
4543 if (port < 1 || port > 65536 ){
@@ -49,8 +47,8 @@ public JRakLibServer(Logger logger, int port, String _interface){
4947 this .logger = logger ;
5048 this .shutdown = false ;
5149
52- externalQueue = new ConcurrentLinkedDeque <>();
53- internalQueue = new ConcurrentLinkedDeque <>();
50+ externalQueue = new LinkedList <>();
51+ internalQueue = new LinkedList <>();
5452
5553 start ();
5654 }
@@ -75,32 +73,36 @@ public Logger getLogger(){
7573 return logger ;
7674 }
7775
78- public Deque <byte []> getExternalQueue (){
76+ public List <byte []> getExternalQueue (){
7977 return externalQueue ;
8078 }
8179
82- public Deque <byte []> getInternalQueue (){
80+ public List <byte []> getInternalQueue (){
8381 return internalQueue ;
8482 }
8583
8684 public void pushMainToThreadPacket (byte [] bytes ){
87- internalQueue .addLast ( bytes );
85+ internalQueue .add ( 0 , bytes );
8886 }
8987
9088 public byte [] readMainToThreadPacket (){
9189 if (!internalQueue .isEmpty ()) {
92- return internalQueue .pop ();
90+ byte [] data = internalQueue .get (internalQueue .size () - 1 );
91+ internalQueue .remove (data );
92+ return data ;
9393 }
9494 return null ;
9595 }
9696
9797 public void pushThreadToMainPacket (byte [] bytes ){
98- externalQueue .addLast ( bytes );
98+ externalQueue .add ( 0 , bytes );
9999 }
100100
101101 public byte [] readThreadToMainPacket (){
102102 if (!externalQueue .isEmpty ()) {
103- externalQueue .pop ();
103+ byte [] data = externalQueue .get (externalQueue .size () - 1 );
104+ externalQueue .remove (data );
105+ return data ;
104106 }
105107 return null ;
106108 }
0 commit comments