aboutsummaryrefslogtreecommitdiff
path: root/Src/replicant/jnetlib/httpuserv.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/replicant/jnetlib/httpuserv.h')
-rw-r--r--Src/replicant/jnetlib/httpuserv.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/Src/replicant/jnetlib/httpuserv.h b/Src/replicant/jnetlib/httpuserv.h
new file mode 100644
index 00000000..d6015067
--- /dev/null
+++ b/Src/replicant/jnetlib/httpuserv.h
@@ -0,0 +1,55 @@
+/*
+** JNetLib
+** Copyright (C) 2012 Nullsoft, Inc.
+** Author: Ben Allison
+** File: httpuserv.h - JNL interface for doing HTTPU (HTTP over UDP)
+** This is half-baked so far. Need to think things through a touch more
+*/
+
+#pragma once
+
+#include "udpconnection.h"
+#include "headers.h"
+
+class JNL_HTTPUServ
+{
+public:
+ JNL_HTTPUServ();
+ ~JNL_HTTPUServ();
+
+ // pass this a connection that has just received a packet
+ int process( JNL_UDPConnection *m_con );
+
+ const char *geterrorstr() { return m_errstr; }
+
+ // use these when state returned by run() is 2
+ const char *get_request_uri(); // file portion of http request
+ const char *get_request_parm( const char *parmname ); // parameter portion (after ?)
+ const char *getallheaders() { return recvheaders.GetAllHeaders(); } // double null terminated, null delimited list
+ const char *getheader( const char *headername );
+ const char *get_method() { return m_method; }
+
+ void set_reply_string( const char *reply_string ); // should be HTTP/1.1 OK or the like
+ void set_reply_header( const char *header ); // i.e. "content-size: 12345"
+
+ void send_reply( JNL_UDPConnection *m_con ); // sends a reply to the given UDP socket. it must have been setup beforehand with the appropriate peer
+
+ void reset(); // prepare for another request
+
+ int get_http_version() { return http_ver; }
+
+protected:
+ void seterrstr( const char *str ) { if ( m_errstr ) free( m_errstr ); m_errstr = _strdup( str ); }
+
+ int m_reply_ready;
+ int http_ver;
+
+ char *m_errstr;
+ char *m_reply_headers;
+ char *m_reply_string;
+ JNL_Headers recvheaders;
+ char *m_recv_request; // either double-null terminated, or may contain parameters after first null.
+ char *m_method;
+};
+
+