## NAME

ACE_Locked_Data_Block - A Data_Block with a concrete locking strategy.

## SYNOPSIS

    #include <ace/Message_Block_T.h>

    template<class ACE_LOCK>
    class ACE_Locked_Data_Block : public ACE_Data_Block
    {
      public:
        ACE_Locked_Data_Block (void);
        ACE_Locked_Data_Block (
            size_t size,
            ACE_Message_Block::ACE_Message_Type msg_type,
            const char *msg_data,
            ACE_Allocator *allocator_strategy,
            ACE_Message_Block::Message_Flags flags,
            ACE_Allocator *data_block_allocator
            );
        virtual ~ACE_Locked_Data_Block (void);
        virtual ACE_Data_Block *clone_nocopy (
            ACE_Message_Block::Message_Flags mask = 0
            ) const;
      private:
        ACE_LOCK lock_;
        inline ACE_UNIMPLEMENTED_FUNC (
            ACE_Locked_Data_Block<ACE_LOCK> &operator= (const ACE_Locked_Data_Block<ACE_LOCK> &)
            );
    };

## DESCRIPTION

Data_Blocks can be parametric on the kind of lock they use; in many cases the lifetime of the lock is tied to the lifetime of the Data_Block itself. But since Data_Blocks are reference counted it is hard for users to control the lock lifetime. This class is parametric over the kind of lock used.

## Initialization and termination methods.

    ACE_Locked_Data_Block (void);

Default "do-nothing" constructor.

    ACE_Locked_Data_Block (
        size_t size,
        ACE_Message_Block::ACE_Message_Type msg_type,
        const char *msg_data,
        ACE_Allocator *allocator_strategy,
        ACE_Message_Block::Message_Flags flags,
        ACE_Allocator *data_block_allocator
        );

Initialize.

    virtual ~ACE_Locked_Data_Block (void);

Delete all the resources held in the message.

    virtual ACE_Data_Block *clone_nocopy (
        ACE_Message_Block::Message_Flags mask = 0
        ) const;

Return an exact "deep copy" of the message, the dynamic type is ACE_Locked_Data_Block`` See the documentation in Message_Block.h for details.

## Disallow these operations.

    inline ACE_UNIMPLEMENTED_FUNC (
        ACE_Locked_Data_Block<ACE_LOCK> &operator= (const ACE_Locked_Data_Block<ACE_LOCK> &)
        );

## AUTHOR

Doug Schmidt & Carlos O'Ryan

## LIBRARY

ace