56 lines
2.1 KiB
C++
56 lines
2.1 KiB
C++
/*
|
|
** 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;
|
|
};
|
|
|
|
|