Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
B
bcsbridge
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
cs
cli
bcsbridge
Commits
a104a684
Commit
a104a684
authored
2 years ago
by
Claudio Scafuri
Browse files
Options
Downloads
Plain Diff
Merge branch 'port_log_from_config' into 'master'
Port log from config See merge request
!5
parents
8f9b4885
bbf7ec68
No related branches found
No related tags found
1 merge request
!5
Port log from config
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
TCPSserver/TCPS2tango.py
+66
-13
66 additions, 13 deletions
TCPSserver/TCPS2tango.py
TCPSserver/TCPStwserver.py
+87
-1
87 additions, 1 deletion
TCPSserver/TCPStwserver.py
TCPSserver/TODO
+1
-2
1 addition, 2 deletions
TCPSserver/TODO
with
154 additions
and
16 deletions
TCPSserver/TCPS2tango.py
+
66
−
13
View file @
a104a684
...
...
@@ -5,6 +5,8 @@
# import string
import
tango
import
os.path
as
op
# module wide constants
okmsg
=
"
Command execution OK
"
errmsg_header
=
"
*** ERROR
"
...
...
@@ -150,9 +152,12 @@ class ProxyContainer(object):
"""
@param string fname :
@return :
@return :
[result , port, log_f]
@author
"""
port_n
=
"
20000
"
log_f
=
"
/dev/null
"
self
.
logger
.
debug
(
"
ProxyContainer.parse_conf_file() parsing:
"
+
fname
)
try
:
conf_file
=
open
(
fname
,
"
r
"
)
...
...
@@ -176,7 +181,7 @@ class ProxyContainer(object):
):
# discard comment and empyt lines
continue
datum
=
line
.
split
(
"
"
)
if
datum
[
0
]
!
=
"
GET
"
and
datum
[
0
]
!
=
"
SET
"
:
if
not
(
datum
[
0
]
=
=
"
GET
"
or
datum
[
0
]
=
=
"
SET
"
or
datum
[
0
]
==
"
PORT_NUMBER
"
or
datum
[
0
]
==
"
LOG_FILE
"
)
:
result
=
False
self
.
logger
.
error
(
"
ProxyContainer: parse_conf_file error on line
"
...
...
@@ -184,7 +189,37 @@ class ProxyContainer(object):
+
"
"
+
datum
[
0
]
)
return
result
return
[
result
,
port_n
,
log_f
]
if
datum
[
0
]
==
"
PORT_NUMBER
"
:
port_str
=
datum
[
-
1
]
try
:
portint
=
int
(
port_str
)
except
ValueError
as
e
:
portint
=
-
1
if
str
(
portint
)
!=
port_str
:
result
=
False
self
.
logger
.
error
(
"
ProxyContainer: parse_conf_file error on line
"
+
repr
(
count
)
+
"
: PORT_NUMBER
"
+
datum
[
1
]
)
return
[
result
,
port_n
,
log_f
]
port_n
=
portint
if
datum
[
0
]
==
"
LOG_FILE
"
:
log_name
=
datum
[
-
1
]
if
not
op
.
exists
(
op
.
dirname
(
log_name
)):
result
=
False
self
.
logger
.
error
(
"
ProxyContainer: parse_conf_file error on line
"
+
repr
(
count
)
+
"
: LOG_FILE
"
+
datum
[
1
]
)
return
[
result
,
port_n
,
log_f
]
log_f
=
log_name
if
datum
[
0
]
==
"
GET
"
:
if
datum
[
1
]
not
in
self
.
get_dict
:
tangostring
=
datum
[
-
1
]
...
...
@@ -201,7 +236,7 @@ class ProxyContainer(object):
+
"
: SET duplicate
"
+
datum
[
1
]
)
return
result
return
[
result
,
port_n
,
log_f
]
if
datum
[
0
]
==
"
SET
"
:
# create special keys for searching - must include also list of parameter names
...
...
@@ -229,9 +264,9 @@ class ProxyContainer(object):
+
"
: SET duplicate
"
+
repr
(
datum
)
)
return
result
return
[
result
,
port_n
,
log_f
]
return
result
return
[
result
,
port_n
,
log_f
]
def
dispatch_call
(
self
,
data
):
"""
...
...
@@ -381,25 +416,41 @@ class ProxyAttribute(Proxy):
# resp='R'+','+'?'+','+rstat+','+0+term
return
"
R,?,BEN------,0
"
+
term
try
:
#
self.logger.debug( 'ProxyAttribute.get(): reading : '+self.__devname)
self
.
logger
.
debug
(
'
ProxyAttribute.get(): reading :
'
+
self
.
__devname
+
'
/
'
+
self
.
__attribute
)
attr
=
self
.
__device
.
read_attribute
(
self
.
__attribute
)
# read_attribute_as_string ????
val
=
attr
.
value
# self.logger.debug( 'ProxyAttribute.get(): reading value ok')
if
val
is
None
:
# some devices return INVALID if not correctly woarking - force to NaN and error
error
=
True
val
=
float
(
"
Nan
"
)
except
tango
.
DevFailed
as
myex
:
des0
=
myex
[
0
].
desc
des0
=
myex
.
args
[
0
].
reason
self
.
logger
.
error
(
"
GET:
"
+
self
.
__devname
+
"
/
"
+
self
.
__attribute
+
"
failed with exception
"
+
"
failed with exception
:
"
+
des0
)
self
.
logger
.
debug
(
'
ProxyAttribute.GET(): reading value failed
'
)
# print 'ProxyAttribute: get() '+self.__attribute+' ERROR'
val
=
0
error
=
True
except
Exception
as
e
:
self
.
logger
.
error
(
"
GET:
"
+
self
.
__devname
+
"
/
"
+
self
.
__attribute
+
"
failed with Exception
"
)
self
.
logger
.
debug
(
'
ProxyAttribute.get(): reading value excpetion
'
)
val
=
0
error
=
True
# analyze result and prepare answer
rtype
=
"
?
"
...
...
@@ -483,8 +534,8 @@ class ProxyAttribute(Proxy):
if
self
.
__attrinfo
==
0
:
try
:
self
.
__attrinfo
=
self
.
__device
.
get_attribute_config
(
self
.
__attribute
)
except
tango
.
DevFailed
as
e
:
des
=
e
[
0
].
desc
except
tango
.
DevFailed
as
myex
:
des
=
myex
.
args
[
0
].
reason
errmsg
=
errmsg_header
+
"
in perform command :
"
+
des
self
.
logger
.
error
(
"
ProxyAttribute.set(): failed to create self.__attrinfo for:
"
...
...
@@ -505,13 +556,15 @@ class ProxyAttribute(Proxy):
+
"
/
"
+
self
.
__attribute
)
self
.
logger
.
debug
(
'
writing
'
+
self
.
__devname
+
'
/
'
+
self
.
__attribute
)
self
.
__device
.
write_attribute
(
self
.
__attrinfo
,
val
)
self
.
logger
.
info
(
"
SET: ACCEPT
"
+
self
.
__devname
+
"
/
"
+
self
.
__attribute
+
"
"
+
data
[
0
]
)
return
okmsg
+
term
except
tango
.
DevFailed
as
myex
:
des0
=
myex
[
0
].
desc
self
.
logger
.
debug
(
'
excpetion writing
'
+
self
.
__devname
+
'
/
'
+
self
.
__attribute
)
des0
=
myex
.
args
[
0
].
reason
self
.
logger
.
debug
(
"
SET:
"
+
self
.
__devname
...
...
This diff is collapsed.
Click to expand it.
TCPSserver/TCPStwserver.py
+
87
−
1
View file @
a104a684
...
...
@@ -5,6 +5,7 @@ from twisted.internet.protocol import Factory
from
twisted.internet
import
reactor
# import time
import
os.path
as
op
import
sys
import
TCPS2tango
import
logging
...
...
@@ -66,11 +67,85 @@ def makeTCPSFactory(
factory
.
_timeout
=
timeout
factory
.
handler
=
TCPS2tango
.
ProxyContainer
()
factory
.
handler
.
add_logger
(
logger
)
factory
.
handler
.
parse_conf_file
(
fname
)
[
res
,
port
,
log
]
=
factory
.
handler
.
parse_conf_file
(
fname
)
# print(res)
# print(port)
# print(log)
return
factory
def
pre_parse_conf_file
(
fname
):
"""
@extract port number , name of log file form configuration
@param string fname :
@return : [result , port, log_f]
"""
port_n
=
20000
# default
log_f
=
"
/dev/null
"
result
=
True
try
:
conf_file
=
open
(
fname
,
"
r
"
)
except
Exception
:
print
(
"
pre_parse_conf_file() fatal error opening conf_file:
"
+
fname
)
raise
# impossible to continue....
count
=
0
result
=
True
for
rawline
in
conf_file
.
readlines
():
if
not
rawline
.
strip
():
continue
# discard empty lines
count
=
count
+
1
line
=
"
"
.
join
(
rawline
.
split
()
)
# collapse multiple white spaces into single white space
if
(
line
[
0
]
==
"
#
"
or
line
[
0
]
==
"
*
"
or
not
line
.
strip
()
):
# discard comment and empyt lines
continue
datum
=
line
.
split
(
"
"
)
if
not
(
datum
[
0
]
==
"
GET
"
or
datum
[
0
]
==
"
SET
"
or
datum
[
0
]
==
"
PORT_NUMBER
"
or
datum
[
0
]
==
"
LOG_FILE
"
):
result
=
False
print
(
"
pre_parse_conf_file error on line
"
+
repr
(
count
)
+
"
"
+
datum
[
0
]
)
return
[
result
,
port_n
,
log_f
]
if
datum
[
0
]
==
"
PORT_NUMBER
"
:
port_str
=
datum
[
-
1
]
try
:
portint
=
int
(
port_str
)
except
ValueError
as
e
:
portint
=
-
1
if
str
(
portint
)
!=
port_str
:
result
=
False
print
(
"
pre_parse_conf_file error on line
"
+
repr
(
count
)
+
"
: PORT_NUMBER
"
+
datum
[
1
]
)
return
[
result
,
port_n
,
log_f
]
port_n
=
portint
if
datum
[
0
]
==
"
LOG_FILE
"
:
log_name
=
datum
[
-
1
]
if
not
op
.
exists
(
op
.
dirname
(
log_name
)):
result
=
False
print
(
"
pre_parse_conf_file error on line
"
+
repr
(
count
)
+
"
: LOG_FILE
"
+
datum
[
1
]
)
return
[
result
,
port_n
,
log_f
]
log_f
=
log_name
return
[
result
,
port_n
,
log_f
]
# -----------------------------------------------------------------
# remeber to switch use argparse for configuring cmd line options with python > 2.7
...
...
@@ -98,13 +173,17 @@ def main(argv=None):
if
options
.
port
:
tcpport
=
int
(
options
.
port
)
force_port
=
True
else
:
tcpport
=
20000
force_port
=
False
if
options
.
logfile
:
lfile
=
options
.
logfile
force_logfile
=
True
else
:
lfile
=
"
/dev/null
"
force_logfile
=
False
if
options
.
loglevel
:
lev
=
options
.
loglevel
...
...
@@ -135,6 +214,13 @@ def main(argv=None):
else
:
verbose
=
False
# pre-parse the configuration file to extract port number and name of log gfile
[
res
,
port_n
,
log_f
]
=
pre_parse_conf_file
(
fname
)
if
not
force_logfile
:
lfile
=
log_f
# if log file name is not forced on cmd line get it from config file (or default)
if
not
force_port
:
tcpport
=
port_n
# if port number is not forced on cmd line get it from config file (or default)
# Set up a specific logger with our desired output level
# use INFO for for tracking all SET operations
# use ERROR and CRITICAL for errors (non-fatal and fatal)
...
...
This diff is collapsed.
Click to expand it.
TCPSserver/TODO
+
1
−
2
View file @
a104a684
- analizzare "exception processing data"
- Transient CORBA excpetion:come si alza il timeout?
\ No newline at end of file
- Transient CORBA excpetion:come si alza il timeout?
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment