userver
C++ Async Framework
Toggle main menu visibility
Documentation
API Groups
Namespaces
Reference
Class List
Class Index
File List
Macros
All
e
i
l
r
t
u
Functions
Macros
e
i
l
r
t
u
Examples
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Concepts
Loading...
Searching...
No Matches
middleware.cpp
1
#
include
<
grpc
-
protovalidate
/
server
/
middleware
.
hpp
>
2
3
#
include
<
utility
>
4
5
#
include
<
userver
/
grpc
-
protovalidate
/
validate
.
hpp
>
6
#
include
<
userver
/
logging
/
log
.
hpp
>
7
#
include
<
userver
/
utils
/
assert
.
hpp
>
8
9
USERVER_NAMESPACE_BEGIN
10
11
namespace
grpc_protovalidate::
server
{
12
13
namespace
{
14
15
void
LogError(
const
ValidationError& error) {
16
switch
(error.GetType()) {
17
case
ValidationError::Type::kInternal:
18
LOG_ERROR() << error;
19
return
;
20
case
ValidationError::Type::kRule:
21
LOG_WARNING() << error;
22
return
;
23
}
24
UINVARIANT(
false
,
"Unexpected error type"
);
25
}
26
27
}
// namespace
28
29
const
ValidationSettings
&
Settings
::
Get
(
std
::
string_view
method_name
)
const
{
30
auto
it
=
per_method
.
find
(
method_name
);
31
return
it
!=
per_method
.
end
() ?
it
->
second
:
global
;
32
}
33
34
Middleware
::
Middleware
(
const
Settings
&
settings
) :
settings_
(
settings
) {}
35
36
Middleware
::~
Middleware
() =
default
;
37
38
void
Middleware
::
PostRecvMessage
(
ugrpc
::
server
::
MiddlewareCallContext
&
context
,
google
::
protobuf
::
Message
&
request
)
39
const
{
40
const
ValidationSettings
&
settings
=
settings_
.
Get
(
context
.
GetCallName
());
41
const
ValidationResult
result
=
ValidateMessage
(
request
, {.
fail_fast
=
settings
.
fail_fast
});
42
if
(
result
.
IsSuccess
()) {
43
return
;
44
}
45
LogError
(
result
.
GetError
());
46
context
.
SetError
(
result
.
GetError
().
GetGrpcStatus
(
settings
.
send_violations
));
47
}
48
49
}
// namespace grpc_protovalidate::server
50
51
USERVER_NAMESPACE_END
src
grpc-protovalidate
server
middleware.cpp
Generated on Fri Aug 22 2025 11:21:38 for userver by
Doxygen
1.9.8