Version 0.7 released.
CLORB now has [[support for multi-threading|mt-notes.html]]. As yet it is fairly simple support. The I/O is done by multiple threads, client calls can be made from threads. All server request processing is done by a single thread. I'm peparing a new release soon.\n
Initialize and get a reference to the ORB object.\n{{{\n (defvar *the-orb* (CORBA:ORB_init))\n}}}\nLoad the IDL for the interface.\n{{{\n (corba:idl "clorb:idl;Random.idl")\n}}}\nObtain an object reference and call methods on the reference.\n{{{\n (let ((obj\n (op:string_to_object *the-orb* "http://www.random.org/Random.ior")))\n (op:lrand48 obj))\n}}}\n[Unfortunately the CORBA server for random number where not answering\nthe last time I tried it.]\n\n\n
[[Introduction]]\n[[10 June 2006]]\n[[9 June 2006]]\n\n
[[Download latest release from the source forge page|http://sourceforge.net/project/showfiles.php?group_id=6352]]. \n\nOr get it from CVS:\n{{{\ncvs -d:pserver:anonymous@clorb.cvs.sourceforge.net:/cvsroot/clorb login\ncvs -z3 -d:pserver:anonymous@clorb.cvs.sourceforge.net:/cvsroot/clorb co clorb\n}}}\nWhen prompted for a password for anonymous, simply press the Enter key.\n
Some of the features of CLORB are:\n\n * ~IDL-Compiler generating Lisp-code\n * POA (Portable Object Adaptor)\n * DII (Dynamic Invocation Interface)\n * DSI (Dynamic Skeleton Interface)\n * ~ValueType support\n * Interoperable naming service\n * Name Service implementation\n * Interface Repository implementation\n
{{{\n(op:list_initial_services orb) => list-of-names\n(op:resolve_initial_references orb "NameService") => object-reference\n(op:string_to_object orb "IOR") => object-reference\n}}}\nThe IOR could be on the IOR:xxx form or it could be a file or http URL, in that case the references resource is should contain an IOR. The IOR could also be a corbaloc or corbaname IOR.\n
After CLORB has been loaded and before the ORB can be used it has to be initialized. This is done with the CORBA:ORB_init function.\n{{{\n(CORBA:ORB_init arguments orb-id) => orb-object, arguments'\n}}}\nWhere arguments is a list of strings (as would usually be passed to a command line program in Unix) and orb-id is a string identifying the particular orb (only one is supported pass "" for this). The function can be called more than once, and will return the same object. The argument list will be processed by every call.\n\nIn the arguments list, items starting with "-ORB" will be recognized and removed (the item after will also be removed if it provides argument to the -ORB argument). The remaining arguments will be returned as a second return value. The recognized items are:\n\n| -ORBInitRef Name=IOR |This provides value for the initial references. A call to op:resolve_initial_references with Name will return the object references by the IOR. |\n| -ORBDefaultInitRef IOR | FIXME! |\n| -ORBPort port# |Specify the port that the Object adaptor will listen on. |\n| -ORBHostname name |Specify the hostname that will be included in object references, could also be an IP-number. |\n\nThe {{{clorb:*log-level*}}} controls the amount of logging done by CLORB. It should be an integer, lower value gives more logging. Logging is written to the stream *log-output*.\n
CLORB is a Common Lisp library (with the goal of) implementing CORBA 2.6 following the [[OMG|http://omg.org/]] [[defined mapping for LISP|LispMapping]]. CORBA is the [[Object Management Group's|http://omg.org/]] [[Object Request Broker|WhatIsCORBA]].\n\nCLORB is currently being developed on MCL 5.0 and ~OpenMCL 1.1. It is mostly written in portable Common Lisp, non-portable code collected in a clorb-sysdep file. Non-portable code is support for TCP/IP, some binary I/O, running external programs (to run cpp). [[The code has been ported to some other Lisps including SBCL and CLISP|LispSupport]].\n\n[[Summary page at SourceForge|http://sourceforge.net/projects/clorb/]] (downloads, mailing list, etc.)
[[Official document|http://www.omg.org/technology/documents/formal/lisp_language_mapping.htm]]\n\n
|!Lisp|!Status|\n|MCL 5 |only tested with Max OS X native|\n|~OpenMCL 1.1 |working (Mac OS X)|\n|SBCL |working on Mac OS X and Debian GNU/Linux (i386)|\n|CLISP |works again (2.32)|\n|CMUCL |working with 19a on Mac OS X and Debian GNU/Linux (i386)|\n
{{{\n(CORBA:IDL pathname &key eval print output skeleton) => repository\n}}}\nLoad and parse the IDL file referenced by PATHNAME. The interface repository containing the parsed IDL file is returned. The necessary code to use this interface is generated and loaded (unless the eval key is nil).\n\nProducing a Lisp file with all code for an IDL file:\n{{{\n (CORBA:IDL "foo.idl" :output "foo.lisp")\n}}}\nThe abow will also load the code. To only produce the file specify :eval nil. (Some packages might still be created as a side effect.)\n
[[Introduction]]\n[[Features]]\n[[Download]]\n
<div class='header' macro='gradient vert #18f #04b'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<A href="http://sourceforge.net"> <IMG\nsrc="http://sourceforge.net/sflogo.php?group_id=6352&amp;type=4"\nwidth="125" height="37" border="0" alt="SourceForge.net Logo" align="right"\n/></A>\n\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
Initialize the ORB and load the IDL for the interface, as for Client Operation.\n\nGet a reference to the Root POA (Object Adapter).\n{{{\n (defvar *poa* (op:resolve_initial_references *orb* "RootPOA"))\n}}}\nPossibly create another POA with policies tailored for the server needs.\n\nActivate the POA:\n{{{\n (op:activate (op:the_poamanager *poa*))\n}}}\nCreate and register a servant:\n{{{\n (defvar *servant* (make-instance 'my-class))\n (defvar *object* (op:activate_object *poa* *servant*))\n}}}\nGet stringified IOR for object\n{{{\n (op:object_to_string *orb* *object*)\n}}}\nThe string can be transfered to the client in whatever way. Or register with name service\n{{{\n (clorb:rebind *object* "my-name")\n}}}\n
a Common Lisp implementation of CORBA
CLORB
/***\nPlace your custom CSS here\n***/\n/*{{{*/\n.subtitle {\n font-size: 0.9em;\n}\n\n/*}}}*/\n
CLORB comes with a test suite. The test coverage is currently spotty.\n\nThe support system for the test cases has now been put in its own\npackage. I have also used it for some other projects. The code is\nhowever included in the luna subdirectory. Some CLORB specific\nsupport is in the support-test.lisp. \n\nThe files test-*.lisp contains test suits for parts of CLORB and the\nfile all-test.lisp runs all the test suites and aggreates the result.\n
<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<!--div class='tagged' macro='tags'></div-->\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
''CORBA'' reads as //Common Object Request Broker Architecture// and is defined by the Object Management Group (OMG). \n\n[[OMG's FAQ for CORBA|http://www.omg.org/gettingstarted/corbafaq.htm]]\n\n\n