import filestreamproxy sources.
[vuplus_transtreamproxy] / src / eFilePumpThread.cpp
1 /*
2  * eFilePumpThread.cpp
3  *
4  *  Created on: 2013. 9. 12.
5  *      Author: kos
6  */
7
8 //#include "uLogger.h"
9
10 //#include "uDemux.h"
11
12 #include <poll.h>
13 #include <stdio.h>
14
15 #include "ePreDefine.h"
16 #include "eFilePumpThread.h"
17 //-------------------------------------------------------------------------------
18
19 #ifdef DEBUG_LOG
20 //#undef LOG
21 //#define LOG(X,...) { do{}while(0); }
22 #endif
23
24 eFilePumpThread::eFilePumpThread(int aDeviceFd, std::string aFileName)
25         : mDeviceFd(aDeviceFd), mFileName(aFileName), mTermFlag(false), uThread("FilePumpThread", TYPE_DETACHABLE)
26 {
27 }
28 //-------------------------------------------------------------------------------
29
30 eFilePumpThread::~eFilePumpThread()
31 {
32 }
33 //-------------------------------------------------------------------------------
34
35 void eFilePumpThread::Run()
36 {
37         int rc = 0;
38         unsigned char buffer[BUFFER_SIZE];
39         FILE* mediafilefd = fopen(mFileName.c_str(), "rb");
40         struct pollfd pollevt;
41
42         pollevt.fd      = mDeviceFd;
43         pollevt.events  = POLLOUT;
44         pollevt.revents = 0;
45
46         mTermFlag = true;
47         while(mTermFlag) {
48                 rc = poll((struct pollfd*)&pollevt, 1, 1000);
49
50                 if (pollevt.revents & POLLOUT) {
51                         rc = fread(buffer, 1, BUFFER_SIZE, mediafilefd);
52                         if(!rc) break;
53 #ifdef DEBUG_LOG
54                         LOG("%d byte write.", rc);
55 #endif
56                         rc = write(mDeviceFd, buffer, rc);
57                 }
58         }
59         fclose(mediafilefd);
60         mTermFlag = false;
61 }
62 //-------------------------------------------------------------------------------
63
64 void eFilePumpThread::Terminate()
65 {
66         mTermFlag = false;
67 }
68 //-------------------------------------------------------------------------------
69