From 9b2dd6e5ddd10e9beee061f3d1a25f047d80d290 Mon Sep 17 00:00:00 2001 From: deva Date: Tue, 18 Oct 2005 14:04:41 +0000 Subject: *** empty log message *** --- src/encoder.cc | 14 ++++-- src/encoder.h | 2 + src/file.cc | 135 +++++++++++++++------------------------------------------ src/file.h | 2 + src/server.cc | 1 + 5 files changed, 49 insertions(+), 105 deletions(-) (limited to 'src') diff --git a/src/encoder.cc b/src/encoder.cc index 208dd79..b4227b0 100644 --- a/src/encoder.cc +++ b/src/encoder.cc @@ -65,6 +65,8 @@ Encoder::Encoder(Info *ginfo, frozen = false; + savestate = NO_CHANGE; + // shoot_request = 0; // shoot_value = 0; // freeze_request = 0; @@ -116,7 +118,7 @@ void Encoder::encode() h.header.h_data.freeze = frame->freeze; h.header.h_data.snapshot = frame->shoot; h.header.h_data.record = frame->record; - h.header.h_data.savestate = NO_CHANGE; + h.header.h_data.savestate = savestate;//NO_CHANGE; // if(freeze_request != freeze_value) freeze_value = freeze_request; // if(shoot_request != shoot_value) shoot_value = shoot_request; @@ -192,7 +194,8 @@ void Encoder::shoot() } -void Encoder::thread_main() { +void Encoder::thread_main() +{ encode(); if(s) { if(n) delete n; @@ -204,7 +207,8 @@ void Encoder::thread_main() { } -void Encoder::start() { +void Encoder::start() +{ /* if(!s) { s = new Socket(port, errobj); @@ -216,7 +220,9 @@ void Encoder::start() { } -void Encoder::stop(n_savestate save) { +void Encoder::stop(n_savestate save) +{ + savestate = save; /* struct timespec ts; // TODO: set save state in package header. diff --git a/src/encoder.h b/src/encoder.h index 29d139b..2aa8729 100644 --- a/src/encoder.h +++ b/src/encoder.h @@ -102,6 +102,8 @@ private: // int shoot_value; // volatile int freeze_request; // int freeze_value; + + volatile n_savestate savestate; sem_t record_sem; void encode(); diff --git a/src/file.cc b/src/file.cc index f3c0cbc..3a59334 100644 --- a/src/file.cc +++ b/src/file.cc @@ -27,12 +27,16 @@ #include #include "file.h" +#include "miav_config.h" + #include #include #include #include #include +#include + // For ntoh* #include @@ -77,6 +81,9 @@ File::~File() info->info("[%s]", filelist[cnt].c_str()); } + std::string *trash = config->readString("server_trash"); + std::string *later = config->readString("server_later"); + switch(savestate) { case NO_CHANGE: info->warn("File had no savestate!"); @@ -88,16 +95,12 @@ File::~File() case DELETE: info->info("Files in this session is to be deleted (moved to trash)."); - for(unsigned int cnt = 0; cnt < filelist.size(); cnt ++) { - // TODO: Move file filelist[cnt] to trash - } + Move((char*)trash->c_str()); break; case LATER: info->info("Files in this session is stored for later decisson."); - for(unsigned int cnt = 0; cnt < filelist.size(); cnt ++) { - // TODO: Move file filelist[cnt] to the later folder. - } + Move((char*)later->c_str()); break; } @@ -105,6 +108,28 @@ File::~File() delete extension; } +int File::Move(char *destination) +{ + char newfile[256]; + char filename[256]; + + createPath(destination); + for(unsigned int cnt = 0; cnt < filelist.size(); cnt ++) { + // TODO: Check is the file exists... if not make som noise! + + + // TODO: Move file filelist[cnt] to the destination folder. + strcpy(filename, (char*)filelist[cnt].c_str()); + sprintf(newfile, "%s%s", destination, strrchr(filename, '/')); + if(rename((char*)filelist[cnt].c_str(), newfile) == -1) + info->error("Error moving file %s to %s:", + (char*)filelist[cnt].c_str(), + newfile, + strerror(errno)); + } + return 0; +} + int File::Open() { char fname[256]; @@ -162,100 +187,7 @@ int File::Write(void* data, int size) return w; } -/* -int File::Write(char* data, int size) -{ - return Write((void*)data, size); -} - -int File::Write(unsigned long long int val) -{ - int res; - int written = 0; - unsigned long int *h_u = (unsigned long int *)&val; - unsigned long int *h_l = (unsigned long int *)(((char*)&val) + sizeof(unsigned long int)); - - *h_u = htonl(*h_u); - *h_l = htonl(*h_l); - - if((res = Write((void*)h_l, sizeof(*h_l))) < 0) { - return res; - } - written += res; - - if((res = Write((void*)h_u, sizeof(*h_u))) < 0) { - return res; - } - written += res; - - return written; -} - -int File::Write(long long int val) -{ - int res; - int written = 0; - unsigned long int *h_u = (unsigned long int *)&val; - unsigned long int *h_l = (unsigned long int *)(((char*)&val) + sizeof(unsigned long int)); - - *h_u = htonl(*h_u); - *h_l = htonl(*h_l); - - if((res = Write((void*)h_l, sizeof(*h_l))) < 0) { - return res; - } - written += res; - - if((res = Write((void*)h_u, sizeof(*h_u))) < 0) { - return res; - } - written += res; - - return written; -} - -int File::Write(long int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(unsigned long int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(unsigned int val) -{ - val = htonl(val); - - return Write((char*)&val, sizeof(val)); -} -int File::Write(short int val) -{ - val = htons(val); - - return Write((char*)&val, sizeof(val)); -} - -int File::Write(unsigned short int val) -{ - val = htons(val); - - return Write((char*)&val, sizeof(val)); -} -*/ int File::createPath(char* path) { // struct stat stats; @@ -281,9 +213,10 @@ int File::createPath(char* path) return 0; } -void File::setSaveState(n_savestate savestate) +void File::setSaveState(n_savestate s) { - this->savestate = savestate; + savestate = s; + info->info("SETTING SAVESTATE TO: %d", savestate); } #ifdef __TEST_FILE diff --git a/src/file.h b/src/file.h index 0ef9aa4..04947df 100644 --- a/src/file.h +++ b/src/file.h @@ -68,6 +68,8 @@ private: int Open(); + int Move(char *destination); + int fd; int num; diff --git a/src/server.cc b/src/server.cc index 2ecb4be..f4b6806 100644 --- a/src/server.cc +++ b/src/server.cc @@ -101,6 +101,7 @@ void newConnection(Socket *socket, Info *info) if(h.header.h_data.savestate) { savestate = h.header.h_data.savestate; + info->info("GOT SAVESTATE FROM NETWORK: %d", savestate ); } if(h.header.h_data.freeze) { -- cgit v1.2.3