Mercurial > 510Connectbot
comparison src/com/five_ten_sg/connectbot/service/Relay.java @ 233:2626bf2a8cea
delay testChanged() by 10ms for async transports
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 10 Jul 2014 10:44:09 -0700 |
parents | c9a7f33b53a8 |
children | 766176d84e73 |
comparison
equal
deleted
inserted
replaced
232:83d633b281cb | 233:2626bf2a8cea |
---|---|
109 byteBuffer.limit(0); | 109 byteBuffer.limit(0); |
110 int bytesToRead; | 110 int bytesToRead; |
111 int offset; | 111 int offset; |
112 int charWidth; | 112 int charWidth; |
113 Timer timer = new Timer("relay.blocker", true); | 113 Timer timer = new Timer("relay.blocker", true); |
114 TimerTask task = null; | 114 TimerTask task = new TimerTask() { |
115 public void run() { | |
116 buffer.testChanged(); | |
117 } | |
118 }; | |
115 | 119 |
116 try { | 120 try { |
117 while (true) { | 121 while (true) { |
118 charWidth = bridge.charWidth; | 122 charWidth = bridge.charWidth; |
119 bytesToRead = byteBuffer.capacity() - byteBuffer.limit(); | 123 bytesToRead = byteBuffer.capacity() - byteBuffer.limit(); |
120 offset = byteBuffer.arrayOffset() + byteBuffer.limit(); | 124 offset = byteBuffer.arrayOffset() + byteBuffer.limit(); |
121 | 125 |
122 if (transport.willBlock()) { | 126 if (transport.willBlock()) { |
123 task = new TimerTask() { | |
124 public void run() { | |
125 buffer.testChanged(); | |
126 } | |
127 }; | |
128 timer.schedule(task, 10); // 10 ms delay | 127 timer.schedule(task, 10); // 10 ms delay |
129 } | 128 } |
130 | 129 |
131 bytesRead = transport.read(byteArray, offset, bytesToRead); | 130 bytesRead = transport.read(byteArray, offset, bytesToRead); |
132 | 131 task.cancel(); |
133 if (task != null) { | |
134 task.cancel(); | |
135 task = null; | |
136 } | |
137 | 132 |
138 if (bytesRead > 0) { | 133 if (bytesRead > 0) { |
139 byteBuffer.limit(byteBuffer.limit() + bytesRead); | 134 byteBuffer.limit(byteBuffer.limit() + bytesRead); |
140 | 135 |
141 synchronized (this) { | 136 synchronized (this) { |