4 * Created on: 2013. 9. 12.
15 #include <sys/ioctl.h>
17 #include "ePreDefine.h"
18 #include "eNetworkPumpThread.h"
19 //-------------------------------------------------------------------------------
23 //#define LOG(X,...) { do{}while(0); }
26 eNetworkPumpThread::eNetworkPumpThread(int aDeviceFd)
27 : mTermFlag(0), mDeviceFd(aDeviceFd), uThread("eNetworkPumpThread")
30 //-------------------------------------------------------------------------------
32 eNetworkPumpThread::~eNetworkPumpThread()
35 //-------------------------------------------------------------------------------
37 void eNetworkPumpThread::Run()
40 unsigned char buffer[BUFFER_SIZE];
41 struct pollfd pollevt;
43 pollevt.fd = mDeviceFd;
44 pollevt.events = POLLIN | POLLHUP;
51 Connection: close\r\n\
52 Content-Type: video/mpeg\r\n\
53 Server: stream_enigma2\r\n\
56 write(1, c, strlen(c));
59 rc = poll((struct pollfd*)&pollevt, 1, 1000);
60 if (pollevt.revents & POLLIN) {
61 rc = read(mDeviceFd, buffer, BUFFER_SIZE);
63 if (errno == EINTR || errno == EAGAIN || errno == EBUSY || errno == EOVERFLOW) {
65 LOG("(retry... errno : %d)", errno);
70 LOG("%d byte read", rc);
72 wc = write(1, buffer, rc);
74 LOG("%d byte write", wc);
76 } else if (pollevt.revents & POLLHUP) {
77 ioctl(mDeviceFd, 200, 0);
83 //-------------------------------------------------------------------------------
85 void eNetworkPumpThread::Terminate()
89 //-------------------------------------------------------------------------------