sprint 1-alpha
|
00001 /****************************************************************************** 00002 * sprint::ipc 00003 * 00004 * Copyright (C) 2005-2011 Paolo Medici <www.pmx.it> 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Lesser General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2.1 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public 00017 * License along with this library; if not, write to the Free Software 00018 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 00019 * 00020 *******************************************************************************/ 00021 00026 #ifndef _SPRINT_IPC_MEMORY_H 00027 #define _SPRINT_IPC_MEMORY_H 00028 00029 #include <string> 00030 00031 namespace sprint { 00032 namespace ipc { 00033 00035 enum memory_policy { 00037 none = 0, 00039 push = 1, 00041 pop = 2, 00043 delta = 4 00044 }; 00045 00046 struct segment_info { 00047 std::string name; 00048 int ref_count; 00049 int size; 00050 memory_policy policy; 00051 }; 00052 00054 class segment { 00055 public: 00056 virtual ~segment() {}; 00057 virtual bool info(segment_info & info) = 0; 00058 virtual void *lock(int begin, int lenght, lock_policy policy) = 0; 00059 virtual bool unlock() = 0; 00060 }; 00061 00063 segment *create_memory(const char *name, unsigned int size, memory_policy update_policy=none); 00064 00066 segment *open_memory(const char *name); 00067 00068 00069 } 00070 } 00071 00072 #endif