Skip to content

Commit f8c6615

Browse files
author
alafighting
committed
替换Source\Sink为InputStream\OutputStream;去除Storage的snapshot()方法
1 parent c9af41f commit f8c6615

20 files changed

+52
-334
lines changed

library/src/main/java/com/im4j/kakacache/rxjava/core/CacheCore.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ public <T> void save(String key, T value, int expires, CacheTarget target) throw
6060
}
6161

6262
if (memory != null) {
63+
// TODO value = value.clone() 避免内存存储对象引用?
64+
// TODO clone拷贝造成双倍内存开销?
65+
// TODO 被缓存的对象,一般不做修改,只做读取
6366
memory.save(key, value, expires, target);
6467
}
6568
if (disk != null) {

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/DiskCache.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@
88
import com.im4j.kakacache.rxjava.core.CacheTarget;
99
import com.im4j.kakacache.rxjava.core.disk.converter.IDiskConverter;
1010
import com.im4j.kakacache.rxjava.core.disk.journal.IDiskJournal;
11-
import com.im4j.kakacache.rxjava.core.disk.sink.Sink;
12-
import com.im4j.kakacache.rxjava.core.disk.source.Source;
1311
import com.im4j.kakacache.rxjava.core.disk.storage.IDiskStorage;
1412

13+
import java.io.InputStream;
14+
import java.io.OutputStream;
1515
import java.util.Collection;
1616

1717
/**
@@ -46,7 +46,7 @@ public DiskCache(IDiskStorage storage,
4646
@Override
4747
protected <T> T doLoad(String key) throws CacheException {
4848
// 读取缓存
49-
Source source = mStorage.load(key);
49+
InputStream source = mStorage.load(key);
5050
T value = null;
5151
if (source != null) {
5252
value = (T) mConverter.load(source, new TypeToken<T>(){}.getType());
@@ -66,7 +66,7 @@ protected <T> void doSave(String key, T value, int maxAge, CacheTarget target) t
6666
}
6767

6868
// 写入缓存
69-
Sink sink = mStorage.create(key);
69+
OutputStream sink = mStorage.create(key);
7070
if (sink != null) {
7171
mConverter.writer(sink, value);
7272
Utils.close(sink);

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/converter/GsonDiskConverter.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
import com.google.gson.JsonSyntaxException;
66
import com.im4j.kakacache.rxjava.common.utils.LogUtils;
77
import com.im4j.kakacache.rxjava.common.utils.Utils;
8-
import com.im4j.kakacache.rxjava.core.disk.sink.Sink;
9-
import com.im4j.kakacache.rxjava.core.disk.source.ReaderSource;
10-
import com.im4j.kakacache.rxjava.core.disk.source.Source;
118

129
import java.io.IOException;
10+
import java.io.InputStream;
11+
import java.io.InputStreamReader;
12+
import java.io.OutputStream;
1313
import java.lang.reflect.Type;
1414

1515
/**
@@ -24,23 +24,22 @@ public GsonDiskConverter(Gson gson) {
2424
}
2525

2626
@Override
27-
public Object load(Source source, Type type) {
27+
public Object load(InputStream source, Type type) {
2828
Object value = null;
29-
ReaderSource readerSource = new ReaderSource(source);
3029
try {
31-
value = gson.fromJson(readerSource, type);
30+
value = gson.fromJson(new InputStreamReader(source), type);
3231
} catch (JsonIOException e) {
3332
LogUtils.log(e);
3433
} catch (JsonSyntaxException e) {
3534
LogUtils.log(e);
3635
} finally {
37-
Utils.close(readerSource);
36+
Utils.close(source);
3837
}
3938
return value;
4039
}
4140

4241
@Override
43-
public void writer(Sink sink, Object data) {
42+
public void writer(OutputStream sink, Object data) {
4443
try {
4544
String json = gson.toJson(data);
4645
byte[] bytes = json.getBytes();

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/converter/IDiskConverter.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package com.im4j.kakacache.rxjava.core.disk.converter;
22

3-
import com.im4j.kakacache.rxjava.core.disk.sink.Sink;
4-
import com.im4j.kakacache.rxjava.core.disk.source.Source;
5-
3+
import java.io.InputStream;
4+
import java.io.OutputStream;
65
import java.lang.reflect.Type;
76

87
/**
@@ -18,7 +17,7 @@ public interface IDiskConverter {
1817
* @param source
1918
* @return
2019
*/
21-
Object load(Source source, Type type);
20+
Object load(InputStream source, Type type);
2221

2322
/**
2423
* 写入
@@ -27,6 +26,6 @@ public interface IDiskConverter {
2726
* @param data
2827
* @return
2928
*/
30-
void writer(Sink sink, Object data);
29+
void writer(OutputStream sink, Object data);
3130

3231
}

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/converter/KryoDiskConverter.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@
44
import com.esotericsoftware.kryo.io.Input;
55
import com.esotericsoftware.kryo.io.Output;
66
import com.im4j.kakacache.rxjava.common.utils.Utils;
7-
import com.im4j.kakacache.rxjava.core.disk.sink.BasicSink;
8-
import com.im4j.kakacache.rxjava.core.disk.sink.Sink;
9-
import com.im4j.kakacache.rxjava.core.disk.source.BasicSource;
10-
import com.im4j.kakacache.rxjava.core.disk.source.Source;
117

8+
import java.io.InputStream;
9+
import java.io.OutputStream;
1210
import java.lang.reflect.Type;
1311

1412
/**
@@ -23,11 +21,11 @@ public KryoDiskConverter(Kryo kryo) {
2321
}
2422

2523
@Override
26-
public Object load(Source source, Type type) {
24+
public Object load(InputStream source, Type type) {
2725
Object value = null;
2826
Input input = null;
2927
try {
30-
input = new Input(new BasicSource(source));
28+
input = new Input(source);
3129
value = kryo.readClassAndObject(input);
3230
} finally {
3331
Utils.close(input);
@@ -36,10 +34,10 @@ public Object load(Source source, Type type) {
3634
}
3735

3836
@Override
39-
public void writer(Sink sink, Object data) {
37+
public void writer(OutputStream sink, Object data) {
4038
Output output = null;
4139
try {
42-
output = new Output(new BasicSink(sink));
40+
output = new Output(sink);
4341
kryo.writeClassAndObject(output, data);
4442
} finally {
4543
Utils.close(output);

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/converter/SerializableDiskConverter.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,26 @@
22

33
import com.im4j.kakacache.rxjava.common.utils.LogUtils;
44
import com.im4j.kakacache.rxjava.common.utils.Utils;
5-
import com.im4j.kakacache.rxjava.core.disk.sink.BasicSink;
6-
import com.im4j.kakacache.rxjava.core.disk.sink.Sink;
7-
import com.im4j.kakacache.rxjava.core.disk.source.BasicSource;
8-
import com.im4j.kakacache.rxjava.core.disk.source.Source;
95

106
import java.io.IOException;
7+
import java.io.InputStream;
118
import java.io.ObjectInputStream;
129
import java.io.ObjectOutputStream;
10+
import java.io.OutputStream;
1311
import java.lang.reflect.Type;
1412

1513
/**
1614
* 序列化-数据转换器
17-
* @version alafighting 2016-06
15+
* @version alafighting 2016-07
1816
*/
1917
public class SerializableDiskConverter implements IDiskConverter {
2018

2119
@Override
22-
public Object load(Source source, Type type) {
20+
public Object load(InputStream source, Type type) {
2321
Object value = null;
2422
ObjectInputStream oin = null;
2523
try {
26-
oin = new ObjectInputStream(new BasicSource(source));
24+
oin = new ObjectInputStream(source);
2725
value = oin.readObject();
2826
} catch (IOException e) {
2927
LogUtils.log(e);
@@ -36,10 +34,10 @@ public Object load(Source source, Type type) {
3634
}
3735

3836
@Override
39-
public void writer(Sink sink, Object data) {
37+
public void writer(OutputStream sink, Object data) {
4038
ObjectOutputStream oos = null;
4139
try {
42-
oos = new ObjectOutputStream(new BasicSink(sink));
40+
oos = new ObjectOutputStream(sink);
4341
oos.writeObject(data);
4442
oos.flush(); //缓冲流
4543
} catch (IOException e) {

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/journal/BasicDiskJournal.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public CacheEntry get(String key) {
4747
}
4848

4949
@Override
50-
public final void put(String key, CacheEntry entry) {
50+
public void put(String key, CacheEntry entry) {
5151
if (Utils.isEmpty(key) || entry == null) {
5252
throw new NullException("key == null || value == null");
5353
}

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/sink/BasicSink.java

Lines changed: 0 additions & 40 deletions
This file was deleted.

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/sink/FileSink.java

Lines changed: 0 additions & 48 deletions
This file was deleted.

library/src/main/java/com/im4j/kakacache/rxjava/core/disk/sink/Sink.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)