Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Shervin Nourbakhsh
cameo
Commits
a587197c
Commit
a587197c
authored
Apr 07, 2020
by
legoc
Browse files
Request implementation without linger
parent
fc6e576d
Changes
5
Hide whitespace changes
Inline
Side-by-side
cameo-api-cpp/src/cameo/Application.cpp
View file @
a587197c
...
...
@@ -968,8 +968,19 @@ Request::Request(std::unique_ptr<RequestImpl> & impl) :
Request
::~
Request
()
{
}
void
Request
::
setTimeout
(
int
value
,
bool
linger
)
{
m_impl
->
setTimeout
(
value
,
linger
);
std
::
string
Request
::
getObjectId
()
const
{
// Local id is missing.
return
"request:"
+
m_impl
->
m_requesterApplicationName
+
"."
+
to_string
(
m_impl
->
m_requesterApplicationId
)
+
"@"
+
m_impl
->
m_requesterServerEndpoint
;
}
void
Request
::
setTimeout
(
int
value
)
{
m_impl
->
setTimeout
(
value
);
}
const
std
::
string
&
Request
::
getBinary
()
const
{
...
...
@@ -988,12 +999,12 @@ const std::string& Request::getSecondBinaryPart() const {
return
m_impl
->
m_message2
;
}
void
Request
::
replyBinary
(
const
std
::
string
&
response
)
{
m_impl
->
replyBinary
(
response
);
bool
Request
::
replyBinary
(
const
std
::
string
&
response
)
{
return
m_impl
->
replyBinary
(
response
);
}
void
Request
::
reply
(
const
std
::
string
&
response
)
{
m_impl
->
reply
(
response
);
bool
Request
::
reply
(
const
std
::
string
&
response
)
{
return
m_impl
->
reply
(
response
);
}
std
::
unique_ptr
<
Instance
>
Request
::
connectToRequester
()
{
...
...
cameo-api-cpp/src/cameo/Application.h
View file @
a587197c
...
...
@@ -392,14 +392,16 @@ class Request {
public:
~
Request
();
std
::
string
getObjectId
()
const
;
const
std
::
string
&
getBinary
()
const
;
std
::
string
get
()
const
;
const
std
::
string
&
getSecondBinaryPart
()
const
;
void
setTimeout
(
int
value
,
bool
linger
=
true
);
void
setTimeout
(
int
value
);
void
replyBinary
(
const
std
::
string
&
response
);
void
reply
(
const
std
::
string
&
response
);
bool
replyBinary
(
const
std
::
string
&
response
);
bool
reply
(
const
std
::
string
&
response
);
std
::
unique_ptr
<
Instance
>
connectToRequester
();
...
...
cameo-api-cpp/src/cameo/impl/RequestImpl.cpp
View file @
a587197c
...
...
@@ -31,8 +31,7 @@ RequestImpl::RequestImpl(application::This * application, const std::string & re
m_message
(
message
),
m_requesterApplicationName
(
requesterApplicationName
),
m_requesterApplicationId
(
requesterApplicationId
),
m_timeout
(
0
),
m_linger
(
true
)
{
m_timeout
(
0
)
{
stringstream
requesterEndpoint
;
requesterEndpoint
<<
serverUrl
<<
":"
<<
requesterPort
;
...
...
@@ -46,32 +45,32 @@ RequestImpl::RequestImpl(application::This * application, const std::string & re
RequestImpl
::~
RequestImpl
()
{
}
void
RequestImpl
::
setTimeout
(
int
value
,
bool
linger
)
{
void
RequestImpl
::
setTimeout
(
int
value
)
{
m_timeout
=
value
;
m_linger
=
linger
;
}
void
RequestImpl
::
replyBinary
(
const
std
::
string
&
response
)
{
bool
RequestImpl
::
replyBinary
(
const
std
::
string
&
response
)
{
// Create a request socket. It is created for each request that could be optimized.
unique_ptr
<
RequestSocketImpl
>
requestSocket
=
m_application
->
createRequestSocket
(
m_requesterEndpoint
,
m_timeout
);
requestSocket
->
setLinger
(
m_linger
);
try
{
requestSocket
->
request
(
m_application
->
m_impl
->
createRequestType
(
PROTO_RESPONSE
),
response
);
}
catch
(
const
ConnectionTimeout
&
)
{
cout
<<
"timeout while replying"
<<
endl
;
return
false
;
}
return
true
;
}
void
RequestImpl
::
reply
(
const
std
::
string
&
response
)
{
bool
RequestImpl
::
reply
(
const
std
::
string
&
response
)
{
// Encode the data.
string
result
;
serialize
(
response
,
result
);
replyBinary
(
result
);
return
replyBinary
(
result
);
}
}
...
...
cameo-api-cpp/src/cameo/impl/RequestImpl.h
View file @
a587197c
...
...
@@ -33,10 +33,10 @@ public:
RequestImpl
(
application
::
This
*
application
,
const
std
::
string
&
requesterApplicationName
,
int
requesterApplicationId
,
const
std
::
string
&
message
,
const
std
::
string
&
serverUrl
,
int
serverPort
,
int
requesterPort
);
~
RequestImpl
();
void
setTimeout
(
int
value
,
bool
linger
);
void
setTimeout
(
int
value
);
void
replyBinary
(
const
std
::
string
&
response
);
void
reply
(
const
std
::
string
&
response
);
bool
replyBinary
(
const
std
::
string
&
response
);
bool
reply
(
const
std
::
string
&
response
);
application
::
This
*
m_application
;
std
::
string
m_requesterEndpoint
;
...
...
@@ -46,7 +46,6 @@ public:
int
m_requesterApplicationId
;
std
::
string
m_requesterServerEndpoint
;
int
m_timeout
;
bool
m_linger
;
};
}
...
...
cameo-api-cpp/src/cameo/impl/RequestSocketImpl.cpp
View file @
a587197c
...
...
@@ -74,11 +74,6 @@ std::unique_ptr<zmq::message_t> RequestSocketImpl::request(const std::string& re
int
rc
=
zmq
::
poll
(
items
,
1
,
timeout
);
if
(
rc
==
0
)
{
int
lingerValue
=
0
;
m_socket
->
setsockopt
(
ZMQ_LINGER
,
&
lingerValue
,
sizeof
(
int
));
cout
<<
"linger 0"
<<
endl
;
// Timeout occurred.
throw
ConnectionTimeout
();
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment