forked from Mirrors/freeswitch
add ability to read from a stream
do not use this unless you understand what you are doing and you want to take the risk, you are warnned
This commit is contained in:
parent
f0b9407cca
commit
31f78d8cac
@ -3,6 +3,7 @@
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
#include <string>
|
||||
extern "C" {
|
||||
#endif
|
||||
#ifdef DOH
|
||||
@ -149,7 +150,9 @@ SWITCH_DECLARE(bool) email(char *to, char *from, char *headers = NULL, char *bod
|
||||
SWITCH_DECLARE_CONSTRUCTOR Stream(void);
|
||||
SWITCH_DECLARE_CONSTRUCTOR Stream(switch_stream_handle_t *);
|
||||
virtual SWITCH_DECLARE_CONSTRUCTOR ~ Stream();
|
||||
SWITCH_DECLARE(std::string) read();
|
||||
SWITCH_DECLARE(void) write(const char *data);
|
||||
SWITCH_DECLARE(void) raw_write(std::string data);
|
||||
SWITCH_DECLARE(const char *) get_data(void);
|
||||
};
|
||||
|
||||
|
@ -91,6 +91,7 @@ struct switch_state_handler_table {
|
||||
};
|
||||
|
||||
struct switch_stream_handle {
|
||||
switch_stream_handle_read_function_t read_function;
|
||||
switch_stream_handle_write_function_t write_function;
|
||||
switch_stream_handle_raw_write_function_t raw_write_function;
|
||||
void *data;
|
||||
|
@ -2152,6 +2152,7 @@ typedef void (*switch_scheduler_func_t) (switch_scheduler_task_t *task);
|
||||
|
||||
typedef switch_status_t (*switch_state_handler_t) (switch_core_session_t *);
|
||||
typedef struct switch_stream_handle switch_stream_handle_t;
|
||||
typedef uint8_t * (*switch_stream_handle_read_function_t) (switch_stream_handle_t *handle, int *len);
|
||||
typedef switch_status_t (*switch_stream_handle_write_function_t) (switch_stream_handle_t *handle, const char *fmt, ...);
|
||||
typedef switch_status_t (*switch_stream_handle_raw_write_function_t) (switch_stream_handle_t *handle, uint8_t *data, switch_size_t datalen);
|
||||
|
||||
|
@ -43,6 +43,8 @@
|
||||
%newobject API::execute;
|
||||
%newobject API::executeString;
|
||||
|
||||
%include "std_string.i"
|
||||
|
||||
/**
|
||||
* tell swig to grok everything defined in these header files and
|
||||
* build all sorts of c wrappers and lua shadows of the c wrappers.
|
||||
|
@ -22,7 +22,9 @@ class Stream {
|
||||
Stream(void);
|
||||
Stream(switch_stream_handle_t *);
|
||||
virtual ~ Stream();
|
||||
string read();
|
||||
void write(const char *data);
|
||||
void raw_write(void *data, int len);
|
||||
const char *get_data(void);
|
||||
};
|
||||
|
||||
|
@ -531,12 +531,37 @@ SWITCH_DECLARE_CONSTRUCTOR Stream::~Stream()
|
||||
}
|
||||
}
|
||||
|
||||
/* WARNING!! you are not encouraged to use this unless you understand the risk!!! */
|
||||
SWITCH_DECLARE(std::string) Stream::read()
|
||||
{
|
||||
uint8_t *buff;
|
||||
this_check(std::string(""));
|
||||
int len = 0;
|
||||
|
||||
this_check(std::string());
|
||||
|
||||
if (!stream_p->read_function) return std::string();
|
||||
|
||||
buff = stream_p->read_function(stream_p, &len);
|
||||
|
||||
if (!buff) return std::string();
|
||||
if (len < 0) return std::string();
|
||||
|
||||
return std::string((const char *)buff, len);
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(void) Stream::write(const char *data)
|
||||
{
|
||||
this_check_void();
|
||||
stream_p->write_function(stream_p, "%s", data);
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(void) Stream::raw_write(std::string data)
|
||||
{
|
||||
this_check_void();
|
||||
stream_p->raw_write_function(stream_p, (uint8_t *)data.c_str(), data.length());
|
||||
}
|
||||
|
||||
SWITCH_DECLARE(const char *)Stream::get_data()
|
||||
{
|
||||
this_check("");
|
||||
|
Loading…
Reference in New Issue
Block a user