AsyncFw 1.2
Async Framework is c++ runtime with timers, poll notifiers, sockets, coroutines, etc.
 
Loading...
Searching...
No Matches
AsyncFw::HttpSocket Class Reference

The HttpSocket class. More...

#include <AsyncFw/HttpSocket>

Inheritance diagram for AsyncFw::HttpSocket:
[legend]
Collaboration diagram for AsyncFw::HttpSocket:
[legend]

Public Member Functions

void stateEvent () override
 
void activateEvent () override
 
void readEvent () override
 
void writeEvent () override
 
void disconnect () override
 
void close () override
 
void destroy () override
 
AsyncFw::DataArrayView header ()
 
AsyncFw::DataArrayView content ()
 
void sendFile (const std::string &)
 
- Public Member Functions inherited from AsyncFw::AbstractTlsSocket
void setDescriptor (int) override
 
bool connect (const std::string &, uint16_t) override
 
void setContext (const TlsContext &) const
 
- Public Member Functions inherited from AsyncFw::AbstractSocket
bool listen (const std::string &, uint16_t)
 
DataArraypeek ()
 
int read (uint8_t *, int)
 
DataArray read (int=0)
 
int write (const uint8_t *, int)
 
int write (const DataArray &)
 
Error error () const
 
std::string errorString () const
 
Threadthread () const
 
std::string address () const
 
uint16_t port () const
 
std::string peerAddress () const
 
uint16_t peerPort () const
 
- Public Member Functions inherited from AsyncFw::AnyData
template<typename T>
data () const
 
 AnyData (const std::any &)
 
std::any & data () const
 
void setData (const std::any &data) const
 

Static Public Member Functions

static HttpSocketcreate (AsyncFw::Thread *_t=nullptr)
 

Public Attributes

AsyncFw::FunctionConnectorProtected< HttpSocket >::Connector< const AsyncFw::AbstractSocket::State > stateChanged
 
AsyncFw::FunctionConnectorProtected< HttpSocket >::Connector< const AsyncFw::DataArray & > received
 
AsyncFw::FunctionConnectorProtected< HttpSocket >::Connector<> writeContent
 
AsyncFw::FunctionConnectorProtected< HttpSocket >::Connector< int > progress
 

Protected Member Functions

void clearReceived ()
 
- Protected Member Functions inherited from AsyncFw::AbstractTlsSocket
virtual void activateReady ()
 
int read_available_fd () const override final
 
int read_fd (void *_p, int _s) override final
 
int write_fd (const void *_p, int _s) override final
 
- Protected Member Functions inherited from AsyncFw::AbstractSocket
 AbstractSocket (int, int, int)
 
int pendingRead () const
 
int pendingWrite () const
 
void setError (Error)
 
void setErrorString (const std::string &) const
 
virtual void incomingEvent ()
 

Protected Attributes

bool connectionClose = false
 
- Protected Attributes inherited from AsyncFw::AbstractSocket
Threadthread_
 
int fd_ = -1
 
State state_ = State::Unconnected
 
- Protected Attributes inherited from AsyncFw::AnyData
std::any data_
 

Friends

LogStreamoperator<< (LogStream &log, const HttpSocket &s)
 

Additional Inherited Members

- Public Types inherited from AsyncFw::AbstractTlsSocket
enum  IgnoreErrors : uint8_t { TimeValidity = 0x01 }
 
- Public Types inherited from AsyncFw::AbstractSocket
enum  State : uint8_t {
  Unconnected , Listening , Connecting , Connected ,
  Active , Closing , Destroy
}
 
enum  Error : uint8_t {
  None , Closed , Refused , Read ,
  Write , Activate
}
 

Detailed Description

The HttpSocket class.

Example:

#include <AsyncFw/MainThread>
#include <AsyncFw/AbstractTlsSocket>
#include <AsyncFw/TlsContext>
#include <AsyncFw/AddressInfo>
#include <AsyncFw/File>
#include <AsyncFw/HttpSocket>
#include <AsyncFw/Log>
#define SERVER_NAME "github.com"
#define SERVER_PORT 443
#define GET_FILE "/a-ucontrol/AsyncFw"
int main(int argc, char *argv[]) {
if (!context.setDefaultVerifyPaths()) {
logError("Can't set default verify paths");
return -1;
}
context.setVerifyName(SERVER_NAME);
AsyncFw::Thread _t("HttpSocketThread");
_t.start();
AsyncFw::HttpSocket *socket = AsyncFw::HttpSocket::create(&_t);
socket->setContext(context);
AsyncFw::AddressInfo addressInfo;
addressInfo.setTimeout(30000);
addressInfo.resolve(SERVER_NAME);
addressInfo.completed([&socket](int r, const std::vector<std::string> &list) {
if (r == 0 && !list.empty()) {
for (const std::string _s : list) logNotice() << _s;
socket->connect(list[0], SERVER_PORT);
return;
}
AsyncFw::MainThread::exit(-1);
});
socket->stateChanged([&socket](const AsyncFw::AbstractSocket::State state) {
if (state == AsyncFw::AbstractSocket::State::Active) {
logDebug() << "Send request";
socket->write("GET " GET_FILE " HTTP/1.1\r\nHost:" SERVER_NAME "\r\n\r\n");
} else if (state == AsyncFw::AbstractSocket::State::Unconnected) {
if (socket->errorString().empty()) logInfo() << "Unconnected";
else { logError() << socket->errorString(); }
AsyncFw::MainThread::exit(0);
}
});
socket->received([socket](const AsyncFw::DataArray &answer) {
logDebug() << socket->header();
logDebug() << socket->content();
logNotice() << answer.view(0, 4096);
socket->disconnect();
});
logNotice() << "Start Applicaiton";
logDebug() << *(AsyncFw::AbstractSocket *)socket;
int ret = AsyncFw::MainThread::exec();
logDebug() << *(AsyncFw::AbstractSocket *)socket;
logNotice() << "End Applicaiton" << ret;
return ret;
}

Member Function Documentation

◆ stateEvent()

void HttpSocket::stateEvent ( )
overridevirtual

Reimplemented from AsyncFw::AbstractSocket.

◆ activateEvent()

void HttpSocket::activateEvent ( )
overridevirtual

Reimplemented from AsyncFw::AbstractTlsSocket.

◆ readEvent()

void HttpSocket::readEvent ( )
overridevirtual

Reimplemented from AsyncFw::AbstractSocket.

◆ writeEvent()

void HttpSocket::writeEvent ( )
overridevirtual

Reimplemented from AsyncFw::AbstractSocket.

◆ disconnect()

void HttpSocket::disconnect ( )
overridevirtual

Reimplemented from AsyncFw::AbstractTlsSocket.

◆ close()

void HttpSocket::close ( )
overridevirtual

Reimplemented from AsyncFw::AbstractTlsSocket.

◆ destroy()

void HttpSocket::destroy ( )
overridevirtual

Reimplemented from AsyncFw::AbstractSocket.


The documentation for this class was generated from the following files: