Hello,

what exactly does your anyobject Any variable contain? The strange thing
is that you are only able to duplicate the issue when you use Qt...

Cheers,
Karel

Andreas Benzler wrote:
> Hallo,
> I´m using a client-server model based on Mico and I defined an idl
> interface like this:
> 
> interface ifRec
> {
>       long Register( in string name, in string ns );
>       void WriteData( in long id, in any data );
>       void SetEnv( in string Key, in string Value );
>       void Rec();
>       void Break();
>       void Resume();
>       void Replay( in double speed );
>       void Stop();
>       long Load( in string filename );
> };
> 
> The WriteData function uses the parameter "data" of type Any, which
> represents a structure (struct) containing other structures inside, and I
> get a run-time error whenever a client calls this function. The client has
> been compiled with Qt and uses the QApplication function. I discovered
> that the run-time error it´s based on the problem that the object of type
> Any is codified in the wrong way from Mico during the serialization
> process only when the QApplication function is used in the client code and
> also when the tree´s depth of the structures codified in the Any object is
> too big, otherwise no run-time error comes up and the octet sequence that
> represents the object, made by the Mico serialization process, has the
> correct length. I also discovered that the difference between the octet
> sequence with and without using QApplication is fixed and always 268 bytes
> (more bytes without QApplication) and it does not depend on the complexity
> of the structure that the Any object represents. I discovered this last
> detail simulating a serialization process of the Any object using the
> available Mico internal codec. I tried to compile the system with the two
> Mico versions 2.3.11 and 2.3.13, both versions compiled specifying also the
> --with-qt=<qt-path> directive for the configure script, but I have same
> problems.
> 
> Here is also the Mico codec I used to simulate the serialization process:
> 
> void operator>> ( const Any& anyobject, OctetSeq& dataseq)
> {
>       // Codec
>       ORB_var orb;
>       Object_var obj;
>       IOP::CodecFactory_var cf;
>       IOP::Encoding enc2;
>       IOP::Codec_ptr codec_ptr;
> 
>       // Generate codec based on CodecFactory
>       int argc = 1;
>       char* argv[1];
>       argv[0] = "anyserial";
>       orb = ORB_init( argc, argv, "mico-local-orb" );
>       obj = orb->resolve_initial_references("CodecFactory");
>       cf = IOP::CodecFactory::_narrow(obj);
>       enc2.format = IOP::ENCODING_CDR_ENCAPS;
>       enc2.major_version = 1;
>       enc2.minor_version = 2;
>       codec_ptr = cf->create_codec(enc2);
> 
>       // Encode anyobject and generate a new octet sequence
>       OctetSeq_var newdataseq_ptr = codec_ptr->encode(anyobject);
>       int length = newdataseq_ptr->length();
> 
>       // Copy generated octet sequence into dataseq
>       dataseq.length(length);
> 
>       for (int i=0; i<length; i++)
>               dataseq[i] = (*newdataseq_ptr)[i];
> }
> 
> Any and OctetSeq types are exactly CORBA::Any and CORBA::OctetSeq types
> defined in MICO.
> 
> Could please anyone help to understand why Mico has this strange behavior
> and eventually to find a solution?
> 
> Many Thanks in advance,
> Pasquale Zarcone
> 
> Because the mail did not come trough with my colleges account I post
> this message on his behalf
> 
> Andreas
> _______________________________________________
> Mico-devel mailing list
> Mico-devel@mico.org
> http://www.mico.org/mailman/listinfo/mico-devel
> 


-- 
Karel Gardas                  kgar...@objectsecurity.com
ObjectSecurity Ltd.           http://www.objectsecurity.com
_______________________________________________
Mico-devel mailing list
Mico-devel@mico.org
http://www.mico.org/mailman/listinfo/mico-devel

Reply via email to