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
Cameo
cameo
Commits
3416699b
Commit
3416699b
authored
Oct 26, 2020
by
legoc
Browse files
(split) Starter info is used
parent
2324f6f4
Changes
6
Hide whitespace changes
Inline
Side-by-side
include/Application.h
View file @
3416699b
...
...
@@ -172,7 +172,6 @@ public:
private:
void
initApplication
(
int
argc
,
char
*
argv
[]);
static
std
::
string
getReference
();
static
State
parseState
(
const
std
::
string
&
value
);
State
getState
(
int
id
)
const
;
...
...
@@ -190,7 +189,7 @@ private:
int
m_id
;
bool
m_managed
;
std
::
str
in
g
m_starterEndpoint
;
Endpo
in
t
m_starterEndpoint
;
std
::
string
m_starterName
;
int
m_starterId
;
...
...
src/Application.cpp
View file @
3416699b
...
...
@@ -115,15 +115,6 @@ void This::init(int argc, char *argv[]) {
}
}
std
::
string
This
::
getReference
()
{
if
(
m_instance
.
m_impl
!=
nullptr
)
{
ostringstream
os
;
os
<<
getName
()
<<
"."
<<
getId
()
<<
"@"
<<
getEndpoint
();
return
os
.
str
();
}
return
""
;
}
void
This
::
terminate
()
{
// Test if termination is already done.
...
...
@@ -161,18 +152,7 @@ void This::initApplication(int argc, char *argv[]) {
string
info
(
argv
[
argc
-
1
]);
// vector<string> tokens = split(info);
//
// if (tokens.size() < 4) {
// throw InvalidArgumentException(info + " is not a valid argument");
// }
//
// m_url = tokens[0] + ":" + tokens[1];
//
// string port = tokens[2];
// istringstream is(port);
// is >> m_port;
// Get the info object.
json
::
Object
infoObject
;
json
::
parse
(
infoObject
,
info
);
...
...
@@ -184,55 +164,39 @@ void This::initApplication(int argc, char *argv[]) {
// Retrieve the server version.
Services
::
retrieveServerVersion
();
// string nameId = tokens[3];
//
// int index = nameId.find_last_of('.');
// Get the name.
m_name
=
infoObject
[
message
::
ApplicationIdentity
::
NAME
].
GetString
();
// // Search for the . character meaning that the application is managed and already has an id.
// if (index != string::npos) {
// Managed apps have the id key.
if
(
infoObject
.
HasMember
(
message
::
ApplicationIdentity
::
ID
))
{
m_managed
=
true
;
// m_name = nameId.substr(0, index);
// string sid = nameId.substr(index + 1);
// {
// istringstream is(sid);
// is >> m_id;
// }
m_id
=
infoObject
[
message
::
ApplicationIdentity
::
ID
].
GetInt
();
}
else
{
m_managed
=
false
;
// m_name = nameId;
m_id
=
initUnmanagedApplication
();
if
(
m_id
==
-
1
)
{
int
id
=
initUnmanagedApplication
();
if
(
id
==
-
1
)
{
throw
UnmanagedApplicationException
(
string
(
"Maximum number of applications "
)
+
m_name
+
" reached"
);
}
m_id
=
id
;
}
// if (tokens.size() >= 7) {
// index = tokens[4].find_last_of('@');
// m_starterEndpoint = tokens[4].substr(index + 1) + ":" + tokens[5] + ":" + tokens[6];
// string starterNameId = tokens[4].substr(0, index);
// index = starterNameId.find_last_of('.');
// m_starterName = starterNameId.substr(0, index);
// string sid = starterNameId.substr(index + 1);
// {
// istringstream is(sid);
// is >> m_starterId;
// }
// }
// Get the starter info if it is present.
if
(
infoObject
.
HasMember
(
message
::
ApplicationIdentity
::
STARTER
))
{
json
::
Value
&
starterValue
=
infoObject
[
message
::
ApplicationIdentity
::
STARTER
];
m_starterEndpoint
=
Endpoint
::
parse
(
starterValue
[
message
::
ApplicationIdentity
::
SERVER
].
GetString
());
m_starterName
=
starterValue
[
message
::
ApplicationIdentity
::
NAME
].
GetString
();
m_starterId
=
starterValue
[
message
::
ApplicationIdentity
::
ID
].
GetInt
();
}
// Must be here because the server endpoint is required.
initStatus
();
// Create the local server
// Create the local server
.
m_server
=
unique_ptr
<
Server
>
(
new
Server
(
m_serverEndpoint
));
// Create the starter server
if
(
m_starterEndpoint
!=
""
)
{
// Create the starter server
.
if
(
m_starterEndpoint
.
getAddress
()
!=
""
)
{
m_starterServer
=
unique_ptr
<
Server
>
(
new
Server
(
m_starterEndpoint
));
}
...
...
@@ -250,7 +214,7 @@ void This::initApplication(int argc, char *argv[]) {
cout
<<
"endpoint = "
<<
m_serverEndpoint
.
toString
()
<<
endl
;
cout
<<
"name = "
<<
m_name
<<
endl
;
cout
<<
"id = "
<<
m_id
<<
endl
;
cout
<<
"starterEndpoint = "
<<
m_starterEndpoint
<<
endl
;
cout
<<
"starterEndpoint = "
<<
m_starterEndpoint
.
toString
()
<<
endl
;
cout
<<
"starterName = "
<<
m_starterName
<<
endl
;
cout
<<
"starterId = "
<<
m_starterId
<<
endl
;
}
...
...
src/Server.cpp
View file @
3416699b
...
...
@@ -147,7 +147,7 @@ std::unique_ptr<application::Instance> Server::start(const std::string& name, co
streamSocket
=
createOutputStreamSocket
(
name
);
}
unique_ptr
<
zmq
::
message_t
>
reply
=
m_requestSocket
->
request
(
m_impl
->
createStartRequest
(
name
,
args
,
application
::
This
::
get
Reference
()));
unique_ptr
<
zmq
::
message_t
>
reply
=
m_requestSocket
->
request
(
m_impl
->
createStartRequest
(
name
,
args
,
application
::
This
::
get
Name
(),
application
::
This
::
getId
(),
application
::
This
::
getEndpoint
().
toString
()));
// Get the JSON response.
json
::
Object
response
;
...
...
src/Strings.cpp
View file @
3416699b
...
...
@@ -105,7 +105,10 @@ Endpoint Endpoint::withPort(int port) const {
}
std
::
string
Endpoint
::
toString
()
const
{
return
m_protocol
+
"://"
+
m_address
+
":"
+
to_string
(
m_port
);
if
(
m_address
!=
""
)
{
return
m_protocol
+
"://"
+
m_address
+
":"
+
to_string
(
m_port
);
}
return
""
;
}
ApplicationIdentity
::
ApplicationIdentity
(
const
std
::
string
&
name
,
int
id
,
const
Endpoint
&
endpoint
)
:
...
...
src/impl/ServicesImpl.cpp
View file @
3416699b
...
...
@@ -95,7 +95,7 @@ std::string ServicesImpl::createIsAliveRequest(int id) const {
return
request
.
toString
();
}
std
::
string
ServicesImpl
::
createStartRequest
(
const
std
::
string
&
name
,
const
std
::
vector
<
std
::
string
>
&
args
,
const
std
::
string
&
instanceReference
)
const
{
std
::
string
ServicesImpl
::
createStartRequest
(
const
std
::
string
&
name
,
const
std
::
vector
<
std
::
string
>
&
args
,
const
std
::
string
&
thisName
,
int
thisId
,
const
std
::
string
&
thisEndpoint
)
const
{
json
::
StringObject
request
;
request
.
pushKey
(
message
::
TYPE
);
...
...
@@ -111,8 +111,22 @@ std::string ServicesImpl::createStartRequest(const std::string& name, const std:
}
request
.
endArray
();
request
.
pushKey
(
message
::
StartRequest
::
STARTER
);
request
.
pushString
(
instanceReference
);
if
(
thisId
!=
-
1
)
{
request
.
pushKey
(
message
::
StartRequest
::
STARTER
);
request
.
startObject
();
request
.
pushKey
(
message
::
ApplicationIdentity
::
NAME
);
request
.
pushString
(
thisName
);
request
.
pushKey
(
message
::
ApplicationIdentity
::
ID
);
request
.
pushInt
(
thisId
);
request
.
pushKey
(
message
::
ApplicationIdentity
::
SERVER
);
request
.
pushString
(
thisEndpoint
);
request
.
endObject
();
}
return
request
.
toString
();
}
...
...
src/impl/ServicesImpl.h
View file @
3416699b
...
...
@@ -37,7 +37,7 @@ public:
std
::
string
createSyncRequest
()
const
;
std
::
string
createSyncStreamRequest
(
const
std
::
string
&
name
)
const
;
std
::
string
createVersionRequest
()
const
;
std
::
string
createStartRequest
(
const
std
::
string
&
name
,
const
std
::
vector
<
std
::
string
>
&
args
,
const
std
::
string
&
instanceReference
)
const
;
std
::
string
createStartRequest
(
const
std
::
string
&
name
,
const
std
::
vector
<
std
::
string
>
&
args
,
const
std
::
string
&
thisName
,
int
thisId
,
const
std
::
string
&
thisEndpoint
)
const
;
std
::
string
createStopRequest
(
int
id
)
const
;
std
::
string
createKillRequest
(
int
id
)
const
;
std
::
string
createConnectRequest
(
const
std
::
string
&
name
)
const
;
...
...
Shervin Nourbakhsh
@nourbakhsh
mentioned in commit
46e44691
·
Apr 23, 2021
mentioned in commit
46e44691
mentioned in commit 46e44691a03808a23a464818487b0dd014a9c57e
Toggle commit list
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