Dear Mario!<br><br>I compiled your code and it works fine for me under Beta 3.1.1. <br><br>By the way, you need to adapt the check of the returned map, the map will always have keys that you've originally passed to the query method. It will have null pointers or objects as values. The objects need to be casted, before you have access to the methods - this is Ice-specific:<br>
<br>for(im=m.begin(); im != m.end(); ++im) {<br>      cout << im->first;<br>      omero::model::ExperimenterIPtr user = omero::model::ExperimenterIPtr::dynamicCast(im->second);<br>      if (user) {<br>    cout << " id: " << user->getId();<br>
      } else {<br>    cout << " not found";<br>      }<br>      cout << endl;<br>    }<br><br>Best wishes! Bernhard<br><br><br><div class="gmail_quote">On Tue, Dec 16, 2008 at 4:13 PM, Mario Valle <span dir="ltr"><mvalle@cscs.ch></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">I'm expanding the simple client to try to learn OmeroCpp.<br>
The example below works (and obviously returns no result) if you comment the line marked //1<br>
Otherwise it crashes in the getUserDetails() call with:<br>
terminate called after throwing an instance of 'Ice::NegativeSizeException'<br>
   what():  /Users/mvalle/Ice-3.3.0/cpp/include/Ice/BasicStream.h:360:<br>
Ice::NegativeSizeException:<br>
protocol error: negative size for sequence, dictionary, etc.<br>
<br>
The code is translated (hopefully correctly) from the shoola OMEROGateway.java file around<br>
line 1015.<br>
<br>
Anyway, is anyone around that have any OmeroCpp client code to share?<br>
<br>
Thanks!<br>
        mario<br>
<br>
#include <omero/client.h><br>
#include <iostream><br>
<br>
using namespace std;<br>
<br>
int main(int argc, char* argv[])<br>
{<br>
     //<br>
     // Connect to OMERO<br>
     //<br>
     cout << "--- Connect ---" << endl;<br>
     omero::client omero(argc, argv);<br>
     omero::api::ServiceFactoryPrx sf = omero.createSession();<br>
     sf->closeOnDestroy();<br>
<br>
     //<br>
     // Try the Pojos services<br>
     //<br>
     cout << "--- Pojos ---" << endl;<br>
<br>
     omero::api::IPojosPrx pojo = omero.getSession()->getPojosService();<br>
<br>
     omero::api::StringSet list;<br>
     list.push_back("mvalle");  //1<br>
<br>
     omero::sys::ParamMap options;<br>
     omero::api::UserMap m;<br>
<br>
     m = pojo->getUserDetails(list, options);<br>
<br>
     //<br>
     // Look at the results<br>
     //<br>
     cout << "--- getUserDetails ---" << endl;<br>
     cout << m.size() << endl;<br>
<br>
     omero::api::UserMap::const_iterator im;<br>
     for(im=m.begin(); im != m.end(); ++im) cout << im->first << endl;<br>
<br>
     //<br>
     // Check the IAdmin interface<br>
     //<br>
     cout << "--- Admin ---" << endl;<br>
<br>
     // IAdmin is responsible for all user/group creation, password changing, etc.<br>
     omero::api::IAdminPrx  admin = omero.getSession()->getAdminService();<br>
<br>
     // Who you are logged in as.<br>
     cout << admin->getEventContext()->userName << endl;<br>
<br>
     return 0;<br>
}<br>
~<br>
<br>
<br>
<br>
--<br>
Ing. Mario Valle<br>
Data Analysis Group                              | <a href="http://www.cscs.ch/%7Emvalle" target="_blank">http://www.cscs.ch/~mvalle</a><br>
Swiss National Supercomputing Centre (CSCS)      | Tel:  +41 (91) 610.82.60<br>
v. Cantonale Galleria 2, 6928 Manno, Switzerland | Fax:  +41 (91) 610.82.82<br>
_______________________________________________<br>
ome-users mailing list<br>
<a href="mailto:ome-users@lists.openmicroscopy.org.uk">ome-users@lists.openmicroscopy.org.uk</a><br>
<a href="http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users" target="_blank">http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-users</a><br>
</blockquote></div><br>