Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
ab0cf843
Commit
ab0cf843
authored
Jan 12, 2015
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Начало работы над переходом на weak_ptr в работе UniSetObject,UniSetManager,UniSetActivator
parent
84dd804d
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
36 additions
and
27 deletions
+36
-27
UniSetManager.h
include/UniSetManager.h
+1
-1
UniSetObject.h
include/UniSetObject.h
+2
-2
UniSetActivator.cc
src/ObjectRepository/UniSetActivator.cc
+1
-1
UniSetManager.cc
src/ObjectRepository/UniSetManager.cc
+16
-12
UniSetObject.cc
src/ObjectRepository/UniSetObject.cc
+16
-11
No files found.
include/UniSetManager.h
View file @
ab0cf843
...
@@ -72,7 +72,7 @@ class UniSetManager:
...
@@ -72,7 +72,7 @@ class UniSetManager:
virtual
UniSetTypes
::
SimpleInfoSeq
*
getObjectsInfo
(
CORBA
::
Long
MaxLength
=
300
)
override
;
virtual
UniSetTypes
::
SimpleInfoSeq
*
getObjectsInfo
(
CORBA
::
Long
MaxLength
=
300
)
override
;
// --------------------------
// --------------------------
void
initPOA
(
UniSetManager
*
rmngr
);
void
initPOA
(
const
std
::
weak_ptr
<
UniSetManager
>&
rmngr
);
virtual
bool
addObject
(
const
std
::
shared_ptr
<
UniSetObject
>&
obj
);
virtual
bool
addObject
(
const
std
::
shared_ptr
<
UniSetObject
>&
obj
);
virtual
bool
removeObject
(
const
std
::
shared_ptr
<
UniSetObject
>&
obj
);
virtual
bool
removeObject
(
const
std
::
shared_ptr
<
UniSetObject
>&
obj
);
...
...
include/UniSetObject.h
View file @
ab0cf843
...
@@ -193,7 +193,7 @@ class UniSetObject:
...
@@ -193,7 +193,7 @@ class UniSetObject:
inline
void
setActive
(
bool
set
){
active
=
set
;
}
inline
void
setActive
(
bool
set
){
active
=
set
;
}
UniSetTypes
::
VoidMessage
msg
;
UniSetTypes
::
VoidMessage
msg
;
UniSetManager
*
mymngr
;
std
::
weak_ptr
<
UniSetManager
>
mymngr
;
void
setThreadPriority
(
int
p
);
void
setThreadPriority
(
int
p
);
...
@@ -210,7 +210,7 @@ class UniSetObject:
...
@@ -210,7 +210,7 @@ class UniSetObject:
/*! функция потока */
/*! функция потока */
void
work
();
void
work
();
//! Инициализация параметров объекта
//! Инициализация параметров объекта
bool
init
(
UniSetManager
*
om
);
bool
init
(
const
std
::
weak_ptr
<
UniSetManager
>&
om
);
//! Прямая деактивизация объекта
//! Прямая деактивизация объекта
bool
deactivate
();
bool
deactivate
();
//! Непосредственная активизация объекта
//! Непосредственная активизация объекта
...
...
src/ObjectRepository/UniSetActivator.cc
View file @
ab0cf843
...
@@ -256,7 +256,7 @@ void UniSetActivator::run( bool thread )
...
@@ -256,7 +256,7 @@ void UniSetActivator::run( bool thread )
{
{
ulogsys
<<
myname
<<
"(run): создаю менеджер "
<<
endl
;
ulogsys
<<
myname
<<
"(run): создаю менеджер "
<<
endl
;
UniSetManager
::
initPOA
(
this
);
UniSetManager
::
initPOA
(
get_aptr
()
);
if
(
getId
()
==
UniSetTypes
::
DefaultObjectId
)
if
(
getId
()
==
UniSetTypes
::
DefaultObjectId
)
offThread
();
// отключение потока обработки сообщений, раз не задан ObjectId
offThread
();
// отключение потока обработки сообщений, раз не задан ObjectId
...
...
src/ObjectRepository/UniSetManager.cc
View file @
ab0cf843
...
@@ -152,19 +152,23 @@ UniSetManager::~UniSetManager()
...
@@ -152,19 +152,23 @@ UniSetManager::~UniSetManager()
mlist
.
clear
();
mlist
.
clear
();
}
}
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
void
UniSetManager
::
initPOA
(
UniSetManager
*
rmngr
)
void
UniSetManager
::
initPOA
(
const
std
::
weak_ptr
<
UniSetManager
>&
rmngr
)
{
{
auto
m
=
rmngr
.
lock
();
if
(
!
m
)
{
ostringstream
err
;
err
<<
myname
<<
"(initPOA): failed weak_ptr !!"
;
ucrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
if
(
CORBA
::
is_nil
(
pman
)
)
if
(
CORBA
::
is_nil
(
pman
)
)
this
->
pman
=
rmngr
->
getPOAManager
();
this
->
pman
=
m
->
getPOAManager
();
/*
string mname(getName());
PortableServer
::
POA_var
rpoa
=
m
->
getPOA
();
mname+="_poamngr";
PortableServer::POA_var root_poa = rmngr->getPOA();
poa = root_poa->create_POA(mname.c_str(), pman, policyList);
*/
PortableServer
::
POA_var
rpoa
=
rmngr
->
getPOA
();
if
(
rpoa
!=
poa
)
if
(
rpoa
!=
poa
)
poa
=
rmngr
->
getPOA
();
poa
=
m
->
getPOA
();
if
(
CORBA
::
is_nil
(
poa
)
)
if
(
CORBA
::
is_nil
(
poa
)
)
ucrit
<<
myname
<<
"(initPOA): failed init poa "
<<
endl
;
ucrit
<<
myname
<<
"(initPOA): failed init poa "
<<
endl
;
...
@@ -249,7 +253,7 @@ void UniSetManager::managers( OManagerCommand cmd )
...
@@ -249,7 +253,7 @@ void UniSetManager::managers( OManagerCommand cmd )
switch
(
cmd
)
switch
(
cmd
)
{
{
case
initial
:
case
initial
:
li
->
initPOA
(
this
);
li
->
initPOA
(
get_mptr
()
);
break
;
break
;
case
activ
:
case
activ
:
...
@@ -311,7 +315,7 @@ void UniSetManager::objects(OManagerCommand cmd)
...
@@ -311,7 +315,7 @@ void UniSetManager::objects(OManagerCommand cmd)
switch
(
cmd
)
switch
(
cmd
)
{
{
case
initial
:
case
initial
:
li
->
init
(
this
);
li
->
init
(
get_mptr
()
);
break
;
break
;
case
activ
:
case
activ
:
...
...
src/ObjectRepository/UniSetObject.cc
View file @
ab0cf843
...
@@ -46,7 +46,6 @@ using namespace UniSetTypes;
...
@@ -46,7 +46,6 @@ using namespace UniSetTypes;
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
UniSetObject
::
UniSetObject
()
:
UniSetObject
::
UniSetObject
()
:
ui
(
UniSetTypes
::
DefaultObjectId
),
ui
(
UniSetTypes
::
DefaultObjectId
),
mymngr
(
NULL
),
msgpid
(
0
),
msgpid
(
0
),
reg
(
false
),
reg
(
false
),
active
(
0
),
active
(
0
),
...
@@ -66,7 +65,6 @@ stCountOfQueueFull(0)
...
@@ -66,7 +65,6 @@ stCountOfQueueFull(0)
// ------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------
UniSetObject
::
UniSetObject
(
ObjectId
id
)
:
UniSetObject
::
UniSetObject
(
ObjectId
id
)
:
ui
(
id
),
ui
(
id
),
mymngr
(
NULL
),
msgpid
(
0
),
msgpid
(
0
),
reg
(
false
),
reg
(
false
),
active
(
0
),
active
(
0
),
...
@@ -99,7 +97,6 @@ stCountOfQueueFull(0)
...
@@ -99,7 +97,6 @@ stCountOfQueueFull(0)
UniSetObject
::
UniSetObject
(
const
string
&
name
,
const
string
&
section
)
:
UniSetObject
::
UniSetObject
(
const
string
&
name
,
const
string
&
section
)
:
ui
(
UniSetTypes
::
DefaultObjectId
),
ui
(
UniSetTypes
::
DefaultObjectId
),
mymngr
(
NULL
),
msgpid
(
0
),
msgpid
(
0
),
reg
(
false
),
reg
(
false
),
active
(
0
),
active
(
0
),
...
@@ -177,7 +174,7 @@ void UniSetObject::init_object()
...
@@ -177,7 +174,7 @@ void UniSetObject::init_object()
* \param om - указазтель на менджер управляющий объектом
* \param om - указазтель на менджер управляющий объектом
* \return Возращает \a true если инициализация прошда успешно, и \a false если нет
* \return Возращает \a true если инициализация прошда успешно, и \a false если нет
*/
*/
bool
UniSetObject
::
init
(
UniSetManager
*
om
)
bool
UniSetObject
::
init
(
const
std
::
weak_ptr
<
UniSetManager
>&
om
)
{
{
uinfo
<<
myname
<<
": init..."
<<
endl
;
uinfo
<<
myname
<<
": init..."
<<
endl
;
this
->
mymngr
=
om
;
this
->
mymngr
=
om
;
...
@@ -334,7 +331,8 @@ void UniSetObject::registered()
...
@@ -334,7 +331,8 @@ void UniSetObject::registered()
return
;
return
;
}
}
if
(
!
mymngr
)
auto
m
=
mymngr
.
lock
();
if
(
!
m
)
{
{
uwarn
<<
myname
<<
"(registered): unknown my manager"
<<
endl
;
uwarn
<<
myname
<<
"(registered): unknown my manager"
<<
endl
;
string
err
(
myname
+
": unknown my manager"
);
string
err
(
myname
+
": unknown my manager"
);
...
@@ -370,7 +368,6 @@ void UniSetObject::registered()
...
@@ -370,7 +368,6 @@ void UniSetObject::registered()
(так бы можно было проверить и если "не жив", то смело заменять ссылку на новую). Но существует обратная сторона:
(так бы можно было проверить и если "не жив", то смело заменять ссылку на новую). Но существует обратная сторона:
если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш(новый)
если заменяемый объект "жив" и завершит свою работу, то он может почистить за собой ссылку и это тогда наш(новый)
объект станет недоступен другим, а знать об этом не будет!!!
объект станет недоступен другим, а знать об этом не будет!!!
*/
*/
ucrit
<<
myname
<<
"(registered): replace object (ObjectNameAlready)"
<<
endl
;
ucrit
<<
myname
<<
"(registered): replace object (ObjectNameAlready)"
<<
endl
;
reg
=
true
;
reg
=
true
;
...
@@ -638,7 +635,10 @@ bool UniSetObject::deactivate()
...
@@ -638,7 +635,10 @@ bool UniSetObject::deactivate()
{
{
uinfo
<<
myname
<<
"(deactivate): ..."
<<
endl
;
uinfo
<<
myname
<<
"(deactivate): ..."
<<
endl
;
PortableServer
::
POA_var
poamngr
=
mymngr
->
getPOA
();
auto
m
=
mymngr
.
lock
();
if
(
m
)
{
PortableServer
::
POA_var
poamngr
=
m
->
getPOA
();
if
(
!
PortableServer
::
POA_Helper
::
is_nil
(
poamngr
)
)
if
(
!
PortableServer
::
POA_Helper
::
is_nil
(
poamngr
)
)
{
{
try
try
...
@@ -653,6 +653,8 @@ bool UniSetObject::deactivate()
...
@@ -653,6 +653,8 @@ bool UniSetObject::deactivate()
uinfo
<<
myname
<<
"(disacivate): finished..."
<<
endl
;
uinfo
<<
myname
<<
"(disacivate): finished..."
<<
endl
;
return
true
;
return
true
;
}
}
}
uwarn
<<
myname
<<
"(deactivate): manager already destroyed.."
<<
endl
;
uwarn
<<
myname
<<
"(deactivate): manager already destroyed.."
<<
endl
;
}
}
catch
(
CORBA
::
TRANSIENT
)
catch
(
CORBA
::
TRANSIENT
)
...
@@ -684,13 +686,16 @@ bool UniSetObject::activate()
...
@@ -684,13 +686,16 @@ bool UniSetObject::activate()
{
{
uinfo
<<
myname
<<
": activate..."
<<
endl
;
uinfo
<<
myname
<<
": activate..."
<<
endl
;
if
(
mymngr
==
NULL
)
auto
m
=
mymngr
.
lock
();
if
(
!
m
)
{
{
ucrit
<<
myname
<<
"(activate): mymngr=NULL!!! activate failure..."
<<
endl
;
ostringstream
err
;
return
false
;
err
<<
myname
<<
"(activate): mymngr=NULL!!! activate failure..."
;
ucrit
<<
err
.
str
()
<<
endl
;
throw
SystemError
(
err
.
str
());
}
}
PortableServer
::
POA_var
poa
=
m
ymngr
->
getPOA
();
PortableServer
::
POA_var
poa
=
m
->
getPOA
();
if
(
poa
==
NULL
||
CORBA
::
is_nil
(
poa
)
)
if
(
poa
==
NULL
||
CORBA
::
is_nil
(
poa
)
)
{
{
string
err
(
myname
+
": не задан менеджер"
);
string
err
(
myname
+
": не задан менеджер"
);
...
...
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