remote-proccessor detect partial message reception

BZ: 190038

Client disconnection during message reception is normal if no part of the
message as been receive yet.
Client disconnection in the middle of a packet reception is not normal
but was not differentiated from the behaviour described above.

Do not consider client disconnection on first read as an error.
Consider it as an error on the followings.

Change-Id: I34b50ba0af800f9e1fcdb51996b1b2f02a23cb3f
Signed-off-by: Kevin Rocard <kevinx.rocard@intel.com>
Signed-off-by: Mattijs Korpershoek <mattijsx.korpershoek@intel.com>
diff --git a/remote-processor/Message.cpp b/remote-processor/Message.cpp
index db24d80..8591847 100644
--- a/remote-processor/Message.cpp
+++ b/remote-processor/Message.cpp
@@ -124,7 +124,7 @@
 }
 
 // Send/Receive
-bool CMessage::serialize(CSocket* pSocket, bool bOut, string& strError)
+CMessage::Result CMessage::serialize(CSocket* pSocket, bool bOut, string& strError)
 {
     if (bOut) {
 
@@ -142,8 +142,10 @@
 
         if (!pSocket->write(&uiSyncWord, sizeof(uiSyncWord))) {
 
-            strError += string("Sync write failed: ") + strerror(errno);
-            return false;
+            if (pSocket->hasPeerDisconnected()) {
+                return peerDisconnected;
+            }
+            return error;
         }
 
         // Size
@@ -152,21 +154,21 @@
         if (!pSocket->write(&uiSize, sizeof(uiSize))) {
 
             strError += string("Size write failed: ") + strerror(errno);
-            return false;
+            return error;
         }
 
         // Msg Id
         if (!pSocket->write(&_ucMsgId, sizeof(_ucMsgId))) {
 
             strError += string("Msg write failed: ") + strerror(errno);
-            return false;
+            return error;
         }
 
         // Data
         if (!pSocket->write(_pucData, _uiDataSize)) {
 
             strError = string("Data write failed: ") + strerror(errno);
-            return false;
+            return error;
         }
 
         // Checksum
@@ -175,7 +177,7 @@
         if (!pSocket->write(&ucChecksum, sizeof(ucChecksum))) {
 
             strError = string("Checksum write failed: ") + strerror(errno);
-            return false;
+            return error;
         }
 
     } else {
@@ -185,14 +187,17 @@
         if (!pSocket->read(&uiSyncWord, sizeof(uiSyncWord))) {
 
             strError = string("Sync read failed: ") + strerror(errno);
-            return false;
+            if (pSocket->hasPeerDisconnected()) {
+                return peerDisconnected;
+            }
+            return error;
         }
 
         // Check Sync word
         if (uiSyncWord != SYNC_WORD) {
 
             strError = "Sync word incorrect";
-            return false;
+            return error;
         }
 
         // Size
@@ -201,14 +206,14 @@
         if (!pSocket->read(&uiSize, sizeof(uiSize))) {
 
             strError = string("Size read failed: ") + strerror(errno);
-            return false;
+            return error;
         }
 
         // Msg Id
         if (!pSocket->read(&_ucMsgId, sizeof(_ucMsgId))) {
 
             strError = string("Msg id read failed: ") + strerror(errno);
-            return false;
+            return error;
         }
 
         // Data
@@ -220,7 +225,7 @@
         if (!pSocket->read(_pucData, _uiDataSize)) {
 
             strError = string("Data read failed: ") + strerror(errno);
-            return false;
+            return error;
         }
 
         // Checksum
@@ -229,20 +234,20 @@
         if (!pSocket->read(&ucChecksum, sizeof(ucChecksum))) {
 
             strError = string("Checksum read failed: ") + strerror(errno);
-            return false;
+            return error;
         }
         // Compare
         if (ucChecksum != computeChecksum()) {
 
             strError = "Received checksum != computed checksum";
-            return false;
+            return error;
         }
 
         // Collect data in derived
         collectReceivedData();
     }
 
-    return true;
+    return success;
 }
 
 // Checksum