use std::wstring_view in SessionIdManager::DecodeToken(...) method

This commit is contained in:
Tomasz Sowa 2022-08-10 12:42:16 +02:00
parent de972de948
commit 6266eac729
3 changed files with 17 additions and 2 deletions

View File

@ -52,6 +52,7 @@ public:
static constexpr const wchar_t * content_type = L"Content-Type";
static constexpr const wchar_t * accept = L"Accept";
static constexpr const wchar_t * accept_language = L"Accept-Language";
static constexpr const wchar_t * authorization = L"Authorization";
/*
* headers' names lower case
@ -87,6 +88,7 @@ public:
static constexpr const wchar_t * multipart_form_data = L"multipart/form-data";
static constexpr const wchar_t * bearer = L"Bearer";
static constexpr const wchar_t * winix = L"Winix";
static const int status_200_ok = 200;

View File

@ -433,6 +433,18 @@ void SessionIdManager::CopyString(const std::wstring & in, std::string & out)
}
void SessionIdManager::CopyString(const std::wstring_view & in, std::string & out)
{
out.clear();
if( out.capacity() < in.size() )
out.reserve(in.size());
for(size_t i=0 ; i<in.size() ; ++i)
out += in[i];
}
bool SessionIdManager::Encode(std::string & str)
{
@ -613,7 +625,7 @@ bool SessionIdManager::DecodeToken(size_t & id, unsigned int & index)
}
bool SessionIdManager::DecodeToken(const std::wstring & token, size_t & id, unsigned int & index)
bool SessionIdManager::DecodeToken(const std::wstring_view & token, size_t & id, unsigned int & index)
{
if( !was_inited )
return false;

View File

@ -133,7 +133,7 @@ public:
*
*/
bool EncodeToken(size_t id, unsigned int index, time_t cur_utc_time, std::wstring & token);
bool DecodeToken(const std::wstring & token, size_t & id, unsigned int & index);
bool DecodeToken(const std::wstring_view & token, size_t & id, unsigned int & index);
private:
@ -170,6 +170,7 @@ private:
void AppendXor(std::string & str);
void CopyString(const std::string & in, std::wstring & out);
void CopyString(const std::wstring & in, std::string & out);
void CopyString(const std::wstring_view & in, std::string & out);
bool Encode(std::string & str);
bool DecodeToken(size_t key, size_t & id, unsigned int & index);
bool DecodeToken(size_t & id, unsigned int & index);