diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-10-22 00:49:42 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-10-22 00:49:42 -0700 |
| commit | c9a183eb69205e7f821615ced2bc1f11f47d6e40 (patch) | |
| tree | dbfaba1531e8b1efe8d3b23a578ec39cc73ff1ea /weed/storage/memory_map | |
| parent | fec07c829deac7d762c50b9b9e7bdc0c849f6d2e (diff) | |
| download | seaweedfs-c9a183eb69205e7f821615ced2bc1f11f47d6e40.tar.xz seaweedfs-c9a183eb69205e7f821615ced2bc1f11f47d6e40.zip | |
refactor memory map related code
Diffstat (limited to 'weed/storage/memory_map')
| -rw-r--r-- | weed/storage/memory_map/memory_map.go | 24 | ||||
| -rw-r--r-- | weed/storage/memory_map/memory_map_other.go | 24 | ||||
| -rw-r--r-- | weed/storage/memory_map/memory_map_test.go | 10 | ||||
| -rw-r--r-- | weed/storage/memory_map/memory_map_windows.go | 18 |
4 files changed, 41 insertions, 35 deletions
diff --git a/weed/storage/memory_map/memory_map.go b/weed/storage/memory_map/memory_map.go index 5f0327ea7..e940fcc0e 100644 --- a/weed/storage/memory_map/memory_map.go +++ b/weed/storage/memory_map/memory_map.go @@ -1,10 +1,8 @@ -// +build !windows - package memory_map import ( - "fmt" "os" + "strconv" ) type MemoryBuffer struct { @@ -25,18 +23,10 @@ type MemoryMap struct { var FileMemoryMap = make(map[string]*MemoryMap) -func (mMap *MemoryMap) CreateMemoryMap(file *os.File, maxLength uint64) { -} - -func (mMap *MemoryMap) WriteMemory(offset uint64, length uint64, data []byte) { - -} - -func (mMap *MemoryMap) ReadMemory(offset uint64, length uint64) ([]byte, error) { - dataSlice := []byte{} - return dataSlice, fmt.Errorf("Memory Map not implemented for this platform") -} - -func (mBuffer *MemoryMap) DeleteFileAndMemoryMap() { - +func ReadMemoryMapMaxSizeMb(memoryMapMaxSizeMbString string) (uint32, error) { + if memoryMapMaxSizeMbString == "" { + return 0, nil + } + memoryMapMaxSize64, err := strconv.ParseUint(memoryMapMaxSizeMbString, 10, 32) + return uint32(memoryMapMaxSize64), err } diff --git a/weed/storage/memory_map/memory_map_other.go b/weed/storage/memory_map/memory_map_other.go new file mode 100644 index 000000000..e06a0b59a --- /dev/null +++ b/weed/storage/memory_map/memory_map_other.go @@ -0,0 +1,24 @@ +// +build !windows + +package memory_map + +import ( + "fmt" + "os" +) + +func (mMap *MemoryMap) CreateMemoryMap(file *os.File, maxLength uint64) { +} + +func (mMap *MemoryMap) WriteMemory(offset uint64, length uint64, data []byte) { + +} + +func (mMap *MemoryMap) ReadMemory(offset uint64, length uint64) ([]byte, error) { + dataSlice := []byte{} + return dataSlice, fmt.Errorf("Memory Map not implemented for this platform") +} + +func (mBuffer *MemoryMap) DeleteFileAndMemoryMap() { + +} diff --git a/weed/storage/memory_map/memory_map_test.go b/weed/storage/memory_map/memory_map_test.go new file mode 100644 index 000000000..33e1a828c --- /dev/null +++ b/weed/storage/memory_map/memory_map_test.go @@ -0,0 +1,10 @@ +package memory_map + +import "testing" + +func TestMemoryMapMaxSizeReadWrite(t *testing.T) { + memoryMapSize, _ := ReadMemoryMapMaxSizeMb("5000") + if memoryMapSize != 5000 { + t.Errorf("empty memoryMapSize:%v", memoryMapSize) + } +} diff --git a/weed/storage/memory_map/memory_map_windows.go b/weed/storage/memory_map/memory_map_windows.go index ac4493188..7eb713442 100644 --- a/weed/storage/memory_map/memory_map_windows.go +++ b/weed/storage/memory_map/memory_map_windows.go @@ -11,24 +11,6 @@ import ( "golang.org/x/sys/windows" ) -type MemoryBuffer struct { - aligned_length uint64 - length uint64 - aligned_ptr uintptr - ptr uintptr - Buffer []byte -} - -type MemoryMap struct { - File *os.File - file_memory_map_handle uintptr - write_map_views []MemoryBuffer - max_length uint64 - End_of_file int64 -} - -var FileMemoryMap = make(map[string]*MemoryMap) - type DWORDLONG = uint64 type DWORD = uint32 type WORD = uint16 |
