mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 17:38:59 +00:00
add perl wrapper to scgi
This commit is contained in:
101
libs/libscgi/src/scgi_oop.cpp
Normal file
101
libs/libscgi/src/scgi_oop.cpp
Normal file
@@ -0,0 +1,101 @@
|
||||
#include <scgi.h>
|
||||
#include <scgi_oop.h>
|
||||
|
||||
#define connection_construct_common() memset(&handle, 0, sizeof(handle))
|
||||
|
||||
|
||||
|
||||
SCGIhandle::SCGIhandle(void)
|
||||
{
|
||||
connection_construct_common();
|
||||
}
|
||||
|
||||
SCGIhandle::~SCGIhandle()
|
||||
{
|
||||
if (handle.connected) {
|
||||
scgi_disconnect(&handle);
|
||||
}
|
||||
}
|
||||
|
||||
int SCGIhandle::socketDescriptor()
|
||||
{
|
||||
if (handle.connected) {
|
||||
return (int) handle.sock;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
int SCGIhandle::disconnect()
|
||||
{
|
||||
if (handle.connected) {
|
||||
return scgi_disconnect(&handle);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int SCGIhandle::connected()
|
||||
{
|
||||
return handle.connected;
|
||||
}
|
||||
|
||||
int SCGIhandle::addParam(const char *name, const char *value)
|
||||
{
|
||||
return (int) scgi_add_param(&handle, name, value);
|
||||
}
|
||||
|
||||
int SCGIhandle::addBody(const char *value)
|
||||
{
|
||||
return (int) scgi_add_body(&handle, value);
|
||||
}
|
||||
|
||||
|
||||
int SCGIhandle::sendRequest(const char *host, int port, int timeout)
|
||||
{
|
||||
if (!host) {
|
||||
return -2;
|
||||
}
|
||||
|
||||
if (timeout < 1000) {
|
||||
timeout = 1000;
|
||||
}
|
||||
|
||||
if (scgi_connect(&handle, host, port, timeout) == SCGI_SUCCESS) {
|
||||
return (int) scgi_send_request(&handle);
|
||||
}
|
||||
|
||||
return -2;
|
||||
}
|
||||
|
||||
char *SCGIhandle::recv(void)
|
||||
{
|
||||
ssize_t len = scgi_recv(&handle, buf, sizeof(buf));
|
||||
|
||||
if (len > 0) {
|
||||
return (char *)buf;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
int SCGIhandle::bind(const char *host, int port)
|
||||
{
|
||||
return (int) scgi_bind(host, port, &handle.sock);
|
||||
}
|
||||
|
||||
|
||||
int SCGIhandle::accept(void)
|
||||
{
|
||||
scgi_socket_t client_sock;
|
||||
|
||||
if (scgi_accept(handle.sock, &client_sock, NULL) == SCGI_SUCCESS) {
|
||||
return (int) client_sock;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user