Dependencies:   EthernetNetIf mbed NetServicesMin

Revision:
0:be9ccd3a915d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/message.c	Wed Sep 21 15:54:53 2011 +0000
@@ -0,0 +1,69 @@
+
+#include "message.h"
+
+void (*getMessageHandler)(TCPSocket* pConnectedSocket, char* msg, int len) = defaultMessageHandler;
+void (*postMessageHandler)(TCPSocket* pConnectedSocket,char* msg, int len) = defaultMessageHandler;
+
+void defaultMessageHandler(TCPSocket* pConnectedSocket, char* msg, int len)
+{
+    printf(msg);
+    vSendMessage(pConnectedSocket, "DEFAULT\r\n", 9);
+}
+void vSendMessage(TCPSocket* pConnectedSocket, char* msg, int len)
+{
+    pConnectedSocket->send("RESPONSE\r\n",10);
+    pConnectedSocket->send(msg,len);
+    pConnectedSocket->send("\r\n\r\n",4);
+}
+void vGetMessage(TCPSocket* pConnectedSocket)
+{
+    char line[BUFFER_LENGTH];
+    int len;
+    bool endOfMessage = false;
+    while(!endOfMessage)
+    {
+        len = iGetLine(pConnectedSocket, line, BUFFER_LENGTH);
+        if(strncmp(line,"GET\r\n", 5)==0)
+        {
+            len = iGetLine(pConnectedSocket, line, BUFFER_LENGTH);
+            getMessageHandler(pConnectedSocket, line, len);
+        }
+        else if(strncmp(line,"POST\r\n",6)==0)
+        {
+            len = iGetLine(pConnectedSocket, line, BUFFER_LENGTH);
+            postMessageHandler(pConnectedSocket, line, len);
+        }
+        else if(strncmp(line, "\r\n", 2)==0)
+        {
+            endOfMessage = true;
+        }
+    }
+}
+int iGetLine(TCPSocket* pConnectedSocket, char* buf, int len)
+{
+    int counter = 0;
+    while(counter < len)
+    {
+        if(pConnectedSocket->recv(&(buf[counter]),1) > 0)
+        {
+            if(counter > 0)
+            {
+                if(buf[counter]=='\n' && buf[counter-1]=='\r')
+                {
+                    return counter+1;
+                }
+            }
+            counter++;
+        }
+    }
+    return -1;
+}
+void vSetMessageHandler(int messageType, void (*messageHandler)(TCPSocket* pConnectedSocket,char* msg, int len))
+{
+    switch(messageType)
+    {
+        case TYPE_GET: getMessageHandler = messageHandler; break;
+        case TYPE_POST: postMessageHandler = messageHandler; break;
+        default: break;
+    }
+}
\ No newline at end of file