Re: Help for some technical details



Yu Jie wrote:

>Dear, our customers are planning a project for which
>it is necessary to use CORBA and we now decide to
>choose orbitcpp. But as we are new to it and have to
>understand some technical details, hope could be lent
>a hand. Thanks in advance.
>
>1. In orbitcpp, when we use one POA to activate
>multiple servants, the POA thread policy becomes
>'SINGLE_THREAD_MODEL' or 'ORB_CTRL_MODEL'?
>
Looking through the ORBit source I'm pretty sure it is SINGLE_THREAD_MODEL.

> And, when
>we use multiple POAs and each one is set the same
>thread policy, then what will happen?
>  
>
I guess that depends on what thread policy they are set to. Perhaps you
can be more specific about the situation.

>2. Can 'const', 'enum', 'abstract' be used in
>Valuetype functionality?
>  
>
Valuetype isn't supported at all.

>3. About QoS(Quality of Service), can we use 'oneway'
>operation to set the point which returns the control
>to the Client? 
>  
>
I'm not familiar with QoS. You can use oneway methods to do non-blocking
communication with an object.

>   Can 'SyncScopePolicy' be used?
>  
>
I'm not familar with this. But there is no reference to it in the code.
So I assume not.

>4. About Dynamic Interface, could the method
>_get_interface() be used? 'Coz we see that it is
>better to use this method when creating a request 
>from the client. 
>  
>
Dynamic Interface is only implemented at the C level. Not at the C++
level. Patches are, of course, welcome. Can I ask why you need Dynamic
Interfaces rather than static?

>5. About Server Request Model, how does the server
>application receive the request from client? For
>example, Mico seems to use select().
>
You'll have to confirm this with with the ORBit people. I think it is
essentially a select. But I'm not sure.

> And which model
>does it use: 'thread-per-request' or
>'thread-per-session'?
>  
>
I'm pretty sure it uses thread-per-session. Unless you set things up to
be multi-threaded you only get single-threaded behaviour. That is no new
threads are created.

>   Is it possible to control the number of threads? If
>possible, how do we realize it? For example, OpenORB
>seems to set it in the file default.xml.
>  
>
I don't think that you can control the number of threads. Looking
through the C source reveals the following threading options:

typedef enum {
ORBIT_THREAD_HINT_NONE = 0,
ORBIT_THREAD_HINT_PER_OBJECT,
ORBIT_THREAD_HINT_PER_REQUEST,
ORBIT_THREAD_HINT_PER_POA,
ORBIT_THREAD_HINT_PER_CONNECTION,
ORBIT_THREAD_HINT_ONEWAY_AT_IDLE,
ORBIT_THREAD_HINT_ALL_AT_IDLE,
ORBIT_THREAD_HINT_ON_CONTEXT
} ORBitThreadHint;


I don't think threading is exposed in the C++ code. I've added a bug to
remind me to do this.

http://bugzilla.gnome.org/show_bug.cgi?id=161223

>6. How does the message communication perform when
>invocate objects in the same address space? Does it
>use normal method call or other ways, e.g. socket and
>so on?
>  
>
It uses normal function calls. There shouldn't be any socket or network
communication for an in-process call.

>Any one or some of the above questions's answers will
>surely be appreciated.
>Hope these won't cost you precious time...
>
>  
>
Hope that clears up some of your questions.


-- 
Bowie Owens

CSIRO Mathematical & Information Sciences
phone  : +61 3 9545 8055
fax    : +61 3 9545 8080
mobile : 0425 729 875
email  : Bowie Owens csiro au




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]