The applications based on Real-Time CORBA need analyze request header in order to get the request priority embedded in request header. Before analyzing request header, server-side ORB can not know the priority of request. In multi-threaded ORB, there are many threads serving client’s requests concurrently. At the same time there is at least one thread which takes in charge receiving requests from network and identifying the priority of request ( below we refer to this thread as endpoint-thread, and refer to the thread serving request as request-thread ). It is very important that what priority we should set to the endpoint-thread. If endpoint-thread priority is too high, it will impact the execution of request-thread, that is to say, impact the process of received request. If endpoint-thread priority is too low, it cannot receive new request from clients, which may be urgent request, compared to current requests. So we suggest providing a priority policy, maybe it can be named EndpointThreadPriorityPolicy, which allowing user to set endpoint-thread priority according to his requirement. ORB should provide default priority value for EndpointThreadPriorityPolicy. Below is the possible idl interface: //idl module RTCORBA { //local interface EndpointThreadPriorityPolicy : CORBA::Policy
{ attribute Priority endpoint_thread_priority; }
; }; Applications can use this policy at the time of creating POAMananger. For example:(in win32 REALTIME_PRIORITY_CLASS) //c++ CORBA::PolicyList pl; pl.length(1); pl[0] = rtORB >create_endpoint_thread_priority_policy(24); PortableServer::POAManager_var manager = poamanager_factory> create_POAManager("RootPOAManager",pl); through configuring endpoint_thread's priority, we can trade off the processing between rceived request and new arrival request .