add socketFlush, tcpSocketStartTLS and luaEngineTLSAvailable

This commit is contained in:
Syping 2020-07-04 14:03:37 +02:00
parent 3daf9e69a9
commit 536ca5e539
3 changed files with 66 additions and 4 deletions

View file

@ -29,12 +29,17 @@ void LuaEngineNetwork::pushClass(lua_State *L_p)
// Local Socket
pushFunction(L_p, "createLocalSocket", createLocalSocket);
// TCP Socket
pushFunction(L_p, "createTcpSocket", createTcpSocket);
// Socket
pushFunction(L_p, "socketConnect", socketConnect);
pushFunction(L_p, "socketDisconnect", socketDisconnect);
pushFunction(L_p, "socketFlush", socketFlush);
// TCP Socket
pushFunction(L_p, "createTcpSocket", createTcpSocket);
pushFunction(L_p, "tcpSocketStartTLS", tcpSocketStartTLS);
// TLS
pushFunction(L_p, "luaEngineTLSAvailable", luaEngineTLSAvailable);
}
void LuaEngineNetwork::pushClass(LuaEngine *luaEngine)
@ -69,13 +74,29 @@ int LuaEngineNetwork::createTcpSocket(lua_State *L_p)
#ifdef QT_NO_SSL
QTcpSocket *tcpSocket = new QTcpSocket(parent);
#else
QSslSocket *tcpSocket = new QSslSocket(parent);
QTcpSocket *tcpSocket;
if (QSslSocket::supportsSsl()) {
tcpSocket = new QSslSocket(parent);
}
else {
tcpSocket = new QTcpSocket(parent);
}
#endif
tcpSocket->setObjectName(nameForPointer(tcpSocket));
pushPointer(L_p, tcpSocket);
return 1;
}
int LuaEngineNetwork::luaEngineTLSAvailable(lua_State *L_p)
{
#ifdef QT_NO_SSL
pushVariant(L_p, false);
#else
pushVariant(L_p, QSslSocket::supportsSsl());
#endif
return 1;
}
int LuaEngineNetwork::socketConnect(lua_State *L_p)
{
if (getArgumentCount(L_p) >= 2) {
@ -111,6 +132,39 @@ int LuaEngineNetwork::socketDisconnect(lua_State *L_p)
return 0;
}
int LuaEngineNetwork::socketFlush(lua_State *L_p)
{
if (getArgumentCount(L_p) >= 1) {
void *pointer = getPointer(L_p, 1);
if (pointer != NULL) {
if (((QObject*)pointer)->inherits("QAbstractSocket")) {
bool isFlushed = ((QAbstractSocket*)pointer)->flush();
pushVariant(L_p, isFlushed);
return 1;
}
}
}
return 0;
}
int LuaEngineNetwork::tcpSocketStartTLS(lua_State *L_p)
{
#ifndef QT_NO_SSL
if (getArgumentCount(L_p) >= 1) {
void *pointer = getPointer(L_p, 1);
if (pointer != NULL) {
if (((QObject*)pointer)->inherits("QSslSocket")) {
((QSslSocket*)pointer)->startClientEncryption();
pushVariant(L_p, true);
return 1;
}
}
}
#endif
pushVariant(L_p, false);
return 1;
}
QString LuaEngineNetwork::nameForPointer(void *pointer)
{
QString nameStorage;

View file

@ -30,8 +30,11 @@ public:
static void pushClass(LuaEngine *luaEngine);
static int createLocalSocket(lua_State *L_p);
static int createTcpSocket(lua_State *L_p);
static int luaEngineTLSAvailable(lua_State *L_p);
static int socketConnect(lua_State *L_p);
static int socketDisconnect(lua_State *L_p);
static int socketFlush(lua_State *L_p);
static int tcpSocketStartTLS(lua_State *L_p);
private:
lua_State *L;

View file

@ -75,6 +75,11 @@ function main()
createLabel("Right", imagesLayout)
createSpacerItem(SizePolicyExpanding, SizePolicyMinimum, imagesLayout)
-- Third Tab
local thirdTab = createWidgetTab("Third Tab", tabBar)
local thirdTabLayout = createLayout(VerticalLayout, thirdTab)
createLabel("<b>The Third Tab is here!</b>", thirdTabLayout)
-- Last Tab
local lastTab = createWidgetTab("Last Tab", tabBar)
local lastTabLayout = createLayout(HorizontalLayout, lastTab)