mirror of
https://github.com/QuasarApp/qthttpserver.git
synced 2025-04-26 10:24:31 +00:00
Add dependencies file for Coin
Coin by default uses dev branch of qtbase. Add 5.12 qtbase into the dependencies file Change-Id: I849ea65e36c74f153dbd5531c01e3a3b00ab4fef Reviewed-by: Mikhail Svetkin <mikhail.svetkin@gmail.com>
This commit is contained in:
parent
a65cc1fa6e
commit
9719bf64bb
3
coin/product_dependencies.yaml
Normal file
3
coin/product_dependencies.yaml
Normal file
@ -0,0 +1,3 @@
|
||||
dependencies:
|
||||
../../qt/qt5.git:
|
||||
ref: "5.12"
|
4
dependencies.yaml
Normal file
4
dependencies.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
dependencies:
|
||||
../../qt/qtbase:
|
||||
ref: "7d7afe1d2b1d85ea5221d1d2883c8bf80aa0e927"
|
||||
required: true
|
@ -89,7 +89,7 @@ private:
|
||||
bool routeImpl(Args &&...args, ViewHandler &&viewHandler)
|
||||
{
|
||||
auto routerHandler = [this, viewHandler] (
|
||||
QRegularExpressionMatch &match,
|
||||
const QRegularExpressionMatch &match,
|
||||
const QHttpServerRequest &request,
|
||||
QTcpSocket *socket) mutable {
|
||||
auto boundViewHandler = router()->bindCaptured<ViewHandler, ViewTraits>(
|
||||
|
@ -95,9 +95,9 @@ public:
|
||||
void addHeaders(QHttpServerResponder::HeaderList headers);
|
||||
|
||||
template<typename Container>
|
||||
void addHeaders(const Container &headers)
|
||||
void addHeaders(const Container &headerList)
|
||||
{
|
||||
for (const auto &header : headers)
|
||||
for (const auto &header : headerList)
|
||||
addHeader(header.first, header.second);
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,7 @@ public:
|
||||
|
||||
template<typename ViewHandler, typename ViewTraits = QHttpServerRouterViewTraits<ViewHandler>>
|
||||
typename ViewTraits::BindableType bindCaptured(ViewHandler &&handler,
|
||||
QRegularExpressionMatch &match) const
|
||||
const QRegularExpressionMatch &match) const
|
||||
{
|
||||
return bindCapturedImpl<ViewHandler, ViewTraits>(
|
||||
std::forward<ViewHandler>(handler),
|
||||
@ -127,13 +127,26 @@ private:
|
||||
bool addRuleImpl(QHttpServerRouterRule *rule,
|
||||
const std::initializer_list<int> &metaTypes);
|
||||
|
||||
// template<typename ViewHandler, typename ViewTraits, int ... Cx, int ... Px>
|
||||
// typename ViewTraits::BindableType bindCapturedImpl(ViewHandler &&handler,
|
||||
// const QRegularExpressionMatch &match,
|
||||
// QtPrivate::IndexesList<Cx...>,
|
||||
// QtPrivate::IndexesList<Px...>) const
|
||||
// {
|
||||
// return std::bind(
|
||||
// std::forward<ViewHandler>(handler),
|
||||
// QVariant(match.captured(Cx + 1))
|
||||
// .value<typename ViewTraits::Arguments::template Arg<Cx>::CleanType>()...,
|
||||
// QtPrivate::QHttpServerRouterPlaceholder<Px>{}...);
|
||||
// }
|
||||
|
||||
template<typename ViewHandler, typename ViewTraits, int ... Cx, int ... Px>
|
||||
typename ViewTraits::BindableType bindCapturedImpl(ViewHandler &&handler,
|
||||
QRegularExpressionMatch &match,
|
||||
typename std::enable_if<ViewTraits::Arguments::CapturableCount != 0, typename ViewTraits::BindableType>::type
|
||||
bindCapturedImpl(ViewHandler &&handler,
|
||||
const QRegularExpressionMatch &match,
|
||||
QtPrivate::IndexesList<Cx...>,
|
||||
QtPrivate::IndexesList<Px...>) const
|
||||
{
|
||||
|
||||
return std::bind(
|
||||
std::forward<ViewHandler>(handler),
|
||||
QVariant(match.captured(Cx + 1))
|
||||
@ -141,6 +154,17 @@ private:
|
||||
QtPrivate::QHttpServerRouterPlaceholder<Px>{}...);
|
||||
}
|
||||
|
||||
template<typename ViewHandler, typename ViewTraits, int ... Cx, int ... Px>
|
||||
typename std::enable_if<!ViewTraits::Arguments::CapturableCount, typename ViewTraits::BindableType>::type
|
||||
bindCapturedImpl(ViewHandler &&handler,
|
||||
const QRegularExpressionMatch &,
|
||||
QtPrivate::IndexesList<Cx...>,
|
||||
QtPrivate::IndexesList<Px...>) const
|
||||
{
|
||||
return std::bind(
|
||||
std::forward<ViewHandler>(handler),
|
||||
QtPrivate::QHttpServerRouterPlaceholder<Px>{}...);
|
||||
}
|
||||
|
||||
QScopedPointer<QHttpServerRouterPrivate> d_ptr;
|
||||
};
|
||||
|
@ -48,7 +48,7 @@ class Q_HTTPSERVER_EXPORT QHttpServerRouterRule
|
||||
Q_DECLARE_PRIVATE(QHttpServerRouterRule)
|
||||
|
||||
public:
|
||||
using RouterHandler = std::function<void(QRegularExpressionMatch &,
|
||||
using RouterHandler = std::function<void(const QRegularExpressionMatch &,
|
||||
const QHttpServerRequest &,
|
||||
QTcpSocket *)>;
|
||||
|
||||
|
@ -308,14 +308,12 @@ struct ViewTraitsHelper {
|
||||
using Type = std::function<typename FunctionTraits::ReturnType (Args...)>;
|
||||
};
|
||||
|
||||
template<int Id>
|
||||
using OffsetArg = typename FunctionTraits::template Arg<CaptureOffset + Id>::Type;
|
||||
|
||||
template<int ... Idx>
|
||||
static constexpr typename FunctionWrapper<
|
||||
typename FunctionTraits::template Arg<CaptureOffset + Idx>::Type...>::Type
|
||||
eval(QtPrivate::IndexesList<Idx...>) noexcept
|
||||
{
|
||||
return FunctionWrapper<
|
||||
typename FunctionTraits::template Arg<CaptureOffset + Idx>::Type...>::Type();
|
||||
}
|
||||
static constexpr typename FunctionWrapper<OffsetArg<Idx>...>::Type
|
||||
eval(QtPrivate::IndexesList<Idx...>) noexcept;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -3,7 +3,6 @@ TEMPLATE = subdirs
|
||||
QT = network
|
||||
|
||||
SUBDIRS = \
|
||||
cmake \
|
||||
qabstracthttpserver \
|
||||
qhttpserver \
|
||||
qhttpserverresponder \
|
||||
|
@ -57,7 +57,7 @@ struct HttpServer : QAbstractHttpServer {
|
||||
void route(const char *path, const QHttpServerRequest::Methods methods, ViewHandler &&viewHandler)
|
||||
{
|
||||
auto rule = new QHttpServerRouterRule(
|
||||
path, methods, [this, &viewHandler] (QRegularExpressionMatch &match,
|
||||
path, methods, [this, &viewHandler] (const QRegularExpressionMatch &match,
|
||||
const QHttpServerRequest &request,
|
||||
QTcpSocket *socket) {
|
||||
auto boundViewHandler = router.bindCaptured<ViewHandler>(
|
||||
|
Loading…
x
Reference in New Issue
Block a user