[Avidemux-svn-commit] r6786 - in branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket: include src
mean at mail.berlios.de
mean at mail.berlios.de
Sat Nov 27 09:01:45 CET 2010
Author: mean
Date: 2010-11-27 09:01:45 +0100 (Sat, 27 Nov 2010)
New Revision: 6786
Modified:
branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/include/ADM_coreCommandSocket.h
branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreCommandSocket.cpp
branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreSocket.cpp
Log:
[jobs/socket] Return and processjob status
Modified: branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/include/ADM_coreCommandSocket.h
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/include/ADM_coreCommandSocket.h 2010-11-27 08:01:44 UTC (rev 6785)
+++ branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/include/ADM_coreCommandSocket.h 2010-11-27 08:01:45 UTC (rev 6786)
@@ -55,6 +55,13 @@
virtual ADM_commandSocket *waitForConnect(uint32_t timeoutMs);
bool sendMessage(const ADM_socketMessage &msg);
bool getMessage(ADM_socketMessage &msg);
+ bool pollMessage(ADM_socketMessage &msg);
+ bool handshake(void);
+ bool isAlive(void)
+ {
+ if(mySocket) return true;
+ return false;
+ }
public:
ADM_commandSocket(int newSocket);
ADM_commandSocket( void );
Modified: branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreCommandSocket.cpp
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreCommandSocket.cpp 2010-11-27 08:01:44 UTC (rev 6785)
+++ branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreCommandSocket.cpp 2010-11-27 08:01:45 UTC (rev 6786)
@@ -28,7 +28,7 @@
}
static bool char_to_uint32(uint32_t *v,uint8_t *p)
{
- uint32_t a=(p[0])+(p[1]<<8)+(p[2]<<16)+(p[4]<<24);
+ uint32_t a=(p[0])+(p[1]<<8)+(p[2]<<16)+(p[3]<<24);
*v=a;
return true;
}
@@ -107,6 +107,48 @@
return true;
}
/**
+ \fn pollMessage
+*/
+bool ADM_commandSocket::pollMessage(ADM_socketMessage &msg)
+{
+//
+ if(!mySocket)
+ {
+ ADM_error("Wait for connect called with no socket opened\n");
+ return NULL;
+ }
+ // Wait for connect...
+ fd_set set,er;
+ FD_ZERO(&set);
+ FD_ZERO(&er);
+ FD_SET(mySocket,&set);
+ FD_SET(mySocket,&er);
+ struct timeval timeout;
+
+ timeout.tv_sec=0;
+ timeout.tv_usec=10*1000; // us
+ //ADM_info("Selecting\n");
+ int evt=select(1+mySocket,&set,NULL,&er,&timeout);
+ if(evt<0)
+ {
+ ADM_error("Socket disconnected\n");
+ close();
+ return false;
+ }
+
+ if(FD_ISSET(mySocket,&er))
+ {
+ ADM_error("OOPs socket is in error\n");
+ }
+ if(!evt)
+ {
+ printf(".");
+ return false;
+ }
+ return getMessage(msg);
+}
+
+/**
\fn getPayloadAsUint32_t
*/
bool ADM_socketMessage::getPayloadAsUint32_t(uint32_t *v)
@@ -140,4 +182,39 @@
#warning fixme badly
return (ADM_commandSocket *)ADM_socket::waitForConnect(timeoutMs);
}
+/**
+ \fn handshake
+*/
+bool ADM_commandSocket::handshake(void)
+{
+ uint32_t version;
+ ADM_info("Waiting for hello message...\n");
+ ADM_socketMessage msg;
+ msg.setPayloadAsUint32_t(ADM_COMMAND_SOCKET_VERSION);
+ msg.command=ADM_socketCommand_Hello;
+ if(!sendMessage(msg))
+ {
+ ADM_error("Cannot send hello message");
+ goto done;
+ }
+ if(!getMessage(msg))
+ {
+ ADM_error("Cannot get hello message");
+ goto done;
+ }
+ if(msg.command!=ADM_socketCommand_Hello)
+ {
+ ADM_error("Replys is not a hello \n");
+ goto done;
+ }
+ if(!msg.getPayloadAsUint32_t(&version) || version!=ADM_COMMAND_SOCKET_VERSION)
+ {
+ ADM_error("Wrong command version\n");
+ goto done;
+ }
+ ADM_info("Got hello message, continuing...\n");
+ return true;
+done:
+ return false;
+}
// EOF
\ No newline at end of file
Modified: branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreSocket.cpp
===================================================================
--- branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreSocket.cpp 2010-11-27 08:01:44 UTC (rev 6785)
+++ branches/avidemux_2.6_branch_mean/avidemux_core/ADM_coreSocket/src/ADM_coreSocket.cpp 2010-11-27 08:01:45 UTC (rev 6786)
@@ -110,15 +110,16 @@
while(got<howmuch)
{
rx=recv(mySocket,(char *)where,howmuch-got,0);
- if(rx<0)
+ if(rx<=0)
{
perror("RxData");
- return 0;
+ close();
+ return false;
}
where+=rx;
got+=rx;
}
- return 1;
+ return true;
}
/**
\fn txData
More information about the Avidemux-svn-commit
mailing list