103 lines
3.3 KiB
Java
103 lines
3.3 KiB
Java
package com.baidu.cloud.videocache;
|
|
|
|
import android.text.TextUtils;
|
|
import com.ubt.jimu.unity.bluetooth.UnityActivity;
|
|
import java.io.BufferedOutputStream;
|
|
import java.io.OutputStream;
|
|
import java.net.Socket;
|
|
import java.util.Locale;
|
|
|
|
/* loaded from: classes.dex */
|
|
class f extends u {
|
|
private final n j;
|
|
protected final com.baidu.cloud.videocache.file.a k;
|
|
private CacheListener l;
|
|
|
|
public f(n nVar, com.baidu.cloud.videocache.file.a aVar) {
|
|
super(nVar, aVar);
|
|
this.k = aVar;
|
|
this.j = nVar;
|
|
}
|
|
|
|
protected String a(String str, Object... objArr) {
|
|
return String.format(Locale.US, str, objArr);
|
|
}
|
|
|
|
@Override // com.baidu.cloud.videocache.u
|
|
protected void a(int i) {
|
|
CacheListener cacheListener = this.l;
|
|
if (cacheListener != null) {
|
|
cacheListener.a(this.k.b, this.j.b(), i);
|
|
}
|
|
}
|
|
|
|
public void a(CacheListener cacheListener) {
|
|
this.l = cacheListener;
|
|
}
|
|
|
|
public void a(b bVar, Socket socket) {
|
|
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());
|
|
bufferedOutputStream.write(b(bVar).getBytes("UTF-8"));
|
|
long j = bVar.b;
|
|
if (a(bVar)) {
|
|
a(bufferedOutputStream, j);
|
|
} else {
|
|
b(bufferedOutputStream, j);
|
|
}
|
|
}
|
|
|
|
protected void a(OutputStream outputStream, long j) {
|
|
byte[] bArr = new byte[UnityActivity.BLOCKLY_TYPE_NONE];
|
|
while (true) {
|
|
int a = a(bArr, j, bArr.length);
|
|
if (a == -1) {
|
|
outputStream.flush();
|
|
return;
|
|
} else {
|
|
outputStream.write(bArr, 0, a);
|
|
j += a;
|
|
}
|
|
}
|
|
}
|
|
|
|
protected boolean a(b bVar) {
|
|
long length = this.j.length();
|
|
return (((length > 0L ? 1 : (length == 0L ? 0 : -1)) > 0) && bVar.c && ((float) bVar.b) > ((float) this.k.available()) + (((float) length) * 0.2f)) ? false : true;
|
|
}
|
|
|
|
protected String b(b bVar) {
|
|
String a = this.j.a();
|
|
boolean z = !TextUtils.isEmpty(a);
|
|
long available = this.k.b() ? this.k.available() : this.j.length();
|
|
boolean z2 = available >= 0;
|
|
long j = bVar.c ? available - bVar.b : available;
|
|
boolean z3 = z2 && bVar.c;
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(bVar.c ? "HTTP/1.1 206 PARTIAL CONTENT\n" : "HTTP/1.1 200 OK\n");
|
|
sb.append("Accept-Ranges: bytes\n");
|
|
sb.append(z2 ? a("Content-Length: %d\n", Long.valueOf(j)) : "");
|
|
sb.append(z3 ? a("Content-Range: bytes %d-%d/%d\n", Long.valueOf(bVar.b), Long.valueOf(available - 1), Long.valueOf(available)) : "");
|
|
sb.append(z ? a("Content-Type: %s\n", a) : "");
|
|
sb.append("\n");
|
|
return sb.toString();
|
|
}
|
|
|
|
protected void b(OutputStream outputStream, long j) {
|
|
n nVar = new n(this.j);
|
|
try {
|
|
nVar.a((int) j);
|
|
byte[] bArr = new byte[UnityActivity.BLOCKLY_TYPE_NONE];
|
|
while (true) {
|
|
int read = nVar.read(bArr);
|
|
if (read == -1) {
|
|
outputStream.flush();
|
|
return;
|
|
}
|
|
outputStream.write(bArr, 0, read);
|
|
}
|
|
} finally {
|
|
nVar.close();
|
|
}
|
|
}
|
|
}
|