![]() |
AjpBaseSocket Class Reference#include <AjpBaseSocket.h>
Inheritance diagram for AjpBaseSocket:
![]()
Collaboration diagram for AjpBaseSocket:
![]()
Detailed DescriptionDefinition at line 45 of file AjpBaseSocket.h. Constructor & Destructor Documentation
Member Function Documentation
This callback is executed after a successful read from the socket.
Reimplemented from TcpSocket. Definition at line 138 of file AjpBaseSocket.cpp. References DEB, get_integer(), m_length, m_message, m_ptr, m_state, OnHeader(), and OnPacket(). 00139 { 00140 DEB(fprintf(stderr, "OnRawData: %d bytes\n", sz);) 00141 size_t ptr = 0; 00142 while (true) 00143 { 00144 size_t left = sz - ptr; 00145 DEB(fprintf(stderr, " left: %d bytes\n", left); 00146 fprintf(stderr, " state: %d\n", m_state);) 00147 switch (m_state) 00148 { 00149 case 0: 00150 { 00151 size_t missing = m_length - m_ptr; 00152 short len = (short)(missing < left ? missing : left); 00153 memcpy(m_message + m_ptr, buf + ptr, len); 00154 m_ptr += len; 00155 ptr += len; 00156 if (m_ptr < m_length) 00157 { 00158 return; // read more 00159 } 00160 int p = 0; 00161 short id = get_integer(m_message, p); 00162 short length = get_integer(m_message, p); 00163 OnHeader(id, length); 00164 m_state = 1; 00165 m_length = length; 00166 m_ptr = 0; // bytes in m_message 00167 } 00168 break; 00169 case 1: 00170 { 00171 size_t missing = m_length - m_ptr; 00172 short len = (short)(missing < left ? missing : left); 00173 memcpy(m_message + m_ptr, buf + ptr, len); 00174 m_ptr += len; 00175 ptr += len; 00176 if (m_ptr < m_length) 00177 { 00178 return; // read more 00179 } 00180 OnPacket(m_message, m_ptr); 00181 m_state = 0; 00182 m_length = 4; 00183 m_ptr = 0; 00184 } 00185 break; 00186 } 00187 } 00188 }
Definition at line 192 of file AjpBaseSocket.cpp. Referenced by Ajp13Socket::ReceiveForwardRequest().
Definition at line 199 of file AjpBaseSocket.cpp. Referenced by Ajp13Socket::ReceiveForwardRequest().
Definition at line 206 of file AjpBaseSocket.cpp. Referenced by get_string(), OnRawData(), and Ajp13Socket::ReceiveForwardRequest(). 00207 { 00208 short n; 00209 memcpy(&n, buf + ptr, 2); 00210 ptr += 2; 00211 return ntohs(n); 00212 }
Definition at line 216 of file AjpBaseSocket.cpp. References get_integer(). Referenced by Ajp13Socket::ReceiveForwardRequest(). 00217 { 00218 short len = get_integer(buf, ptr); 00219 if (len != -1) 00220 { 00221 std::string tmp = buf + ptr; 00222 ptr += len; 00223 ptr++; // skip trailing 0x0 00224 tmp.resize(len); 00225 return tmp; 00226 } 00227 return ""; 00228 }
Definition at line 232 of file AjpBaseSocket.cpp. Referenced by Ajp13Socket::IHttpServer_Respond(), Ajp13Socket::OnTransferLimit(), put_string(), Ajp13Socket::ReceiveBody(), and Ajp13Socket::ReceiveCPing().
Definition at line 246 of file AjpBaseSocket.cpp. Referenced by Ajp13Socket::IHttpServer_Respond(), Ajp13Socket::OnTransferLimit(), put_string(), and Ajp13Socket::ReceiveBody().
Definition at line 255 of file AjpBaseSocket.cpp. References put_byte(), and put_integer(). Referenced by Ajp13Socket::IHttpServer_Respond(). 00256 { 00257 put_integer(buf, ptr, (short)zz.size() ); 00258 memcpy(buf + ptr, zz.c_str(), zz.size()); 00259 ptr += (int)zz.size(); 00260 put_byte(buf, ptr, 0); 00261 }
Reset to original state.
Definition at line 265 of file AjpBaseSocket.cpp. References m_length, m_ptr, and m_state. Referenced by Ajp13Socket::ReceiveCPing(), and Ajp13Socket::Reset().
Member Data Documentation
Definition at line 83 of file AjpBaseSocket.h.
The documentation for this class was generated from the following files: |