mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-01-31 09:57:14 +01:00
Compare commits
3 Commits
5a57bf2fbf
...
3e75e36cdf
Author | SHA1 | Date | |
---|---|---|---|
|
3e75e36cdf | ||
|
ac7d18f297 | ||
|
39473a68f4 |
@ -285,13 +285,13 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Make sure that the specified element is withing buffer range
|
// Make sure that the specified element is withing buffer range
|
||||||
else if (n > (m_Cap - sizeof(T)))
|
else if (n > (m_Cap - sizeof(T)))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Element of size (%d) at index (%u) is out of buffer capacity (%u)"),
|
ThrowMemExcept(fmt::runtime("Element of size ({}) at index ({}) is out of buffer capacity ({})"),
|
||||||
sizeof(T), n, m_Cap);
|
sizeof(T), n, m_Cap);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -306,13 +306,13 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Make sure that the specified element is withing buffer range
|
// Make sure that the specified element is withing buffer range
|
||||||
else if (n > (m_Cap - sizeof(T)))
|
else if (n > (m_Cap - sizeof(T)))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Element of size (%d) at index (%u) is out of buffer capacity (%u)"),
|
ThrowMemExcept(fmt::runtime("Element of size ({}) at index ({}) is out of buffer capacity ({})"),
|
||||||
sizeof(T), n, m_Cap);
|
sizeof(T), n, m_Cap);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -359,7 +359,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -374,7 +374,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -389,7 +389,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least two elements of this type
|
// Make sure that the buffer can host at least two elements of this type
|
||||||
if (m_Cap < (sizeof(T) * 2))
|
if (m_Cap < (sizeof(T) * 2))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host two elements of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host two elements of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -404,7 +404,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least two elements of this type
|
// Make sure that the buffer can host at least two elements of this type
|
||||||
if (m_Cap < (sizeof(T) * 2))
|
if (m_Cap < (sizeof(T) * 2))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host two elements of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host two elements of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -419,7 +419,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -434,7 +434,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -449,7 +449,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least two elements of this type
|
// Make sure that the buffer can host at least two elements of this type
|
||||||
if (m_Cap < (sizeof(T) * 2))
|
if (m_Cap < (sizeof(T) * 2))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host two elements of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host two elements of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -464,7 +464,7 @@ public:
|
|||||||
// Make sure that the buffer can host at least two elements of this type
|
// Make sure that the buffer can host at least two elements of this type
|
||||||
if (m_Cap < (sizeof(T) * 2))
|
if (m_Cap < (sizeof(T) * 2))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host two elements of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host two elements of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -540,7 +540,7 @@ public:
|
|||||||
// Make sure that at least one element of this type exists after the cursor
|
// Make sure that at least one element of this type exists after the cursor
|
||||||
if ((m_Cur + sizeof(T)) > m_Cap)
|
if ((m_Cur + sizeof(T)) > m_Cap)
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Element of size (%u) starting at (%u) exceeds buffer capacity (%u)"),
|
ThrowMemExcept(fmt::runtime("Element of size ({}) starting at ({}) exceeds buffer capacity ({})"),
|
||||||
sizeof(T), m_Cur, m_Cap);
|
sizeof(T), m_Cur, m_Cap);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -555,7 +555,7 @@ public:
|
|||||||
// Make sure that at least one element of this type exists after the cursor
|
// Make sure that at least one element of this type exists after the cursor
|
||||||
if ((m_Cur + sizeof(T)) > m_Cap)
|
if ((m_Cur + sizeof(T)) > m_Cap)
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Element of size (%u) starting at (%u) exceeds buffer capacity (%u)"),
|
ThrowMemExcept(fmt::runtime("Element of size ({}) starting at ({}) exceeds buffer capacity ({})"),
|
||||||
sizeof(T), m_Cur, m_Cap);
|
sizeof(T), m_Cur, m_Cap);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -570,7 +570,7 @@ public:
|
|||||||
// The cursor must have at least one element of this type behind
|
// The cursor must have at least one element of this type behind
|
||||||
if (m_Cur < sizeof(T))
|
if (m_Cur < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Cannot read an element of size (%u) before the cursor at (%u)"),
|
ThrowMemExcept(fmt::runtime("Cannot read an element of size ({}) before the cursor at ({})"),
|
||||||
sizeof(T), m_Cur);
|
sizeof(T), m_Cur);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -585,7 +585,7 @@ public:
|
|||||||
// The cursor must have at least one element of this type behind
|
// The cursor must have at least one element of this type behind
|
||||||
if (m_Cur < sizeof(T))
|
if (m_Cur < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Cannot read an element of size (%u) before the cursor at (%u)"),
|
ThrowMemExcept(fmt::runtime("Cannot read an element of size ({}) before the cursor at ({})"),
|
||||||
sizeof(T), m_Cur);
|
sizeof(T), m_Cur);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -600,13 +600,13 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// There must be buffer left for at least two elements of this type after the cursor
|
// There must be buffer left for at least two elements of this type after the cursor
|
||||||
else if ((m_Cur + (sizeof(T) * 2)) > m_Cap)
|
else if ((m_Cur + (sizeof(T) * 2)) > m_Cap)
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Element of size (%u) starting at (%u) exceeds buffer capacity (%u)"),
|
ThrowMemExcept(fmt::runtime("Element of size ({}) starting at ({}) exceeds buffer capacity ({})"),
|
||||||
sizeof(T), m_Cur + sizeof(T), m_Cap);
|
sizeof(T), m_Cur + sizeof(T), m_Cap);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -621,13 +621,13 @@ public:
|
|||||||
// Make sure that the buffer can host at least one element of this type
|
// Make sure that the buffer can host at least one element of this type
|
||||||
if (m_Cap < sizeof(T))
|
if (m_Cap < sizeof(T))
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Buffer capacity of (%u) is unable to host an element of size (%u)"),
|
ThrowMemExcept(fmt::runtime("Buffer capacity of ({}) is unable to host an element of size ({})"),
|
||||||
m_Cap, sizeof(T));
|
m_Cap, sizeof(T));
|
||||||
}
|
}
|
||||||
// There must be buffer left for at least two elements of this type after the cursor
|
// There must be buffer left for at least two elements of this type after the cursor
|
||||||
else if ((m_Cur + (sizeof(T) * 2)) > m_Cap)
|
else if ((m_Cur + (sizeof(T) * 2)) > m_Cap)
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Element of size (%u) starting at (%u) exceeds buffer capacity (%u)"),
|
ThrowMemExcept(fmt::runtime("Element of size ({}) starting at ({}) exceeds buffer capacity ({})"),
|
||||||
sizeof(T), m_Cur + sizeof(T), m_Cap);
|
sizeof(T), m_Cur + sizeof(T), m_Cap);
|
||||||
}
|
}
|
||||||
// Return the requested element
|
// Return the requested element
|
||||||
@ -708,7 +708,7 @@ public:
|
|||||||
// See if the requested capacity doesn't exceed the limit
|
// See if the requested capacity doesn't exceed the limit
|
||||||
if (n > Max< T >())
|
if (n > Max< T >())
|
||||||
{
|
{
|
||||||
ThrowMemExcept(fmt::runtime("Requested buffer of (%u) elements exceeds the (%u) limit"), n, Max< T >());
|
ThrowMemExcept(fmt::runtime("Requested buffer of ({}) elements exceeds the ({}) limit"), n, Max< T >());
|
||||||
}
|
}
|
||||||
// Is there an existing buffer?
|
// Is there an existing buffer?
|
||||||
else if (n && !m_Cap)
|
else if (n && !m_Cap)
|
||||||
|
@ -294,33 +294,41 @@ public:
|
|||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Reposition the edit cursor to the specified number of elements ahead.
|
* Reposition the edit cursor to the specified number of elements ahead.
|
||||||
*/
|
*/
|
||||||
void Advance(SQInteger n) const
|
SqBuffer & Advance(SQInteger n)
|
||||||
{
|
{
|
||||||
Valid().Advance(ConvTo< SzType >::From(n));
|
Valid().Advance(ConvTo< SzType >::From(n));
|
||||||
|
// Allow chaining
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Reposition the edit cursor to the specified number of elements behind.
|
* Reposition the edit cursor to the specified number of elements behind.
|
||||||
*/
|
*/
|
||||||
void Retreat(SQInteger n) const
|
SqBuffer & Retreat(SQInteger n)
|
||||||
{
|
{
|
||||||
Valid().Retreat(ConvTo< SzType >::From(n));
|
Valid().Retreat(ConvTo< SzType >::From(n));
|
||||||
|
// Allow chaining
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Reposition the edit cursor to a fixed position within the buffer.
|
* Reposition the edit cursor to a fixed position within the buffer.
|
||||||
*/
|
*/
|
||||||
void Move(SQInteger n) const
|
SqBuffer & Move(SQInteger n)
|
||||||
{
|
{
|
||||||
Valid().Move(ConvTo< SzType >::From(n));
|
Valid().Move(ConvTo< SzType >::From(n));
|
||||||
|
// Allow chaining
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Append a value to the current cursor location and advance the cursor.
|
* Append a value to the current cursor location and advance the cursor.
|
||||||
*/
|
*/
|
||||||
void Push(SQInteger v) const
|
SqBuffer & Push(SQInteger v)
|
||||||
{
|
{
|
||||||
Valid().Push(ConvTo< Value >::From(v));
|
Valid().Push(ConvTo< Value >::From(v));
|
||||||
|
// Allow chaining
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
@ -414,15 +422,17 @@ public:
|
|||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Grow the size of the internal buffer by the specified amount of bytes.
|
* Grow the size of the internal buffer by the specified amount of bytes.
|
||||||
*/
|
*/
|
||||||
void Grow(SQInteger n) const
|
SqBuffer & Grow(SQInteger n)
|
||||||
{
|
{
|
||||||
return Valid().Grow(ConvTo< SzType >::From(n) * sizeof(Value));
|
Valid().Grow(ConvTo< SzType >::From(n) * sizeof(Value));
|
||||||
|
// Allow chaining
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Makes sure there is enough capacity to hold the specified element count.
|
* Makes sure there is enough capacity to hold the specified element count.
|
||||||
*/
|
*/
|
||||||
void Adjust(SQInteger n)
|
SqBuffer & Adjust(SQInteger n)
|
||||||
{
|
{
|
||||||
// Validate the managed buffer reference
|
// Validate the managed buffer reference
|
||||||
Validate();
|
Validate();
|
||||||
@ -438,6 +448,8 @@ public:
|
|||||||
{
|
{
|
||||||
STHROWF("{}", e.what()); // Re-package
|
STHROWF("{}", e.what()); // Re-package
|
||||||
}
|
}
|
||||||
|
// Allow chaining
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
@ -22,6 +22,8 @@ void InitializeNet()
|
|||||||
#endif
|
#endif
|
||||||
#ifndef NO_SSL
|
#ifndef NO_SSL
|
||||||
f |= MG_FEATURES_SSL;
|
f |= MG_FEATURES_SSL;
|
||||||
|
#else
|
||||||
|
OutputMessage("Network compiled without SSL support.");
|
||||||
#endif
|
#endif
|
||||||
#ifndef NO_CGI
|
#ifndef NO_CGI
|
||||||
f |= MG_FEATURES_CGI;
|
f |= MG_FEATURES_CGI;
|
||||||
@ -135,6 +137,11 @@ int WebSocketClient::DataHandler(int flags, char * data, size_t data_len) noexce
|
|||||||
{
|
{
|
||||||
LogFtl("Failed to queue web-socket data");
|
LogFtl("Failed to queue web-socket data");
|
||||||
}
|
}
|
||||||
|
// Should we auto-close the connection
|
||||||
|
if (((flags & 0xF) == MG_WEBSOCKET_OPCODE_CONNECTION_CLOSE) && mAutoClose.load() == true)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
// Return 1 to keep the connection open
|
// Return 1 to keep the connection open
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -173,6 +180,7 @@ void Register_Net(HSQUIRRELVM vm)
|
|||||||
.Prop(_SC("OnClose"), &WebSocketClient::GetOnClose, &WebSocketClient::SetOnClose)
|
.Prop(_SC("OnClose"), &WebSocketClient::GetOnClose, &WebSocketClient::SetOnClose)
|
||||||
.Prop(_SC("Valid"), &WebSocketClient::IsValid)
|
.Prop(_SC("Valid"), &WebSocketClient::IsValid)
|
||||||
.Prop(_SC("Closing"), &WebSocketClient::IsClosing)
|
.Prop(_SC("Closing"), &WebSocketClient::IsClosing)
|
||||||
|
.Prop(_SC("AutoClose"), &WebSocketClient::GetAutoClose, &WebSocketClient::SetAutoClose)
|
||||||
// Member Methods
|
// Member Methods
|
||||||
.FmtFunc(_SC("SetTag"), &WebSocketClient::ApplyTag)
|
.FmtFunc(_SC("SetTag"), &WebSocketClient::ApplyTag)
|
||||||
.FmtFunc(_SC("SetData"), &WebSocketClient::ApplyData)
|
.FmtFunc(_SC("SetData"), &WebSocketClient::ApplyData)
|
||||||
|
@ -159,6 +159,13 @@ struct WebSocketClient : public SqChainedInstances< WebSocketClient >
|
|||||||
*/
|
*/
|
||||||
std::atomic< bool > mClosed{false};
|
std::atomic< bool > mClosed{false};
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Whether to not keep the connection open after receiving the close event.
|
||||||
|
* Internally this event is ignored but if set to true the connection is immediatelly closed
|
||||||
|
* in the internal event handler, before the event may reach the script callback.
|
||||||
|
*/
|
||||||
|
std::atomic< bool > mAutoClose{false};
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Server host to connect to, i.e. "echo.websocket.org" or "192.168.1.1" or "localhost".
|
* Server host to connect to, i.e. "echo.websocket.org" or "192.168.1.1" or "localhost".
|
||||||
*/
|
*/
|
||||||
@ -184,7 +191,8 @@ struct WebSocketClient : public SqChainedInstances< WebSocketClient >
|
|||||||
*/
|
*/
|
||||||
WebSocketClient()
|
WebSocketClient()
|
||||||
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
||||||
, mPort(0), mSecure(false), mClosing(false), mClosed(false), mHost(), mPath(), mOrigin(), mExtensions()
|
, mPort(0), mSecure(false), mClosing(false), mClosed(false), mAutoClose(false)
|
||||||
|
, mHost(), mPath(), mOrigin(), mExtensions()
|
||||||
{
|
{
|
||||||
ChainInstance(); // Remember this instance
|
ChainInstance(); // Remember this instance
|
||||||
}
|
}
|
||||||
@ -194,7 +202,7 @@ struct WebSocketClient : public SqChainedInstances< WebSocketClient >
|
|||||||
*/
|
*/
|
||||||
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path)
|
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path)
|
||||||
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
||||||
, mPort(port), mSecure(false), mClosing(false), mClosed(false)
|
, mPort(port), mSecure(false), mClosing(false), mClosed(false), mAutoClose(false)
|
||||||
, mHost(host.mPtr, host.GetSize())
|
, mHost(host.mPtr, host.GetSize())
|
||||||
, mPath(path.mPtr, path.GetSize())
|
, mPath(path.mPtr, path.GetSize())
|
||||||
, mOrigin(), mExtensions()
|
, mOrigin(), mExtensions()
|
||||||
@ -207,7 +215,7 @@ struct WebSocketClient : public SqChainedInstances< WebSocketClient >
|
|||||||
*/
|
*/
|
||||||
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path, bool secure)
|
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path, bool secure)
|
||||||
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
||||||
, mPort(port), mSecure(secure), mClosing(false), mClosed(false)
|
, mPort(port), mSecure(secure), mClosing(false), mClosed(false), mAutoClose(false)
|
||||||
, mHost(host.mPtr, host.GetSize())
|
, mHost(host.mPtr, host.GetSize())
|
||||||
, mPath(path.mPtr, path.GetSize())
|
, mPath(path.mPtr, path.GetSize())
|
||||||
, mOrigin(), mExtensions()
|
, mOrigin(), mExtensions()
|
||||||
@ -220,7 +228,7 @@ struct WebSocketClient : public SqChainedInstances< WebSocketClient >
|
|||||||
*/
|
*/
|
||||||
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path, bool secure, StackStrF & origin)
|
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path, bool secure, StackStrF & origin)
|
||||||
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
||||||
, mPort(port), mSecure(secure), mClosing(false), mClosed(false)
|
, mPort(port), mSecure(secure), mClosing(false), mClosed(false), mAutoClose(false)
|
||||||
, mHost(host.mPtr, host.GetSize())
|
, mHost(host.mPtr, host.GetSize())
|
||||||
, mPath(path.mPtr, path.GetSize())
|
, mPath(path.mPtr, path.GetSize())
|
||||||
, mOrigin(origin.mPtr, origin.GetSize())
|
, mOrigin(origin.mPtr, origin.GetSize())
|
||||||
@ -234,7 +242,7 @@ struct WebSocketClient : public SqChainedInstances< WebSocketClient >
|
|||||||
*/
|
*/
|
||||||
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path, bool secure, StackStrF & origin, StackStrF & ext)
|
WebSocketClient(StackStrF & host, uint16_t port, StackStrF & path, bool secure, StackStrF & origin, StackStrF & ext)
|
||||||
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
: Base(), mHandle(nullptr), mQueue(1024), mOnData(), mOnClose(), mTag(), mData()
|
||||||
, mPort(port), mSecure(secure), mClosing(false), mClosed(false)
|
, mPort(port), mSecure(secure), mClosing(false), mClosed(false), mAutoClose(false)
|
||||||
, mHost(host.mPtr, host.GetSize())
|
, mHost(host.mPtr, host.GetSize())
|
||||||
, mPath(path.mPtr, path.GetSize())
|
, mPath(path.mPtr, path.GetSize())
|
||||||
, mOrigin(origin.mPtr, origin.GetSize())
|
, mOrigin(origin.mPtr, origin.GetSize())
|
||||||
@ -294,6 +302,22 @@ struct WebSocketClient : public SqChainedInstances< WebSocketClient >
|
|||||||
return mClosing.load();
|
return mClosing.load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Retrieve whether auto-closing is enabled or not.
|
||||||
|
*/
|
||||||
|
SQMOD_NODISCARD bool GetAutoClose() const
|
||||||
|
{
|
||||||
|
return mAutoClose.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Modify whether auto-closing is enabled or not.
|
||||||
|
*/
|
||||||
|
void SetAutoClose(bool toggle)
|
||||||
|
{
|
||||||
|
mAutoClose.store(toggle);
|
||||||
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Retrieve the associated user tag.
|
* Retrieve the associated user tag.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user