Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private boolean readAllData(byte[] data) {
- int readSoFar = 0;
- int chunkSoFar = 0;
- int iter = 0;
- while(readSoFar < data.length) {
- if(!isConnected()) {
- Log.d("readAllData", "connection lost. can't read");
- break;
- }
- int bytesLeft = data.length - readSoFar;
- int chunkLeft = IO_MAX_CHUNK_SIZE - chunkSoFar;
- int readThisTime = 0;
- try {
- lastReadStart = System.currentTimeMillis();
- readThisTime = input.read(data, readSoFar, Math.min(bytesLeft, chunkLeft));
- iter++;
- } catch (IOException e) {
- Log.d("readAllData", "chunkLeft"+chunkLeft+", iter"+iter);
- e.printStackTrace();
- }
- if(readThisTime <= 0)
- break;
- else {
- // After reading a chunk, ping server to confirm still connected
- readSoFar += readThisTime;
- chunkSoFar += readThisTime;
- if(chunkSoFar == IO_MAX_CHUNK_SIZE) {
- Log.d("readAllData", "pinging");
- try { output.write(0); }
- catch (IOException e) {
- e.printStackTrace();
- return false;
- }
- chunkSoFar = 0;
- }
- }
- }
- if(readSoFar != data.length) {
- Log.d("readAllData", "read "+readSoFar+" / "+data.length+" bytes");
- }
- return readSoFar == data.length;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement