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