Main Page | Modules | Namespace List | Class Hierarchy | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

CP_HTTP Class Reference

CP_NetProtoBase to implement the HTTP protocol for posting and getting data from a url. More...

Inheritance diagram for CP_HTTP:

CP_NetProtoBase CP_Object CP_NoCopy List of all members.

Public Types

enum  { kCP_HTTPPortNumber = 80 }

Public Member Functions

void SetID (FourCharCode inIdentifier)
FourCharCode GetID ()
void RegisterSignal (const CP_SignalHolder &inSignal)
CP_DataValueSignalFindSignal (const CP_String &inSignalName)
UInt32 GetNumberSignals ()
CP_String GetNthSignalName (UInt32 inSignalIndex)
void RegisterSlot (const CP_SlotHolder &inSlot)
CP_DataValueSlot FindSlot (const CP_String &inSlotName)
UInt32 GetNumberSlots ()
CP_String GetNthSlotName (UInt32 inSlotIndex)
template<class R, class P1, class P2>
CP_CommandHandlerSignalConnect (CPLAT::CP_CommandNo cmd, void(R::*handler)(P1, P2), SInt32 mode)
template<class R, class P1, class P2>
void Connect (CP_Object *control, const CPLAT::CP_String &signalName, void(R::*handler)(P1, P2))
Constructor / Destructor
 CP_HTTP (CP_Socket *inSocketConnection)
 Constructor.
virtual ~CP_HTTP () throw ()
 Destructor.
Sendinng
void SendRequest (bool InIsPOST, char *inUrl, CP_String &inOutHeaderSend, CP_String &inOutHeaderReceive, CP_String &inOutMessage)

Static Public Member Functions

static void Connect (CP_Object *sender, const CP_String &signalName, CP_Object *receiver, const CP_String &slotName, const bool reciprocal=false)
static void Connect (CP_Object *sender, CP_Object *receiver, const bool reciprocal=false, const CP_String &signalName=kCP_Signal_ValueChanged, const CP_String &slotName=kCP_Slot_SetValue)

Protected Member Functions

Misc
void ParseURL (char *inUrl, char *inProtocol, SInt32 inProtocolLength, char *inHost, SInt32 inHostLength, char *inHTTPBuffer, SInt32 inHTTPBufferLength, SInt32 *port)
Sending
SInt32 SendHTTP (char *inUrl, char *inHeaders, unsigned char *inPost, SInt32 inPostLength, HTTPCP_HTTP *inRequest)
void SendString (char *inString)
Memory Buffer
void MemBufferCreate (MemBuffer *inMemBuffer)
void MemBufferGrow (MemBuffer *inMemBuffer)
void MemBufferAddByte (MemBuffer *inMemBuffer, unsigned char inByte)
void MemBufferAddBuffer (MemBuffer *inMemBuffer, unsigned char *inBuffer, size_t inSize)
Tester
bool IsValidHostchar (char inchar)

Protected Attributes

CP_SocketfSocketConnection
CP_InternetResponsefLastServerResponse
CP_DataValueSignal fProgressSignal
CP_Signals_ArrayfSignals
CP_Slots_ArrayfSlots
FourCharCode fObjectID

Static Protected Attributes

static FourCharCode fObjectIDCount = 0

Detailed Description

Example useage:

                    CP_Socket           socket;
                    CP_HTTP             *httpRequest = CP_new CP_HTTP( &socket );
                    CP_String           psHeaderSend;
                    CP_String           psHeaderReceive;
                    CP_String           psMessage;
                    
                    httpRequest->SendRequest( false, "http://www.ksoft.net", psHeaderSend, psHeaderReceive, psMessage );
                    
                        psSend -- contains the message sent
                        psReceive -- contains the results of the sent message
                        psMessage -- contains the returned result from the server


Member Enumeration Documentation

anonymous enum
 

The port number used for this class.

Enumeration values:
kCP_HTTPPortNumber 


Constructor & Destructor Documentation

CP_HTTP::CP_HTTP CP_Socket inSocketConnection  ) 
 

Copy constructor.

Parameters:
inSocketConnection The socket connection to the HTTP server.
Exceptions:
none 

CP_HTTP::~CP_HTTP  )  throw () [virtual]
 

Destructor.

Exceptions:
none 


Member Function Documentation

void CP_HTTP::SendRequest bool  InIsPOST,
char *  inUrl,
CP_String inOutHeaderSend,
CP_String inOutHeaderReceive,
CP_String inOutMessage
 

Main function to request the HTTP data from the passed in URL. The results will be returned in the passed in CP_Strings.

Parameters:
inIsPOST Flat to indicate if we are sending data.
inUrl URL to send / get data from.
inOutHeaderSend Location to store the header when sending.
inOutHeaderReceive Location to receive the header.
inOutMessage Location to return the message in.
Exceptions:
OSErrors/Server errors.
Returns:
void

void CP_HTTP::ParseURL char *  inUrl,
char *  inProtocol,
SInt32  inProtocolLength,
char *  inHost,
SInt32  inHostLength,
char *  inHTTPBuffer,
SInt32  inHTTPBufferLength,
SInt32 *  port
[protected]
 

Break up the passed in URL into its component parts.

Parameters:
inURL URL.
inProtocol Protocol of the url.
inProtocolLength Length of the protocol.
inHost The host.
inHostLength Length of the host.
inHTTPBuffer http buffer. inHTTPBufferLength Length of the http buffer.
port Port to communicate over.
Exceptions:
none 
Returns:
SInt32 Returns 1 on failure, 0 on success.

SInt32 CP_HTTP::SendHTTP char *  inUrl,
char *  inHeaderReceive,
unsigned char *  inPost,
SInt32  inPostLength,
HTTPCP_HTTP inRequest
[protected]
 

Sends/Receives the data to the URL.

Parameters:
inURL The URL to GET/POST to/from.
inHeaderReceive Headers to be sent to the server.
inPost Data to be posted to the server, NULL if GET.
inPostLength Length of data to post.
inRequest Contains the message and headerSend sent by the server.
Exceptions:
none 
Returns:
SInt32 Returns 1 on failure, 0 on success.

void CP_HTTP::SendString char *  inString  )  [protected]
 

Sends the passed in string over the socket connection.

Parameters:
inString The string to send.
Exceptions:
none 
Returns:
void

void CP_HTTP::MemBufferCreate MemBuffer inMemBuffer  )  [protected]
 

Allocate a memory buffer of MEM_BUFFER_SIZE as a default. The buffer size can grow as needed.

Parameters:
inMemBuffer MemBuffer to hold memory in.
Exceptions:
none 
Returns:
void

void CP_HTTP::MemBufferGrow MemBuffer inMemBuffer  )  [protected]
 

Allocate more memory to the memory buffer. We double the size of the allocation each time.

Parameters:
inMemBuffer MemBuffer to hold memory in.
Exceptions:
none 
Returns:
void

void CP_HTTP::MemBufferAddByte MemBuffer inMemBuffer,
unsigned char  inByte
[protected]
 

Add a single byte to the memory buffer, grow if needed.

Parameters:
inMemBuffer MemBuffer to hold memory in.
inByte Byte to add to buffer.
Exceptions:
none 
Returns:
void

void CP_HTTP::MemBufferAddBuffer MemBuffer inMemBuffer,
unsigned char *  inBuffer,
size_t  inSize
[protected]
 

Add a range of bytes to the memory buffer, grow if needed.

Parameters:
inMemBuffer MemBuffer to hold memory in.
inBuffer Buffer to add to the passed in inMemBuffer.
inSize Size of the passed in memory buffer.
Exceptions:
none 
Returns:
void

bool CP_HTTP::IsValidHostchar char  inchar  )  [protected]
 

Return TRUE if the specified character is valid for a host name, i.e. A-Z or 0-9 or -.:

Parameters:
inchar The character to test.
Exceptions:
none 
Returns:
bool True if this is a valid char.

virtual CP_InternetResponse* CP_NetProtoBase::GetServerResponse  )  [virtual, inherited]
 

Returns the last server response.

Exceptions:
none 
Returns:
CP_InternetResponse * The internet response for this protocol.

void CP_NetProtoBase::BroadcastProgress CP_InternetProtocolProgress inProtocolProgress  )  [inherited]
 

Broadcast our progress information to any objects that have added themselves as listeners to this object. This will send the signal kCP_Signal_InternetProgress which listeners should connect a slot to.

Parameters:
inProtocolProgress The internnet protocol progress object that contains the progress information. This is also the value of the data value holder for the signal being sent.
Exceptions:
none 
Returns:
void

SInt32 CP_NetProtoBase::ReadLine CP_Socket inSocket,
CP_String inOutResult
[protected, inherited]
 

Receive the next line from our server. We keep receiving until the end of line is reached.

Parameters:
inSocket The socket connection to the server. inOutResult Loction to return the result in.
Exceptions:
none 
Returns:
SInt32 A result code, either CP_noErr or CP_Err_ReceivingFromSocket.

bool CP_NetProtoBase::IsCommaDelimitedListOfSixOctets char *  p  )  [protected, inherited]
 

Return true if our passed in string is in the form of a 6 part address. (h1,h2,h3,h4,p1,p2)

Parameters:
p The string we are checking.
Exceptions:
none 
Returns:
bool True if the passed in string is in the form of a 6 part address.

void CP_NetProtoBase::SendCommand CP_String inCommand  )  [protected, inherited]
 

Sends a command to the server, but does not wait for a response.

Parameters:
inCommand The command to send.
Exceptions:
none 
Returns:
void

void CP_NetProtoBase::SendCommandWithReply CP_String inCommand  )  [protected, inherited]
 

Send the command, and wait for a response. The response will be placed in the CP_InternetResponse object associated with this object.

Parameters:
inCommand The command to send.
Exceptions:
none 
Returns:
void

void CP_NetProtoBase::SendData CP_String inData  )  [protected, inherited]
 

Send data to our socket connection. inData needs to be formatted correctly since we just send the bytes.

Parameters:
inData The data we are sending.
Exceptions:
none 
Returns:
void

void CP_NetProtoBase::SendData char *  inData,
UInt32  inDataLength
[protected, inherited]
 

Send data to our socket connection. inData needs to be formatted correctly since we just send the bytes.

Parameters:
inData The data we are sending.
inDataLength The length of the data being sent.
Exceptions:
none 
Returns:
void

void CP_Object::SetID FourCharCode  inIdentifier  )  [inherited]
 

Sets the identifier for this object. If a specific identifier is not set with this function, then a default id is used, which is simply a running count of the number of objects created.

Parameters:
inIdentifier The objects identifier.
Returns:
void

FourCharCode CP_Object::GetID  )  [inherited]
 

Returns the objects identifier.

Returns:
FourCharCode The identifier of this object.

void CP_Object::RegisterSignal const CP_SignalHolder inSignal  )  [inherited]
 

Registers the signal / signal name contained in the passed in inSignal object.

Parameters:
inSignal CP_SignalHolder that holds a signal and string identifier.
Returns:
void

CP_DataValueSignal * CP_Object::FindSignal const CP_String inSignalName  )  [inherited]
 

Finds the CP_DataValueSignal object that matches the passed in inSignalName.

Parameters:
inSignalName CP_String containing the identifier of the signal to return.
Returns:
CP_DataValueSignal * Returns a pointer to a CP_DataValueSignal object.

UInt32 CP_Object::GetNumberSignals  )  [inherited]
 

Returns the number of signals for this object.

Returns:
UInt32 The number of signals.

CP_String CP_Object::GetNthSignalName UInt32  inSignalIndex  )  [inherited]
 

Returns the signal name of the passed in signal index.

Parameters:
inSignalIndex Index of the name of the signal to return.
Returns:
CP_String The name of the nth signal being returned.

void CP_Object::RegisterSlot const CP_SlotHolder inSlot  )  [inherited]
 

Registers the slot / slot name contained in the passed in inSlot object.

Parameters:
inSlot CP_SignalHolder that holds a slot and string identifier.
Returns:
void

CP_DataValueSlot CP_Object::FindSlot const CP_String inSlotName  )  [inherited]
 

Finds the CP_Slot1 object that matches the passed in inSlotName.

Parameters:
inSlotName CP_String containing the identifier of the slot to return.
Returns:
CP_DataValueSlot Returns a pointer to a CP_DataValueSlot object.

UInt32 CP_Object::GetNumberSlots  )  [inherited]
 

Returns the number of slots for this object.

Returns:
UInt32 The number of slots.

CP_String CP_Object::GetNthSlotName UInt32  inSlotIndex  )  [inherited]
 

Returns the slot name of the passed in signal index.

Parameters:
inSlotIndex Index of the name of the slot to return.
Returns:
CP_String The name of the nth slot being returned.

template<class R, class P1, class P2>
CP_CommandHandlerSignal* CP_Object::Connect CPLAT::CP_CommandNo  cmd,
void(R::*)(P1, P2)  handler,
SInt32  mode
[inherited]
 

template<class R, class P1, class P2>
void CP_Object::Connect CP_Object control,
const CPLAT::CP_String &  signalName,
void(R::*)(P1, P2)  handler
[inherited]
 

void CP_Object::Connect CP_Object sender,
const CP_String signalName,
CP_Object receiver,
const CP_String slotName,
const bool  reciprocal = false
[static, inherited]
 

void CP_Object::Connect CP_Object sender,
CP_Object receiver,
const bool  reciprocal = false,
const CP_String signalName = kCP_Signal_ValueChanged,
const CP_String slotName = kCP_Slot_SetValue
[static, inherited]
 


Member Data Documentation

CP_Socket* CP_NetProtoBase::fSocketConnection [protected, inherited]
 

CP_InternetResponse* CP_NetProtoBase::fLastServerResponse [protected, inherited]
 

The CP_Socket object that communicates between CPLAT and the server.

CP_DataValueSignal CP_NetProtoBase::fProgressSignal [protected, inherited]
 

This object contains the last response for the server, each different protocol class will implement its own response class to handle server responses.

CP_Signals_Array* CP_Object::fSignals [protected, inherited]
 

CP_Slots_Array* CP_Object::fSlots [protected, inherited]
 

List of registered signals for this object.

FourCharCode CP_Object::fObjectID [protected, inherited]
 

List of registered slots for this object.

CPLAT_Begin_Namespace_CPLAT FourCharCode CP_Object::fObjectIDCount = 0 [static, protected, inherited]
 

Object identifier.


The documentation for this class was generated from the following files:
Generated on Tue Sep 20 20:21:48 2005 for CPLAT_MacOS by  doxygen 1.4.0