In the "V4 CA Client User Interface" wiki there is a section "Food for
thought".
It mentions ICE and TIPC.
I looked briefly at TIPC and harder at ICE.
I took the following from a powerpoint presentation about TIPC. It shows
that TIPC is an alternative to TCP
TCP/SCTP
Too generic for efficient local communication, only connection oriented
UDP
Unreliable, no congestion control
Unix Sockets
Only single node, only connection oriented
What We Wanted
One communication service with the speed of UDP/UNIX sockets, the
reliability of TCP, and the versatility of them all combined
Extend address location transparency beyond the local node
Have failure detection times at millisecond level, at least
A way to know when an address becomes available/unavailable, before we
start using it
ICE ( Internet Communication Engine) is a successor to CORBA. The
founder and several developers were formerly CORBA developers.
ICE appears to have a very efficient network protocal. An important
feature is that it supports a Batch Request Message, i.e. it allows
multiple requests within a single message.
Like CORBA ICE defines a language (Slice - Specification Language for
ICE) and compilers that generate source files for several languages:
C++, Java, C#, Visual Basic, and Python.
The Basic Slice types are: bool, byte, short, int, long, float, double,
string
In addition it provides enum, struct, sequence, and dictionary.
string holds UTF-8 characters.
Compare this with:
enum naType {
naTypeBoolean, // same as bool
naTypeOctet, // same as byte
naTypeInt16, // same as short
naTypeUInt16, // NOT Slice type
naTypeInt32, // same as int
naTypeUInt32, // NOT nSlice type
naTypeInt64, // same as long
naTypeUInt64, // NOT slice type
naTypeFloat32, // sane as float
naTypeFloat64, // same as double
naTypeString, // same as string
naTypeArray, // like sequence
naTypeStruct, // same as struct
naTypeMDArray, // Could be implemented via other Slice types
// Following are convenience types
naTypeTimeStamp, // Implemented as Slice struct
naTypeEnum, // Like enum
naTypeMap // same as dictionary
};
NOTE: ICE does not provide unsigned because it can't be implemented on
all platforms.
See
http://www.zeroc.com/index.html
For more info about ICE.
Question: Why don't we just use ICE for communications for EPICS V4?
We could provide Slice definitions for everything we want predefined and
allow Dynamic Invocation for everything else. The CA client and server
libaries could be implemented via ICE.
If we adapt ICE a HUGE amount of work is done already and for many
platforms.
One problem is that ICE is not currently implemented on vxWorks but
since source code is available it may be easy to port the run time to
vxWorks.
Marty Kraimer
- Replies:
- Re: ICE and TIPC Kay-Uwe Kasemir
- Re: ICE and TIPC Matthias Clausen
- Re: ICE and TIPC Ralph Lange
- Navigate by Date:
- Prev:
Re: Network Accessable Types Ralph Lange
- Next:
Re: ICE and TIPC Kay-Uwe Kasemir
- Index:
2002
2003
2004
<2005>
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
RE: Type descriptor vs. enum Liyu, Andrei
- Next:
Re: ICE and TIPC Kay-Uwe Kasemir
- Index:
2002
2003
2004
<2005>
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
|