IO 是最基本的基类 后面的很多功能扩展他。
BaseStreamableFileService.java
package org.red5.io;
import java.io.File;
import java.io.IOException;
public abstract class BaseStreamableFileService implements IStreamableFileService {
public abstract String getPrefix();
public abstract String getExtension();
public String prepareFilename(String name) {
if (name.startsWith(getPrefix() + ":")) {
name = name.substring(getPrefix().length() + 1);
if (!name.endsWith(getExtension()))
name = name + getExtension();
}
return name;
}
public boolean canHandle(File file) {
return file.exists() && file.getAbsolutePath().toLowerCase().endsWith(getExtension());
}
public abstract IStreamableFile getStreamableFile(File file) throws IOException;
}
StreamableFileFactory.java
package org.red5.io;
import java.io.File;
import java.util.HashSet;
import java.util.Set;
public class StreamableFileFactory implements IStreamableFileFactory {
private Set<IStreamableFileService> services = new HashSet<IStreamableFileService>();
public void setServices(Set<IStreamableFileService> services) {
this.services = services;
}
public IStreamableFileService getService(File fp) {
// Return first service that can handle the passed file
for (IStreamableFileService service : this.services) {
if (service.canHandle(fp))
return service;
}
return null;
}
public Set<IStreamableFileService> getServices() {
return services;
}
}
org.red5.io Interfaces 接口
IoConstants
IStreamableFile
IStreamableFileFactory
IStreamableFileService
ITag 扩展了 org.apache.mina.common.ByteBuffer 包
ITagReader
ITagWriter
Classes 2个基类
BaseStreamableFileService
StreamableFileFactory
