aboutsummaryrefslogtreecommitdiff
path: root/lib/base/filepush.cpp
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-10-25 21:38:50 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-10-25 21:38:50 +0000
commita67e67b1f38ddb2a01c1d5f09e32d373344e4d5e (patch)
tree4069a90bcc194000b1c37bbf3abab4082be5decc /lib/base/filepush.cpp
parentae96169ee008d8755894a25ed28fb4bc4f309593 (diff)
downloadenigma2-a67e67b1f38ddb2a01c1d5f09e32d373344e4d5e.tar.gz
enigma2-a67e67b1f38ddb2a01c1d5f09e32d373344e4d5e.zip
- add pause/seek/resume functions to filepush
Diffstat (limited to 'lib/base/filepush.cpp')
-rw-r--r--lib/base/filepush.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/lib/base/filepush.cpp b/lib/base/filepush.cpp
index 5ae2f15d..17b767f8 100644
--- a/lib/base/filepush.cpp
+++ b/lib/base/filepush.cpp
@@ -34,6 +34,7 @@ void eFilePushThread::thread()
{
// TODO: take care of boundaries.
int w = write(m_fd_dest, m_buffer + m_buf_start, m_buf_end - m_buf_start);
+ eDebug("wrote %d bytes", w);
if (w <= 0)
{
if (errno == -EINTR)
@@ -42,6 +43,7 @@ void eFilePushThread::thread()
// ... we would stop the thread
}
+ /* this should flush all written pages to disk. */
posix_fadvise(m_fd_dest, dest_pos, w, POSIX_FADV_DONTNEED);
dest_pos += w;
@@ -80,8 +82,7 @@ void eFilePushThread::start(int fd_source, int fd_dest)
{
m_fd_source = fd_source;
m_fd_dest = fd_dest;
- m_stop = 0;
- run();
+ resume();
}
void eFilePushThread::stop()
@@ -90,3 +91,19 @@ void eFilePushThread::stop()
sendSignal(SIGUSR1);
kill();
}
+
+void eFilePushThread::pause()
+{
+ stop();
+}
+
+void eFilePushThread::seek(off_t where)
+{
+ ::lseek(m_fd_source, where, SEEK_SET);
+}
+
+void eFilePushThread::resume()
+{
+ m_stop = 0;
+ run();
+}