Author: James CE Johnson

ACE Tutorial 020
Sharing your Memories with persistence

The mmap.h where we define stuff that needs to be shared between the apps at compile-time.

mmap.h

    // page05.html,v 1.4 1999/04/03 21:56:34 jcej Exp

    #ifndef MMAP_H
    #define MMAP_H

    // The expected filename for ACE_Shared_Memory_MM.h
    #include "ace/Shared_Memory_MM.h"

    // Just enough for the alphabet...
    #define SHMSZ 27

    /*
      Here we use a real filename instead of an arbitrary number.  This
      actually will exist in the filesystem.  You can 'cat' it and
      everything!
    */
    #define SHM_KEY "mmapfile"

    /*
      The SV Shared Memory SharedData object returns.  It is identical to
      the one we used in that tutorial.  I didn't even change the name.
     */
    class SharedData
    {
    public:
      SharedData (int initialize = 1);

      void set (void);
      void show (void);
      int available (void);
      void available (int not_in_use);

    protected:
      char buf_[128];
      int available_;
    };

    #endif /* MMAP_H */

mmap.cpp

    // page05.html,v 1.4 1999/04/03 21:56:34 jcej Exp

    #include "mmap.h"

    SharedData::SharedData(int _initialize)
        : available_(0)
    {
        if( _initialize )
        {
            ACE_OS::sprintf(buf_,"UNSET\n");
        }
    }

    void SharedData::set(void)
    {
        ACE_OS::sprintf(buf_,"My PID is (%d)\n",ACE_OS::getpid());
    }

    void SharedData::show(void)
    {
        ACE_DEBUG ((LM_INFO, "(%P|%t) Shared Data text is (%s)\n",
                    buf_ ));
    }

    int SharedData::available(void)
    {
        return available_;
    }

    void SharedData::available(int _available)
    {
        available_ = _available;
    }

[Tutorial Index] [Continue This Tutorial]