UnlinkFiles.cpp

См. документацию.
00001 /* 
00002  * File:   UnlinkFiles.cpp
00003  * Author: nick
00004  * 
00005  * Created on 26 Сентябрь 2011 г., 19:08
00006  */
00007 
00008 #include <errno.h>
00009 
00010 #include "UnlinkFiles.h"
00011 int UnlinkFiles::fileFunc(UnlinkFile* filetag){
00012     int res=-1;
00013     string fn=sc->getSharedDir()+filetag->getFile();
00014     GlobalData* gd=GlobalData::get_Instance();
00015     pthread_mutex_t* mt= gd->get_openedFiles_mutex();
00016     pthread_mutex_lock(mt);
00017     //1. проверить нет ли его в открытых файлах
00018     auto of=gd->get_OpenedFiles();
00019     if(of->find(fn)==of->end()){
00020         //2. если нет, то тогда удалить ссылку
00021         if(unlink(fn.data())<0){
00022             //3. если не удалится то вернуть -ERRNO
00023             res=-errno;
00024         }else{
00025             //Если все хорошо вернуть 0
00026             res= 0;
00027         }
00028     }
00029     
00030     //4. если есть, то вернуть -1
00031     pthread_mutex_unlock(mt);
00032     return res;
00033 }