mirror of
https://github.com/danog/php-libtgvoip.git
synced 2024-11-26 20:04:48 +01:00
Fixes
This commit is contained in:
parent
d88a7f2925
commit
98a49f7207
@ -33,12 +33,10 @@ AudioInputModule::~AudioInputModule()
|
|||||||
|
|
||||||
while (holdFiles.size()) {
|
while (holdFiles.size()) {
|
||||||
fclose(holdFiles.front());
|
fclose(holdFiles.front());
|
||||||
delete holdFiles.front();
|
|
||||||
holdFiles.pop();
|
holdFiles.pop();
|
||||||
}
|
}
|
||||||
while (inputFiles.size()) {
|
while (inputFiles.size()) {
|
||||||
fclose(inputFiles.front());
|
fclose(inputFiles.front());
|
||||||
delete inputFiles.front();
|
|
||||||
inputFiles.pop();
|
inputFiles.pop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,7 +83,6 @@ bool AudioInputModule::playOnHold(Php::Parameters ¶ms) {
|
|||||||
lock_mutex(inputMutex);
|
lock_mutex(inputMutex);
|
||||||
while (holdFiles.size()) {
|
while (holdFiles.size()) {
|
||||||
fclose(holdFiles.front());
|
fclose(holdFiles.front());
|
||||||
delete holdFiles.front();
|
|
||||||
holdFiles.pop();
|
holdFiles.pop();
|
||||||
}
|
}
|
||||||
for (int i = 0; i < params[0].size(); i++) {
|
for (int i = 0; i < params[0].size(); i++) {
|
||||||
|
79
main.cpp
79
main.cpp
@ -40,9 +40,10 @@ void VoIP::__construct()
|
|||||||
inst->implData = (void *) this;
|
inst->implData = (void *) this;
|
||||||
inst->SetStateCallback([](VoIPController *controller, int state) {
|
inst->SetStateCallback([](VoIPController *controller, int state) {
|
||||||
((VoIP *)controller->implData)->state = state;
|
((VoIP *)controller->implData)->state = state;
|
||||||
|
/*
|
||||||
if (state == STATE_FAILED) {
|
if (state == STATE_FAILED) {
|
||||||
((VoIP *)controller->implData)->__destruct();
|
((VoIP *)controller->implData)->__destruct();
|
||||||
}
|
}*/
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
void VoIP::__destruct()
|
void VoIP::__destruct()
|
||||||
@ -51,6 +52,17 @@ void VoIP::__destruct()
|
|||||||
delete inst;
|
delete inst;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VoIP::__wakeup()
|
||||||
|
{
|
||||||
|
__construct();
|
||||||
|
if (configuration) {
|
||||||
|
parseConfig();
|
||||||
|
}
|
||||||
|
if (proxyConfiguration) {
|
||||||
|
configureProxy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void VoIP::start()
|
void VoIP::start()
|
||||||
{
|
{
|
||||||
@ -61,11 +73,23 @@ void VoIP::connect()
|
|||||||
inst->Connect();
|
inst->Connect();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Php::Value VoIP::getProxy() const
|
||||||
|
{
|
||||||
|
return proxyConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Php::Value VoIP::getConfig() const
|
||||||
|
{
|
||||||
|
return configuration;
|
||||||
|
}
|
||||||
|
|
||||||
void VoIP::setConfig(Php::Parameters ¶ms)
|
void VoIP::setConfig(Php::Parameters ¶ms)
|
||||||
{
|
{
|
||||||
configuration = params[0];
|
configuration = params[0];
|
||||||
this->parseConfig();
|
this->parseConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
void VoIP::parseConfig() {
|
void VoIP::parseConfig() {
|
||||||
voip_config_t cfg;
|
voip_config_t cfg;
|
||||||
cfg.recv_timeout = configuration["config"]["recv_timeout"];
|
cfg.recv_timeout = configuration["config"]["recv_timeout"];
|
||||||
@ -74,7 +98,9 @@ void VoIP::parseConfig() {
|
|||||||
cfg.enableAEC = configuration["config"]["enable_AEC"];
|
cfg.enableAEC = configuration["config"]["enable_AEC"];
|
||||||
cfg.enableNS = configuration["config"]["enable_NS"];
|
cfg.enableNS = configuration["config"]["enable_NS"];
|
||||||
cfg.enableAGC = configuration["config"]["enable_AGC"];
|
cfg.enableAGC = configuration["config"]["enable_AGC"];
|
||||||
if (configuration["config"].contains("log_file_path"))
|
|
||||||
|
Php::Value log_file_path = "log_file_path";
|
||||||
|
if (configuration["config"].contains(log_file_path))
|
||||||
{
|
{
|
||||||
strncpy(cfg.logFilePath, configuration["config"]["log_file_path"], sizeof(cfg.logFilePath));
|
strncpy(cfg.logFilePath, configuration["config"]["log_file_path"], sizeof(cfg.logFilePath));
|
||||||
cfg.logFilePath[sizeof(cfg.logFilePath) - 1] = 0;
|
cfg.logFilePath[sizeof(cfg.logFilePath) - 1] = 0;
|
||||||
@ -83,8 +109,9 @@ void VoIP::parseConfig() {
|
|||||||
{
|
{
|
||||||
memset(cfg.logFilePath, 0, sizeof(cfg.logFilePath));
|
memset(cfg.logFilePath, 0, sizeof(cfg.logFilePath));
|
||||||
}
|
}
|
||||||
|
Php::Value stats_dump_file_path = "stats_dump_file_path";
|
||||||
|
|
||||||
if (configuration["config"].contains("stats_dump_file_path"))
|
if (configuration["config"].contains(stats_dump_file_path))
|
||||||
{
|
{
|
||||||
strncpy(cfg.statsDumpFilePath, configuration["config"]["stats_dump_file_path"], sizeof(cfg.statsDumpFilePath));
|
strncpy(cfg.statsDumpFilePath, configuration["config"]["stats_dump_file_path"], sizeof(cfg.statsDumpFilePath));
|
||||||
cfg.statsDumpFilePath[sizeof(cfg.statsDumpFilePath) - 1] = 0;
|
cfg.statsDumpFilePath[sizeof(cfg.statsDumpFilePath) - 1] = 0;
|
||||||
@ -94,7 +121,8 @@ void VoIP::parseConfig() {
|
|||||||
memset(cfg.statsDumpFilePath, 0, sizeof(cfg.statsDumpFilePath));
|
memset(cfg.statsDumpFilePath, 0, sizeof(cfg.statsDumpFilePath));
|
||||||
}
|
}
|
||||||
inst->SetConfig(&cfg);
|
inst->SetConfig(&cfg);
|
||||||
ServerConfig::GetSharedInstance()->Update(configuration["shared_config"]);
|
Php::Value shared_config = configuration["shared_config"];
|
||||||
|
ServerConfig::GetSharedInstance()->Update(shared_config);
|
||||||
|
|
||||||
char *key = (char *) malloc(256);
|
char *key = (char *) malloc(256);
|
||||||
memcpy(key, configuration["auth_key"], 256);
|
memcpy(key, configuration["auth_key"], 256);
|
||||||
@ -102,11 +130,12 @@ void VoIP::parseConfig() {
|
|||||||
free(key);
|
free(key);
|
||||||
|
|
||||||
vector<Endpoint> eps;
|
vector<Endpoint> eps;
|
||||||
for (int i = 0; i < configuration["endpoints"].size(); i++)
|
Php::Value endpoints = configuration["endpoints"];
|
||||||
|
for (int i = 0; i < endpoints.size(); i++)
|
||||||
{
|
{
|
||||||
string ip = configuration["endpoints"][i]["ip"];
|
string ip = endpoints[i]["ip"];
|
||||||
string ipv6 = configuration["endpoints"][i]["ipv6"];
|
string ipv6 = endpoints[i]["ipv6"];
|
||||||
string peer_tag = configuration["endpoints"][i]["peer_tag"];
|
string peer_tag = endpoints[i]["peer_tag"];
|
||||||
|
|
||||||
IPv4Address v4addr(ip);
|
IPv4Address v4addr(ip);
|
||||||
IPv6Address v6addr("::0");
|
IPv6Address v6addr("::0");
|
||||||
@ -122,7 +151,7 @@ void VoIP::parseConfig() {
|
|||||||
memcpy(pTag, peer_tag.c_str(), 16);
|
memcpy(pTag, peer_tag.c_str(), 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
eps.push_back(Endpoint(configuration["endpoints"][i]["id"], (int32_t)configuration["endpoints"][i]["port"], v4addr, v6addr, EP_TYPE_UDP_RELAY, pTag));
|
eps.push_back(Endpoint(endpoints[i]["id"], (int32_t)endpoints[i]["port"], v4addr, v6addr, EP_TYPE_UDP_RELAY, pTag));
|
||||||
free(pTag);
|
free(pTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -154,8 +183,15 @@ void VoIP::setMicMute(Php::Parameters ¶ms)
|
|||||||
// int protocol, string address, uint16_t port, string username, string password
|
// int protocol, string address, uint16_t port, string username, string password
|
||||||
void VoIP::setProxy(Php::Parameters ¶ms)
|
void VoIP::setProxy(Php::Parameters ¶ms)
|
||||||
{
|
{
|
||||||
inst->SetProxy(params[0], params[1], (int32_t) params[2], params[3], params[4]);
|
proxyConfiguration = params[0];
|
||||||
|
configureProxy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void VoIP::configureProxy()
|
||||||
|
{
|
||||||
|
inst->SetProxy(proxyConfiguration["protocol"], proxyConfiguration["address"], (int32_t) proxyConfiguration["port"], proxyConfiguration["username"], proxyConfiguration["password"]);
|
||||||
|
}
|
||||||
|
|
||||||
void VoIP::debugCtl(Php::Parameters ¶ms)
|
void VoIP::debugCtl(Php::Parameters ¶ms)
|
||||||
{
|
{
|
||||||
inst->DebugCtl(params[0], params[1]);
|
inst->DebugCtl(params[0], params[1]);
|
||||||
@ -281,18 +317,6 @@ PHPCPP_EXPORT void *get_module()
|
|||||||
// description of the class so that PHP knows which methods are accessible
|
// description of the class so that PHP knows which methods are accessible
|
||||||
Php::Class<VoIP> voip("VoIP");
|
Php::Class<VoIP> voip("VoIP");
|
||||||
|
|
||||||
/*
|
|
||||||
voip.method("setState", {
|
|
||||||
Php::ByVal("state", Php::Type::Numeric),
|
|
||||||
});
|
|
||||||
|
|
||||||
voip.method("startOutput");
|
|
||||||
voip.method("stopOutput");
|
|
||||||
voip.method("stopInput");
|
|
||||||
voip.method("getOutputLevel");
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
voip.method<&VoIP::getState>("getState", Php::Public | Php::Final);
|
voip.method<&VoIP::getState>("getState", Php::Public | Php::Final);
|
||||||
voip.method<&VoIP::isPlaying>("isPlaying", Php::Public | Php::Final);
|
voip.method<&VoIP::isPlaying>("isPlaying", Php::Public | Php::Final);
|
||||||
voip.method<&VoIP::isDestroyed>("isDestroyed", Php::Public | Php::Final);
|
voip.method<&VoIP::isDestroyed>("isDestroyed", Php::Public | Php::Final);
|
||||||
@ -303,9 +327,7 @@ PHPCPP_EXPORT void *get_module()
|
|||||||
|
|
||||||
voip.method<&VoIP::__destruct>("__destruct", Php::Public | Php::Final);
|
voip.method<&VoIP::__destruct>("__destruct", Php::Public | Php::Final);
|
||||||
voip.method<&VoIP::__construct>("__construct", Php::Public | Php::Final);
|
voip.method<&VoIP::__construct>("__construct", Php::Public | Php::Final);
|
||||||
voip.method<&VoIP::setEncryptionKey>("setOutputLevel", Php::Public | Php::Final, {
|
voip.method<&VoIP::__wakeup>("__wakeup", Php::Public | Php::Final);
|
||||||
Php::ByVal("level", Php::Type::Float),
|
|
||||||
});
|
|
||||||
voip.method<&VoIP::setMicMute>("setMicMute", Php::Public | Php::Final, {
|
voip.method<&VoIP::setMicMute>("setMicMute", Php::Public | Php::Final, {
|
||||||
Php::ByVal("type", Php::Type::Bool),
|
Php::ByVal("type", Php::Type::Bool),
|
||||||
});
|
});
|
||||||
@ -316,8 +338,7 @@ PHPCPP_EXPORT void *get_module()
|
|||||||
Php::ByVal("config", Php::Type::Array),
|
Php::ByVal("config", Php::Type::Array),
|
||||||
});
|
});
|
||||||
voip.method<&VoIP::setProxy>("setProxy", Php::Public | Php::Final, {
|
voip.method<&VoIP::setProxy>("setProxy", Php::Public | Php::Final, {
|
||||||
// int protocol, string address, uint16_t port, string username, string password
|
Php::ByVal("proxyConfiguration", Php::Type::Array),
|
||||||
Php::ByVal("protocol", Php::Type::Numeric), Php::ByVal("address", Php::Type::String), Php::ByVal("port", Php::Type::Numeric), Php::ByVal("username", Php::Type::String), Php::ByVal("password", Php::Type::String),
|
|
||||||
});
|
});
|
||||||
voip.method<&VoIP::getDebugLog>("getDebugLog", Php::Public | Php::Final);
|
voip.method<&VoIP::getDebugLog>("getDebugLog", Php::Public | Php::Final);
|
||||||
voip.method<&VoIP::getLastError>("getLastError", Php::Public | Php::Final);
|
voip.method<&VoIP::getLastError>("getLastError", Php::Public | Php::Final);
|
||||||
@ -335,6 +356,10 @@ PHPCPP_EXPORT void *get_module()
|
|||||||
voip.method<&VoIP::setOutputFile>("setOutputFile", Php::Public | Php::Final, {Php::ByVal("file", Php::Type::String)});
|
voip.method<&VoIP::setOutputFile>("setOutputFile", Php::Public | Php::Final, {Php::ByVal("file", Php::Type::String)});
|
||||||
voip.method<&VoIP::unsetOutputFile>("unsetOutputFile", Php::Public | Php::Final);
|
voip.method<&VoIP::unsetOutputFile>("unsetOutputFile", Php::Public | Php::Final);
|
||||||
|
|
||||||
|
|
||||||
|
voip.property("configuration", &VoIP::getConfig, Php::Private);
|
||||||
|
voip.property("proxyConfiguration", &VoIP::getProxy, Php::Private);
|
||||||
|
|
||||||
voip.constant("STATE_CREATED", STATE_CREATED);
|
voip.constant("STATE_CREATED", STATE_CREATED);
|
||||||
voip.constant("STATE_WAIT_INIT", STATE_WAIT_INIT);
|
voip.constant("STATE_WAIT_INIT", STATE_WAIT_INIT);
|
||||||
voip.constant("STATE_WAIT_INIT_ACK", STATE_WAIT_INIT_ACK);
|
voip.constant("STATE_WAIT_INIT_ACK", STATE_WAIT_INIT_ACK);
|
||||||
|
11
main.h
11
main.h
@ -39,12 +39,17 @@ class VoIP : public Php::Base
|
|||||||
|
|
||||||
void __construct();
|
void __construct();
|
||||||
void __destruct();
|
void __destruct();
|
||||||
|
void __wakeup();
|
||||||
|
|
||||||
void start();
|
void start();
|
||||||
void connect();
|
void connect();
|
||||||
|
|
||||||
|
Php::Value getConfig() const;
|
||||||
void setConfig(Php::Parameters ¶ms);
|
void setConfig(Php::Parameters ¶ms);
|
||||||
|
|
||||||
|
Php::Value getProxy() const;
|
||||||
|
void setProxy(Php::Parameters ¶ms);
|
||||||
|
|
||||||
Php::Value play(Php::Parameters ¶ms);
|
Php::Value play(Php::Parameters ¶ms);
|
||||||
Php::Value playOnHold(Php::Parameters ¶ms);
|
Php::Value playOnHold(Php::Parameters ¶ms);
|
||||||
Php::Value setOutputFile(Php::Parameters ¶ms);
|
Php::Value setOutputFile(Php::Parameters ¶ms);
|
||||||
@ -83,7 +88,9 @@ class VoIP : public Php::Base
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void parseConfig();
|
void parseConfig();
|
||||||
|
void configureProxy();
|
||||||
|
|
||||||
|
Php::Value proxyConfiguration;
|
||||||
Php::Value configuration;
|
Php::Value configuration;
|
||||||
VoIPController *inst;
|
VoIPController *inst;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user