projects
/
vuplus_transtreamproxy
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed to handle large files.
[vuplus_transtreamproxy]
/
src
/
eFilePumpThread.cpp
diff --git
a/src/eFilePumpThread.cpp
b/src/eFilePumpThread.cpp
index
7659a4d
..
4cd7fa6
100644
(file)
--- a/
src/eFilePumpThread.cpp
+++ b/
src/eFilePumpThread.cpp
@@
-11,6
+11,7
@@
#include <poll.h>
#include <stdio.h>
#include <poll.h>
#include <stdio.h>
+#include <fcntl.h>
#include "ePreDefine.h"
#include "eFilePumpThread.h"
#include "ePreDefine.h"
#include "eFilePumpThread.h"
@@
-36,7
+37,8
@@
void eFilePumpThread::Run()
{
int rc = 0;
unsigned char buffer[BUFFER_SIZE];
{
int rc = 0;
unsigned char buffer[BUFFER_SIZE];
- FILE* mediafilefd = fopen(mFileName.c_str(), "rb");
+ int mediafilefd = open(mFileName.c_str(), O_RDONLY | O_LARGEFILE);
+
struct pollfd pollevt;
pollevt.fd = mDeviceFd;
struct pollfd pollevt;
pollevt.fd = mDeviceFd;
@@
-48,15
+50,17
@@
void eFilePumpThread::Run()
rc = poll((struct pollfd*)&pollevt, 1, 1000);
if (pollevt.revents & POLLOUT) {
rc = poll((struct pollfd*)&pollevt, 1, 1000);
if (pollevt.revents & POLLOUT) {
- rc = fread(buffer, 1, BUFFER_SIZE, mediafilefd);
- if(!rc) break;
+ rc = read(mediafilefd, buffer, BUFFER_SIZE);
+ if(rc < 0) {
+ break;
+ }
#ifdef DEBUG_LOG
LOG("%d byte write.", rc);
#endif
rc = write(mDeviceFd, buffer, rc);
}
}
#ifdef DEBUG_LOG
LOG("%d byte write.", rc);
#endif
rc = write(mDeviceFd, buffer, rc);
}
}
-
f
close(mediafilefd);
+ close(mediafilefd);
mTermFlag = false;
}
//-------------------------------------------------------------------------------
mTermFlag = false;
}
//-------------------------------------------------------------------------------