do not use this unless you understand what you are doing and you want to take the risk,
you are warnned
#ifdef __cplusplus
+#include <string>
extern "C" {
#endif
#ifdef DOH
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);
};
};
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;
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);
%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.
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);
};
}
}
+/* 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("");