TAO_PortableGroup  2.1.6
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends
TAO_UIPMC_Mcast_Transport Class Reference

Specialization of the base TAO_Transport class to handle the server side MIOP protocol. More...

#include <UIPMC_Mcast_Transport.h>

Inheritance diagram for TAO_UIPMC_Mcast_Transport:
Inheritance graph
Collaboration diagram for TAO_UIPMC_Mcast_Transport:
Collaboration graph

List of all members.

Public Types

typedef ACE_Hash_Map_Manager
< u_long,
TAO_PG::UIPMC_Recv_Packet
*, ACE_SYNCH_NULL_MUTEX
Packets_Map
- Public Types inherited from TAO_Transport
enum  Drain_Result_Enum

Public Member Functions

 TAO_UIPMC_Mcast_Transport (TAO_UIPMC_Mcast_Connection_Handler *handler, TAO_ORB_Core *orb_core)
 Constructor.
 ~TAO_UIPMC_Mcast_Transport (void)
 Default destructor.
virtual int handle_input (TAO_Resume_Handle &rh, ACE_Time_Value *max_wait_time=0)
 Look for the documentation in Transport.h.
- Public Member Functions inherited from TAO_Transport
 TAO_Transport (CORBA::ULong tag, TAO_ORB_Core *orb_core, size_t input_cdr_size=ACE_CDR::DEFAULT_BUFSIZE)
virtual ~TAO_Transport (void)
CORBA::ULong tag (void) const
TAO_ORB_Coreorb_core (void) const
TAO_Transport_Mux_Strategytms (void) const
TAO_Wait_Strategywait_strategy (void) const
Drain_Result handle_output (TAO::Transport::Drain_Constraints const &c)
int bidirectional_flag (void) const
void bidirectional_flag (int flag)
void cache_map_entry (TAO::Transport_Cache_Manager::HASH_MAP_ENTRY *entry)
TAO::Transport_Cache_Manager::HASH_MAP_ENTRY * cache_map_entry (void)
size_t id (void) const
void id (size_t id)
TAO::Connection_Role opened_as (void) const
void opened_as (TAO::Connection_Role)
unsigned long purging_order (void) const
void purging_order (unsigned long value)
bool queue_is_empty (void)
bool register_if_necessary (void)
void provide_handler (TAO::Connection_Handler_Set &handlers)
bool provide_blockable_handler (TAO::Connection_Handler_Set &handlers)
virtual int remove_handler (void)
bool idle_after_send (void)
bool idle_after_reply (void)
virtual void close_connection (void)
void messaging_init (TAO_GIOP_Message_Version const &version)
virtual int tear_listen_point_list (TAO_InputCDR &cdr)
virtual bool post_connect_hook (void)
ACE_Event_Handler::Reference_Count add_reference (void)
ACE_Event_Handler::Reference_Count remove_reference (void)
TAO_GIOP_Message_Basemessaging_object (void)
bool is_connected (void) const
bool post_open (size_t id)
void pre_close (void)
TAO_Connection_Handlerconnection_handler (void)
TAO_OutputCDRout_stream (void)
TAO_SYNCH_MUTEXoutput_cdr_lock (void)
void set_flush_in_post_open (void)
bool can_be_purged (void)
virtual void set_bidir_context_info (TAO_Operation_Details &opdetails)
int generate_locate_request (TAO_Target_Specification &spec, TAO_Operation_Details &opdetails, TAO_OutputCDR &output)
virtual int generate_request_header (TAO_Operation_Details &opd, TAO_Target_Specification &spec, TAO_OutputCDR &msg)
int recache_transport (TAO_Transport_Descriptor_Interface *desc)
virtual int send_message_shared (TAO_Stub *stub, TAO_Message_Semantics message_semantics, const ACE_Message_Block *message_block, ACE_Time_Value *max_wait_time)
int format_queue_message (TAO_OutputCDR &stream, ACE_Time_Value *max_wait_time, TAO_Stub *stub)
int send_message_block_chain (const ACE_Message_Block *message_block, size_t &bytes_transferred, ACE_Time_Value *max_wait_time=0)
int send_message_block_chain_i (const ACE_Message_Block *message_block, size_t &bytes_transferred, TAO::Transport::Drain_Constraints const &dc)
int purge_entry (void)
int make_idle (void)
int update_transport (void)
int handle_timeout (const ACE_Time_Value &current_time, const void *act)
size_t recv_buffer_size (void) const
size_t sent_byte_count (void) const
TAO_Codeset_Translator_Basechar_translator (void) const
TAO_Codeset_Translator_Basewchar_translator (void) const
void char_translator (TAO_Codeset_Translator_Base *)
void wchar_translator (TAO_Codeset_Translator_Base *)
void assign_translators (TAO_InputCDR *, TAO_OutputCDR *)
void clear_translators (TAO_InputCDR *, TAO_OutputCDR *)
CORBA::Boolean is_tcs_set () const
void first_request_sent (bool flag=false)
bool first_request () const
void send_connection_closed_notifications (void)
TAO::Transport::Stats * stats (void) const

Private Types

typedef ACE_Unbounded_Queue
< TAO_PG::UIPMC_Recv_Packet * > 
Packets_Queue
 Complete packets.

Private Member Functions

char * recv_packet (char *buf, size_t len, ACE_INET_Addr &from_addr, CORBA::UShort &packet_length, CORBA::ULong &packet_number, bool &stop_packet, u_long &id_hash) const
bool recv_all (void)
 Receive as much UDP packets as possible.
void cleanup_packets (bool expired_only)

Private Attributes

TAO_UIPMC_Mcast_Connection_Handlerconnection_handler_
Packets_Map incomplete_
 Incomplete packets.
TAO_SYNCH_MUTEX recv_lock_
 A lock for ensuring that only one thread is doing recv.
Packets_Queue complete_
TAO_SYNCH_MUTEX complete_lock_
 A lock for access synchronization to complete queue.

Friends

class TAO_PG::UIPMC_Recv_Packet_Cleanup_Guard

Overridden Template Methods

These are implementations of template methods declared by TAO_Transport.

virtual int send_request (TAO_Stub *, TAO_ORB_Core *, TAO_OutputCDR &, TAO_Message_Semantics, ACE_Time_Value *)
virtual int send_message (TAO_OutputCDR &, TAO_Stub *=0, TAO_ServerRequest *=0, TAO_Message_Semantics=TAO_Message_Semantics(), ACE_Time_Value *=0)
 Shouldn't ever be called on the server side.
virtual ACE_Event_Handlerevent_handler_i (void)
virtual TAO_Connection_Handlerconnection_handler_i (void)
virtual ssize_t send (iovec *, int, size_t &, ACE_Time_Value const *)
virtual ssize_t recv (char *, size_t, ACE_Time_Value const *)
 Shouldn't ever be called. We use recv_all() with different semantics.
virtual int register_handler (void)

Additional Inherited Members

- Public Attributes inherited from TAO_Transport
 DR_ERROR
 DR_OK
 DR_QUEUE_EMPTY
 DR_WOULDBLOCK
- Protected Member Functions inherited from TAO_Transport
int process_parsed_messages (TAO_Queued_Data *qd, TAO_Resume_Handle &rh)
int send_message_shared_i (TAO_Stub *stub, TAO_Message_Semantics message_semantics, const ACE_Message_Block *message_block, ACE_Time_Value *max_wait_time)
int queue_message_i (const ACE_Message_Block *message_block, ACE_Time_Value *max_wait_time, bool back=true)
ACE_Time_Value const * io_timeout (TAO::Transport::Drain_Constraints const &dc) const
- Protected Attributes inherited from TAO_Transport
CORBA::ULong const tag_
TAO_ORB_Core *const orb_core_
TAO::Transport_Cache_Manager::HASH_MAP_ENTRY * cache_map_entry_
TAO_Transport_Mux_Strategytms_
TAO_Wait_Strategyws_
int bidirectional_flag_
TAO::Connection_Role opening_connection_role_
TAO_Queued_Messagehead_
TAO_Queued_Messagetail_
TAO_Incoming_Message_Queue incoming_message_queue_
TAO::Incoming_Message_Stack incoming_message_stack_
ACE_Time_Value current_deadline_
long flush_timer_id_
TAO_Transport_Timer transport_timer_
ACE_Lockhandler_lock_
size_t id_
unsigned long purging_order_
size_t recv_buffer_size_
size_t sent_byte_count_
bool is_connected_

Detailed Description

Specialization of the base TAO_Transport class to handle the server side MIOP protocol.


Member Typedef Documentation

Complete packets.


Constructor & Destructor Documentation

TAO_UIPMC_Mcast_Transport::TAO_UIPMC_Mcast_Transport ( TAO_UIPMC_Mcast_Connection_Handler handler,
TAO_ORB_Core orb_core 
)

Constructor.

TAO_UIPMC_Mcast_Transport::~TAO_UIPMC_Mcast_Transport ( void  )

Default destructor.


Member Function Documentation

void TAO_UIPMC_Mcast_Transport::cleanup_packets ( bool  expired_only)
private

Cleanup either all packets or expired only depending the expired_only flag.

TAO_Connection_Handler * TAO_UIPMC_Mcast_Transport::connection_handler_i ( void  )
protectedvirtual

@TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. Shouldn't ever be called on the server side.

Implements TAO_Transport.

ACE_Event_Handler * TAO_UIPMC_Mcast_Transport::event_handler_i ( void  )
protectedvirtual

@TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. Shouldn't ever be called on the server side.

Implements TAO_Transport.

int TAO_UIPMC_Mcast_Transport::handle_input ( TAO_Resume_Handle rh,
ACE_Time_Value max_wait_time = 0 
)
virtual

Look for the documentation in Transport.h.

Reimplemented from TAO_Transport.

ssize_t TAO_UIPMC_Mcast_Transport::recv ( char *  ,
size_t  ,
ACE_Time_Value const *   
)
protectedvirtual

Shouldn't ever be called. We use recv_all() with different semantics.

Implements TAO_Transport.

bool TAO_UIPMC_Mcast_Transport::recv_all ( void  )
private

Receive as much UDP packets as possible.

char * TAO_UIPMC_Mcast_Transport::recv_packet ( char *  buf,
size_t  len,
ACE_INET_Addr from_addr,
CORBA::UShort packet_length,
CORBA::ULong packet_number,
bool &  stop_packet,
u_long &  id_hash 
) const
private

Receive a UDP message and extract all necessary info from the MIOP header. If everything is fine return a pointer to the first byte of the non-MIOP data.

int TAO_UIPMC_Mcast_Transport::register_handler ( void  )
protectedvirtual

@TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. Shouldn't ever be called on the server side.

Reimplemented from TAO_Transport.

ssize_t TAO_UIPMC_Mcast_Transport::send ( iovec *  ,
int  ,
size_t &  ,
ACE_Time_Value const *   
)
protectedvirtual

Write the complete Message_Block chain to the connection. Shouldn't ever be called on the server side.

Implements TAO_Transport.

int TAO_UIPMC_Mcast_Transport::send_message ( TAO_OutputCDR ,
TAO_Stub = 0,
TAO_ServerRequest = 0,
TAO_Message_Semantics  = TAO_Message_Semantics (),
ACE_Time_Value = 0 
)
virtual

Shouldn't ever be called on the server side.

Implements TAO_Transport.

int TAO_UIPMC_Mcast_Transport::send_request ( TAO_Stub ,
TAO_ORB_Core ,
TAO_OutputCDR ,
TAO_Message_Semantics  ,
ACE_Time_Value  
)
virtual

@TODO: These methods IMHO should have more meaningful names. The names seem to indicate nothing. Shouldn't ever be called on the server side.

Implements TAO_Transport.


Friends And Related Function Documentation


Member Data Documentation

Packets_Queue TAO_UIPMC_Mcast_Transport::complete_
private
TAO_SYNCH_MUTEX TAO_UIPMC_Mcast_Transport::complete_lock_
private

A lock for access synchronization to complete queue.

TAO_UIPMC_Mcast_Connection_Handler* TAO_UIPMC_Mcast_Transport::connection_handler_
private

The connection service handler used for accessing lower layer communication protocols.

Packets_Map TAO_UIPMC_Mcast_Transport::incomplete_
private

Incomplete packets.

TAO_SYNCH_MUTEX TAO_UIPMC_Mcast_Transport::recv_lock_
private

A lock for ensuring that only one thread is doing recv.


The documentation for this class was generated from the following files: