[ome-devel] Getting started with C++ API for OMERO.server clients

josh.moore at gmx.de josh.moore at gmx.de
Tue Sep 1 15:20:45 BST 2009


Nick Perry writes:
 > "So, the 3rd party client would build the library from svn like you
 > are doing, and then it would be able to talk directly to OMERO."
 > 
 > K, library is built.

Awesome.

 > I imagine it creates a file I need to include at the top of my
 > scripts so I can use the API. 

Hmmm....sorry, now I'm lost. What scripts are these? The Makefile
script?

 > Where is the location of this API library file?  My understanding
 > is that after I compile it this file is found on the server.

After you compile, there are artifacts under dist/lib and
dist/include, but that doesn't have anything to do with your
server. It can be completely ignorant of the fact (and in fact, it
*is* completely ignorant of the fact) that you are calling it from
C++.

So, if you are still in the "omero" directory, and you've successfully
built the library via "build-cpp" and downloaded the files from
OmeroCpp, then you should be ready to call:

  make OMERO_DIST=dist yourcode

i.e. http://trac.openmicroscopy.org.uk/omero/wiki/OmeroCpp#Compilingandrunningyourcode

~Josh.

 > On Tue, Sep 1, 2009 at 4:09 PM, <josh.moore at gmx.de> wrote:
 > 
 > > Nick Perry writes:

 > > Yeah but only certain server distributions I can DL have the C++
 > > library for > the client. If that's not supplied by the OMERO
 > > server, where is a 3rd party > app supposed to get the library?
 > >
 > > By building from the branch which matches the server version.
 > >
 > >  > In other words, let's say I DL the version of the OMERO server
 > >  > *without* the API libraries. And let's say I try to connect to
 > >  > this server with a 3rd party client that uses the C++
 > >  > API. Where will it get the library for the API unless the
 > >  > server provides it?
 > >
 > > The server doesn't really provide a C++ API, rather it just
 > > provides a single API, which can be connected to by C++, Python,
 > > and Java.. So, the 3rd party client would build the library from
 > > svn like you are doing, and then it would be able to talk
 > > directly to OMERO.
 > >
 > > All of this is based on Ice (http://zeroc.com) which is a
 > > cross-language library. It handles the low-level details, so that
 > > the OMERO Java server (with no C++ library) can seamlessly be
 > > talked to by a 3rd party client which builds it's own C++
 > > library.
 > >
 > > Sorry for the (possibly continuing) confusion,
 > > ~Josh
 > >
 > >  > On Tue, Sep 1, 2009 at 3:48 PM, <josh.moore at gmx.de> wrote:
 > >  >
 > >  > > Nick Perry writes:
 > >  > >  > Hey Josh,
 > >  > >
 > >  > > Hey Nick,
 > >  > >
 > >  > >  > Does this mean that *any* OMERO server that intends to have 3rd
 > >  > >  > party apps connect using the API needs to use this special OMERO
 > >  > >  > distribution that has the API?
 > >  > >
 > >  > > No. The intention is that any server with the version x.y will be
 > >  > > accessible to any client API implementation (OmeroPy, OmeroCpp,
 > >  > > OmeroJava, OmeroMatlab, ...) built from the same x.y version. We've
 > >  > > made some mistakes in this regard this year, so it's safer to say:
 > >  > >
 > >  > >    server version x.y.z is accessible from client version x.y.z
 > >  > >    regardless where you got either: svn-checkout-build, binary
 > >  > >    distribution, etc.
 > >  > >
 > >  > > Another way of saying this is that the server and the clients (client
 > >  > > APIs) are to some extent independent, so that even if we don't supply
 > >  > > the C++ libraries, there's nothing from stopping you from building and
 > >  > > using them with your server, as long as the version matches.
 > >  > >
 > >  > > Cheers,
 > >  > > ~Josh
 > >  > >
 > >  > >  > Nick
 > >  > >  >
 > >  > >  > On Tue, Sep 1, 2009 at 12:24 PM, <josh.moore at gmx.de> wrote:
 > >  > >  >
 > >  > >  > > Nick Perry writes:
 > >  > >  > >  > the previous* command (not following). Sorry.
 > >  > >  > >  >
 > >  > >  > >  > On Tue, Sep 1, 2009 at 12:11 PM, Nick Perry <
 > > nperry at stanford.edu>
 > >  > >  > > wrote:
 > >  > >  > >  >
 > >  > >  > >  > > Hey Josh,
 > >  > >  > >  > >
 > >  > >  > >  > > Sorry to bug you again.
 > >  > >  > >  > >
 > >  > >  > >  > > I'm trying to put together in my head everything I've done
 > > so
 > >  > > far.
 > >  > >  > >  > >
 > >  > >  > >  > > With the command:
 > >  > >  > >  > > svn co http://cvs.openmicroscopy.org.uk/svn/omero/trunkomero
 > >  > >  > >  > >
 > >  > >  > >  > > I'm checking out a new omero distribution, right? So if I
 > > had the
 > >  > >  > >  > > omero
 > >  > >  > >
 > >  > >  > > Correct.
 > >  > >  > >
 > >  > >  > >  > > server up and running already on my computer (the standard
 > >  > > download),
 > >  > >  > > I've
 > >  > >  > >  > > messed things up, right?
 > >  > >  > >
 > >  > >  > > Not really. You'll need to shut it off (bin/omero admin stop) in
 > > order
 > >  > >  > > to start the new server. If you've already deleted the directory,
 > > you
 > >  > >  > > can use:
 > >  > >  > >
 > >  > >  > >  killall icegridnode
 > >  > >  > >
 > >  > >  > > to get rid of the runing server.
 > >  > >  > >
 > >  > >  > >  > > I was just looking in my previous omero distribution folder
 > > and
 > >  > >  > >  > > this new checked out one, and they share files but the
 > > latter has
 > >  > >  > >  > > the build.py. So if I'm guessing correctly, I need to run
 > > the
 > >  > >  > >  > > omero server out of this new, special distribution, right?
 > >  > >  > >
 > >  > >  > > Right. When you run ./build.py from a checkout it produces the
 > > "dist"
 > >  > >  > > directory. This is the same as the distribution which is
 > > available for
 > >  > >  > > download.
 > >  > >  > >
 > >  > >  > >  > > So the omero server with API is DIFFERENT than the normal
 > > omero
 > >  > >  > >  > > server, and in order to write C++ api for connecting 3rd
 > > party
 > >  > >  > >  > > clients to omero i need to be running the omero server using
 > > the
 > >  > >  > >  > > distribution I check out with the following command...?
 > >  > >  > >
 > >  > >  > > Not at all. As long as the versions match, you can use a
 > > distribution
 > >  > >  > > with a checkout. Your distribution is most likely 4.0.x, so
 > > you'll
 > >  > >  > > need to be checking out from:
 > >  > >  > >
 > >  > >  > >  http://cvs.openmicroscopy.org.uk/svn/omero/branches/Beta4.0/
 > >  > >  > >
 > >  > >  > > The reason that the svn checkout is required is that we don't
 > >  > >  > > currently provide the C++ library with the distribution.
 > >  > >  > >
 > >  > >  > >  > > Thanks for the help,
 > >  > >  > >  > > Nick
 > >  > >  > >
 > >  > >  > > Gladly,
 > >  > >  > > ~Josh.
 > >  > >  > >
 > >  > >  > >  > >
 > >  > >  > >  > >
 > >  > >  > >  > > On Tue, Sep 1, 2009 at 12:00 PM, Nick Perry <
 > > nperry at stanford.edu
 > >  > > >
 > >  > >  > > wrote:
 > >  > >  > >  > >
 > >  > >  > >  > >> Hey Josh,
 > >  > >  > >  > >>
 > >  > >  > >  > >> Sorry I'm not as familiar with compiling C++ / makefiles as
 > > I
 > >  > > should
 > >  > >  > > be,
 > >  > >  > >  > >> but in the following step:
 > >  > >  > >  > >>
 > >  > >  > >  > >> Finding the library ¶<
 > >  > >  > >
 > >  > >
 > > http://trac.openmicroscopy.org.uk/omero/wiki/OmeroCpp#Findingthelibrary>
 > >  > >  > >  > >>
 > >  > >  > >  > >> What will be produced by that build are two sets of
 > > artifacts:
 > >  > >  > >  > >>
 > >  > >  > >  > >>    - dist/include contains C++ header files as well as the
 > > slice
 > >  > >  > > files
 > >  > >  > >  > >>    from which the Ice-based model is generated. You will
 > > need to
 > >  > > pass
 > >  > >  > > these to
 > >  > >  > >  > >>    your compiler.
 > >  > >  > >  > >>    - dist/lib contains the shared library file, which you
 > > will
 > >  > > need
 > >  > >  > > to
 > >  > >  > >  > >>    pass to your linker. On Linux libomero_client.so on OS X
 > >  > >  > >  > >>    libomero_client.dylib and on Windows omero_client.dll,
 > > in 32
 > >  > > or
 > >  > >  > > 64-bit
 > >  > >  > >  > >>    mode depending on your CXXFLAGS (See OmeroBuild<
 > >  > >  > > http://trac.openmicroscopy.org.uk/omero/wiki/OmeroBuild>)
 > >  > >  > >  > >>
 > >  > >  > >  > >>
 > >  > >  > >  > >> Note: the shared library files can be quite large, even
 > > over
 > >  > > 200MB.
 > >  > >  > >  > >>
 > >  > >  > >  > >>
 > >  > >  > >  > >> For bullet 2, do I need to pass my shared library file
 > >  > > explicitly in
 > >  > >  > > a
 > >  > >  > >  > >> step I should know how to do, or is this accomplished in
 > > the
 > >  > > next
 > >  > >  > > step when
 > >  > >  > >  > >> I use the make file?
 > >  > >  > >  > >>
 > >  > >  > >  > >> Thanks,
 > >  > >  > >  > >>
 > >  > >  > >  > >> Nick
 > >  > >  > >  > >>
 > >  > >  > >  > >> On Tue, Sep 1, 2009 at 11:54 AM, <josh.moore at gmx.de>
 > > wrote:
 > >  > >  > >  > >>
 > >  > >  > >  > >>>
 > >  > >  > >  > >>> *whew*
 > >  > >  > >  > >>>
 > >  > >  > >  > >>> Good to hear. ~J.
 > >  > >  > >  > >>>
 > >  > >  > >  > >>> Nick Perry writes:
 > >  > >  > >  > >>>  > just kidding; i hadn't given the svn command my proxy
 > > info
 > >  > > :)
 > >  > >  > >  > >>>  >
 > >  > >  > >  > >>>  > On Tue, Sep 1, 2009 at 11:11 AM, Nick Perry <
 > >  > > nperry at stanford.edu
 > >  > >  > > >
 > >  > >  > >  > >>> wrote:
 > >  > >  > >  > >>>  >
 > >  > >  > >  > >>>  > > SVN still not working:
 > >  > >  > >  > >>>  > >
 > >  > >  > >  > >>>  > > svn co
 > > http://cvs.openmicroscopy.org.uk/svn/omero/trunkomero
 > >  > >  > >  > >>>  > >
 > >  > >  > >  > >>>  > > svn: PROPFIND request failed on '/svn/omero/trunk'
 > >  > >  > >  > >>>  > > svn: PROPFIND of '/svn/omero/trunk': could not
 > > connect to
 > >  > >  > > server (
 > >  > >  > >  > >>>  > > http://cvs.openmicroscopy.org.uk)
 > >  > >  > >  > >>>  > >
 > >  > >  > >  > >>>  > > On Mon, Aug 31, 2009 at 8:05 PM, <josh.moore at gmx.de>
 > >  > > wrote:
 > >  > >  > >  > >>>  > >
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >> Nick Perry writes:
 > >  > >  > >  > >>>  > >>  > Hi,
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >> Hi Nick,
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >>  > I'm extremely confused about where to start when
 > >  > > trying to
 > >  > >  > > play
 > >  > >  > >  > >>>  > >>  > around with the OMERO server C++ API for OMERO
 > >  > > clients. I
 > >  > >  > > think
 > >  > >  > >  > >>>  > >>  > this is the correct page to start on
 > >  > >  > >  > >>>  > >>  >
 > > http://trac.openmicroscopy.org.uk/omero/wiki/OmeroCpp,
 > >  > > but
 > >  > >  > > I'm
 > >  > >  > >  > >>>  > >>  > having a hard time understanding what's going on.
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >> That is the correct page, but as always, the docs
 > > can use
 > >  > >  > >  > >>>  > >> improvements. I've updated them; can you give take a
 > >  > > look, and
 > >  > >  > > tell
 > >  > >  > >  > >>> me
 > >  > >  > >  > >>>  > >> if things are clearer now?
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >>  > First of all, the svn call
 > >  > >  > >  > >>>  > >>  > on that page (svn co
 > >  > >  > >  > >>> http://cvs.openmicroscopy.org.uk/svn/omero/trunkomero)
 > >  > >  > >  > >>>  > >>  > doesn't work; i get the following error:
 > >  > >  > >  > >>>  > >>  >
 > >  > >  > >  > >>>  > >>  > svn: PROPFIND request failed on
 > > '/svn/omero/trunk'
 > >  > >  > >  > >>>  > >>  > svn: PROPFIND of '/svn/omero/trunk': could not
 > > connect
 > >  > > to
 > >  > >  > > server
 > >  > >  > >  > >>> (
 > >  > >  > >  > >>>  > >>  > http://cvs.openmicroscopy.org.uk)
 > >  > >  > >  > >>>  > >>  >
 > >  > >  > >  > >>>  > >>  > Why is this not working?
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >> This morning there was a short outage of all
 > > developer
 > >  > >  > >  > >>>  > >> resources. Could you re-try and let us know if it's
 > >  > > working
 > >  > >  > > now?
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >> ...
 > >  > >  > >  > >>>  > >>  > Thanks,
 > >  > >  > >  > >>>  > >>  > Nick
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >> ~Josh.
 > >  > >  > >  > >>>  > >>
 > >  > >  > >  > >>>  > >
 > >  > >  > >  > >>>  > >
 > >  > >  > >  > >>>
 > >  > >  > >  > >>
 > >  > >  > >  > >>
 > >  > >  > >  > >
 > >  > >  > >
 > >  > >
 > >


More information about the ome-devel mailing list