All pastes #2073992 Raw Edit

Someone

public text v1 · immutable
#2073992 ·published 2011-06-03 05:22 UTC
rendered paste body
diff --git a/mythtv/programs/mythbackend/filetransfer.cpp b/mythtv/programs/mythbackend/filetransfer.cpp
index 0e2de25..22357c1 100644
--- a/mythtv/programs/mythbackend/filetransfer.cpp
+++ b/mythtv/programs/mythbackend/filetransfer.cpp
@@ -6,8 +6,14 @@
 #include "RingBuffer.h"
 #include "util.h"
 #include "mythsocket.h"
+#include "mythverbose.h"
 #include "programinfo.h"
 
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <assert.h>
+
+
 FileTransfer::FileTransfer(QString &filename, MythSocket *remote,
                            bool usereadahead, int timeout_ms) :
     readthreadlive(true), readsLocked(false),
@@ -121,29 +127,40 @@ int FileTransfer::RequestBlock(int size)
     if (!readthreadlive || !rbuffer)
         return -1;
 
+    MythTimer sr_timer;
+    sr_timer.start();
+
+    pid_t tid;
+    tid = syscall(SYS_gettid);
+    VERBOSE(VB_IMPORTANT, QString("Request thread tid = %1").arg(tid));
     int tot = 0;
     int ret = 0;
 
-    QMutexLocker locker(&lock);
-    while (readsLocked)
-        readsUnlockedCond.wait(&lock, 100 /*ms*/);
+//    QMutexLocker locker(&lock);
+//    while (readsLocked)
+//        readsUnlockedCond.wait(&lock, 100 /*ms*/);
 
-    requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
+    //requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
     char *buf = &requestBuffer[0];
-    while (tot < size && !rbuffer->GetStopReads() && readthreadlive)
+    //while (tot < size && !rbuffer->GetStopReads() && readthreadlive)
+    while (tot < size)
     {
         int request = size - tot;
 
+        VERBOSE(VB_IMPORTANT, QString("rbuffer->Read() -- end"));
         ret = rbuffer->Read(buf, request);
+        VERBOSE(VB_IMPORTANT, QString("rbuffer->Read() -- end"));
         
         if (rbuffer->GetStopReads() || ret <= 0)
             break;
 
+        VERBOSE(VB_IMPORTANT, QString("sock->writeData() -- begin"));
         if (!sock->writeData(buf, (uint)ret))
         {
             tot = -1;
             break;
         }
+        VERBOSE(VB_IMPORTANT, QString("sock->writeData() -- end"));
 
         tot += ret;
         if (ret < request)
@@ -153,6 +170,11 @@ int FileTransfer::RequestBlock(int size)
     if (pginfo)
         pginfo->UpdateInUseMark();
 
+    int sr_elapsed = sr_timer.elapsed();
+
+    if (sr_elapsed > 150) {
+        VERBOSE(VB_IMPORTANT, QString("WARNING took %1 ms to process request_block").arg(sr_elapsed));
+    }
     return (ret < 0) ? -1 : tot;
 }
 
@@ -166,7 +188,7 @@ int FileTransfer::WriteBlock(int size)
 
     QMutexLocker locker(&lock);
 
-    requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
+    //requestBuffer.resize(max((size_t)max(size,0) + 128, requestBuffer.size()));
     char *buf = &requestBuffer[0];
     while (tot < size)
     {