Public Member Functions | Public Attributes | Private Member Functions

ACE_Stream_Tail< ACE_SYNCH_DECL > Class Template Reference

Standard module that acts as the head of a stream. More...

#include <Stream_Modules.h>

Inheritance diagram for ACE_Stream_Tail< ACE_SYNCH_DECL >:
Inheritance graph
[legend]
Collaboration diagram for ACE_Stream_Tail< ACE_SYNCH_DECL >:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 ACE_Stream_Tail (void)
 Construction.
 ~ACE_Stream_Tail (void)
 Destruction.
virtual int open (void *a=0)
virtual int close (u_long flags=0)
virtual int put (ACE_Message_Block *msg, ACE_Time_Value *=0)
virtual int svc (void)
 Run by a daemon thread to handle deferred processing.
virtual int init (int argc, ACE_TCHAR *argv[])
 Initializes object when dynamic linking occurs.
virtual int info (ACE_TCHAR **info_string, size_t length) const
 Returns information on a service object.
virtual int fini (void)
 Terminates object when dynamic unlinking occurs.
void dump (void) const
 Dump the state of an object.

Public Attributes

 ACE_ALLOC_HOOK_DECLARE
 Declare the dynamic allocation hooks.

Private Member Functions

int control (ACE_Message_Block *)
 Performs canonical flushing at the ACE_Stream tail.
int canonical_flush (ACE_Message_Block *)

Detailed Description

template<ACE_SYNCH_DECL>
class ACE_Stream_Tail< ACE_SYNCH_DECL >

Standard module that acts as the head of a stream.

Definition at line 89 of file Stream_Modules.h.


Constructor & Destructor Documentation

template<ACE_SYNCH_DECL >
ACE_Stream_Tail< ACE_SYNCH_DECL >::ACE_Stream_Tail ( void   ) 

Construction.

Definition at line 159 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::ACE_Stream_Tail");
}

template<ACE_SYNCH_DECL >
ACE_Stream_Tail< ACE_SYNCH_DECL >::~ACE_Stream_Tail ( void   ) 

Destruction.

Definition at line 165 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::~ACE_Stream_Tail");
}


Member Function Documentation

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::canonical_flush ( ACE_Message_Block mb  )  [private]

Definition at line 227 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::canonical_flush");
  char *cp = mb->rd_ptr ();

  if (ACE_BIT_ENABLED (*cp, ACE_Task_Flags::ACE_FLUSHW))
    {
      this->flush (ACE_Task_Flags::ACE_FLUSHALL);
      ACE_CLR_BITS (*cp, ACE_Task_Flags::ACE_FLUSHW);
    }

  if (ACE_BIT_ENABLED (*cp, ACE_Task_Flags::ACE_FLUSHR))
    {
      this->sibling ()->flush (ACE_Task_Flags::ACE_FLUSHALL);
      return this->reply (mb);
    }
  else
    mb->release ();

  return 0;
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::close ( u_long  flags = 0  )  [virtual]

Hook called from ACE_Thread_Exit when during thread exit and from the default implementation of module_closed(). In general, this method shouldn't be called directly by an application, particularly if the Task is running as an Active Object. Instead, a special message should be passed into the Task via the put() method defined below, and the svc() method should interpret this as a flag to shut down the Task.

Reimplemented from ACE_Task_Base.

Definition at line 186 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::close");
  return 0;
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::control ( ACE_Message_Block mb  )  [private]

Performs canonical flushing at the ACE_Stream tail.

Definition at line 200 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::control");
  ACE_IO_Cntl_Msg *ioc = (ACE_IO_Cntl_Msg *) mb->rd_ptr ();
  ACE_IO_Cntl_Msg::ACE_IO_Cntl_Cmds cmd;

  switch (cmd = ioc->cmd ())
    {
    case ACE_IO_Cntl_Msg::SET_LWM:
    case ACE_IO_Cntl_Msg::SET_HWM:
      {
        size_t wm_size = *(size_t *) mb->cont ()->rd_ptr ();

        this->water_marks (cmd, wm_size);
        this->sibling ()->water_marks (cmd, wm_size);
        ioc->rval (0);
        break;
      }
    default:
      mb->msg_type (ACE_Message_Block::MB_IOCNAK);
    }
  return this->reply (mb);
}

template<ACE_SYNCH_DECL >
void ACE_Stream_Tail< ACE_SYNCH_DECL >::dump ( void   )  const

Dump the state of an object.

Reimplemented from ACE_Task< ACE_SYNCH_USE >.

Definition at line 171 of file Stream_Modules.cpp.

{
#if defined (ACE_HAS_DUMP)
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::dump");
#endif /* ACE_HAS_DUMP */
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::fini ( void   )  [virtual]

Terminates object when dynamic unlinking occurs.

Reimplemented from ACE_Shared_Object.

Definition at line 293 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::fini");
  return 0;
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::info ( ACE_TCHAR **  info_string,
size_t  length 
) const [virtual]

Returns information on a service object.

Reimplemented from ACE_Shared_Object.

Definition at line 280 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::info");
  const ACE_TCHAR *name = this->name ();

  if (*strp == 0 && (*strp = ACE_OS::strdup (name)) == 0)
    return -1;
  else
    ACE_OS::strsncpy (*strp, name, length);
  return static_cast<int> (ACE_OS::strlen (name));
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::init ( int  argc,
ACE_TCHAR argv[] 
) [virtual]

Initializes object when dynamic linking occurs.

Reimplemented from ACE_Shared_Object.

Definition at line 273 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::init");
  return 0;
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::open ( void *  args = 0  )  [virtual]

Hook called to initialize a task and prepare it for execution. args can be used to pass arbitrary information into <open>.

Reimplemented from ACE_Task_Base.

Definition at line 179 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::open");
  return 0;
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::put ( ACE_Message_Block ,
ACE_Time_Value = 0 
) [virtual]

A hook method that can be used to pass a message to a task, where it can be processed immediately or queued for subsequent processing in the svc() hook method.

Reimplemented from ACE_Task_Base.

Definition at line 250 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::put");

  if (this->is_writer ())
    {
      switch (mb->msg_type ())
        {
        case ACE_Message_Block::MB_IOCTL:
          return this->control (mb);
          /* NOTREACHED */
        default:
          mb->release ();
          return 0;
          /* NOTREACHED */
        }
    }

  return -1;
}

template<ACE_SYNCH_DECL >
int ACE_Stream_Tail< ACE_SYNCH_DECL >::svc ( void   )  [virtual]

Run by a daemon thread to handle deferred processing.

Reimplemented from ACE_Task_Base.

Definition at line 193 of file Stream_Modules.cpp.

{
  ACE_TRACE ("ACE_Stream_Tail<ACE_SYNCH_USE>::svc");
  return -1;
}


Member Data Documentation

template<ACE_SYNCH_DECL >
ACE_Stream_Tail< ACE_SYNCH_DECL >::ACE_ALLOC_HOOK_DECLARE

Declare the dynamic allocation hooks.

Reimplemented from ACE_Task< ACE_SYNCH_USE >.

Definition at line 113 of file Stream_Modules.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines