bool Clip::open(const _TCHAR *path) { stream_ = 0; AbstractFilePtr filei = fileserver().getFileInterface(path); TURI uri(path); if(uri.extension()==_T("wav")) { Pointer<dx::WavFile> wav = new dx::WavFile; wav->synchronize(true); stream_ = wav; if(wav) { if(filei) { if(filei->size() < on_memory_streaming_threshold__) { on_memory_ = fileserver().getFile(path); return wav->open(on_memory_->buf(), on_memory_->size()) ? true : false; } else return wav->open(filei) ? true : false; } else { File f(path); if(f.is_open()) { if(f.length() < on_memory_streaming_threshold__) { on_memory_ = f.load(); return wav->open(on_memory_->buf(), on_memory_->size()) ? true : false; } else return wav->open(path) ? true : false; } } } } else if(uri.extension()==_T("ogg")) { Pointer<OggVorbis> ogg = new OggVorbis; ogg->synchronize(true); stream_ = ogg; if(ogg) { if(filei) { if(filei->size() < on_memory_streaming_threshold__) { on_memory_ = fileserver().getFile(path); return ogg->open(on_memory_->buf(), on_memory_->size()) ? true : false; } else return ogg->open(filei) ? true : false; } else { File f(path); if(f.is_open()) { if(f.length() < on_memory_streaming_threshold__) { on_memory_ = f.load(); return ogg->open(on_memory_->buf(), on_memory_->size()) ? true : false; } else return ogg->open(path) ? true : false; } } } } return false; }
int main(int argc, char **argv) { pid_t pid = 0; int status = 0; signal(SIGINT,signal_handler); signal(SIGQUIT,signal_handler); signal(SIGSTOP,signal_handler); shmid = Shmget(SHM_KEY,SVSHM_FLAG); if(-1 == (pid = fork())) { perror("fork"); return(-1); } /* child process */ if(0 == pid) { //start fileclient fileclient(shmid); exit(0); } /* parent process */ //start fileserver fileserver(shmid); waitpid(pid,&status,0); rmshm(shmid); return 0; }