COPE 0.04_0
Sponsored Links
COPE 0.04_0 Ranking & Summary
File size:
0.038 MB
Platform:
Any Platform
License:
Perl Artistic License
Price:
Downloads:
859
Date added:
2007-06-20
Publisher:
Bart Schuller
COPE 0.04_0 description
COPE is a CORBA implemented in Perl.
This documents describes the steps you take when writing a CORBA application in Perl using COPE.
First the basics: the laguage binding used.
Scalar types
char
The char type is represented as a 1-character perl string, like a.
octet
octet is represented as a perl number, like 200. We could equally well make octet be exactly the same as char.
Integer types
long and short are no problem. unsigned long might internally be stored as a double, but that should be invisible.
Floating-Point types
Perl has those as well.
Structures
Structures are represented as blessed hashreferences. They inherit from CORBA::_Struct which implements a generic constructor called new, taking key,value pairs.
An example:
# struct MyStruct { // IDL
# boolean simple;
# sequence < octet > list;
# }
package MyStruct;
@ISA=qw(CORBA::_Struct);
my $structvar = new MyStruct( simple => 1, list => [0,1,2] );
Every structure also has a TypeCode defined called _tc (in the appropriate package). In the example case, the typecode would be called $MyStruct::_tc
Sequences
A sequence is represented as an unblessed array reference, with one exception:
octet sequences are represented as a perl string, because they tend to be used for blob-like data.
Arrays
Are also represented as unblessed array references, also with one exception: char arrays, which are again perl strings.
What do people think of these exceptions to the rules?
Enumerations
Are subs with an empty prototype, declared in the appropriate package.
Strings
Are plain scalars.
Unions
I havent looked at them yet (havent needed them either)
Objects
Are Perl objects (blessed references)
TypeCodes
Are Perl objects
Interfaces
Are Perl classes. This means a package and an @ISA array.
Operations
Are Perl methods
Any
Will be a Perl object.
Exceptions
Are Perl classes inheriting from Experimental::Exception
Attributes
I now favour the choice the Java people have made: a method taking zero or one extra arguments, for getting or setting the attribute. This looks the most readable to me.
Parameter passing
in
All types are already scalar in nature, so can be passed as-is. The number of arguments to a method are always exactly as in the IDL.
inout
All non-reference types (numbers and strings) need to be fitted with a and cant be literals.
out
Same as for inout. note: You need to supply an empty anonymous array or hash for sequences, structs or arrays.
Objects need a scalar reference.
Working with TypeCodes
The TypeCodes for basic types are predefined and have names like $CORBA::_tc_boolean All non-basic types have their TypeCode stored in $package::_tc Custom TypeCodes can be built using functions like _create_struct_tc()
Server side
When implementing a server, we need three logically seperate classes:
The implementation of your object
This could be an existing class which you decide to give a shiny new CORBA
wrapper
A generated Skeleton class
This is what gets called by the ORB. It is responsible for decoding method arguments and calling the method
A mapping class
The Mapping class provides the mapping between known method names the skeleton class uses and the possibly unknown names in your implementation class
This documents describes the steps you take when writing a CORBA application in Perl using COPE.
First the basics: the laguage binding used.
Scalar types
char
The char type is represented as a 1-character perl string, like a.
octet
octet is represented as a perl number, like 200. We could equally well make octet be exactly the same as char.
Integer types
long and short are no problem. unsigned long might internally be stored as a double, but that should be invisible.
Floating-Point types
Perl has those as well.
Structures
Structures are represented as blessed hashreferences. They inherit from CORBA::_Struct which implements a generic constructor called new, taking key,value pairs.
An example:
# struct MyStruct { // IDL
# boolean simple;
# sequence < octet > list;
# }
package MyStruct;
@ISA=qw(CORBA::_Struct);
my $structvar = new MyStruct( simple => 1, list => [0,1,2] );
Every structure also has a TypeCode defined called _tc (in the appropriate package). In the example case, the typecode would be called $MyStruct::_tc
Sequences
A sequence is represented as an unblessed array reference, with one exception:
octet sequences are represented as a perl string, because they tend to be used for blob-like data.
Arrays
Are also represented as unblessed array references, also with one exception: char arrays, which are again perl strings.
What do people think of these exceptions to the rules?
Enumerations
Are subs with an empty prototype, declared in the appropriate package.
Strings
Are plain scalars.
Unions
I havent looked at them yet (havent needed them either)
Objects
Are Perl objects (blessed references)
TypeCodes
Are Perl objects
Interfaces
Are Perl classes. This means a package and an @ISA array.
Operations
Are Perl methods
Any
Will be a Perl object.
Exceptions
Are Perl classes inheriting from Experimental::Exception
Attributes
I now favour the choice the Java people have made: a method taking zero or one extra arguments, for getting or setting the attribute. This looks the most readable to me.
Parameter passing
in
All types are already scalar in nature, so can be passed as-is. The number of arguments to a method are always exactly as in the IDL.
inout
All non-reference types (numbers and strings) need to be fitted with a and cant be literals.
out
Same as for inout. note: You need to supply an empty anonymous array or hash for sequences, structs or arrays.
Objects need a scalar reference.
Working with TypeCodes
The TypeCodes for basic types are predefined and have names like $CORBA::_tc_boolean All non-basic types have their TypeCode stored in $package::_tc Custom TypeCodes can be built using functions like _create_struct_tc()
Server side
When implementing a server, we need three logically seperate classes:
The implementation of your object
This could be an existing class which you decide to give a shiny new CORBA
wrapper
A generated Skeleton class
This is what gets called by the ORB. It is responsible for decoding method arguments and calling the method
A mapping class
The Mapping class provides the mapping between known method names the skeleton class uses and the possibly unknown names in your implementation class
COPE 0.04_0 Screenshot
COPE 0.04_0 Keywords
COPE
CORBA
COPE 0.04
MyStruct
TypeCodes
Perl
types
represented
class
0.04
method
octet
COPE 0.04_0
COPE 0.04_0
Libraries
Programming
Bookmark COPE 0.04_0
COPE 0.04_0 Copyright
WareSeeker periodically updates pricing and software information of COPE 0.04_0 full version from the publisher, so some information may be slightly out-of-date. You should confirm all information before relying on it. Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future development of COPE 0.04_0 Edition. Download links are directly from our publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed
Featured Software
Want to place your software product here?
Please contact us for consideration.
Contact WareSeeker.com
Related Information
Related Software
Preppi is a simple graphical EPP client for Unix and Linux systems. Free Download
ObjectivePerl is an Objective-C style syntax and runtime for perl. Free Download
PLJava is Perl module that will embed Perl into Java. Free Download
Games::Console Perl module provide a 2D quake style in-game console. Free Download
CORBA-Python is a package supplies the following tools : idl2py : IDL compiler to Python. Free Download
mediadbs is a digital media database system. Free Download
XSBrowser is a project which creates a human-readable documentation of XML document types. Free Download
WWW::Cache::Google is Perl module URI class for Google cache. Free Download
Latest Software
Popular Software
Favourite Software