From 06b4b781b994d79bee0b79bd902fdaf16fb287c2 Mon Sep 17 00:00:00 2001 From: Sydonian <794346190@qq.com> Date: Wed, 14 Jun 2023 11:31:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E9=94=81=E7=9A=84=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E5=88=B0client?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reqbuilder/lock_request_builder.go | 2 +- pkg/distlock/reqbuilder/metadata_object.go | 63 +++++++++++++++++++ .../reqbuilder/metadata_object_block.go | 63 +++++++++++++++++++ .../reqbuilder/metadata_object_rep.go | 63 +++++++++++++++++++ .../reqbuilder/metadata_storage_object.go | 63 +++++++++++++++++++ 5 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 pkg/distlock/reqbuilder/metadata_object.go create mode 100644 pkg/distlock/reqbuilder/metadata_object_block.go create mode 100644 pkg/distlock/reqbuilder/metadata_object_rep.go create mode 100644 pkg/distlock/reqbuilder/metadata_storage_object.go diff --git a/pkg/distlock/reqbuilder/lock_request_builder.go b/pkg/distlock/reqbuilder/lock_request_builder.go index 8ab84ff..a704b7c 100644 --- a/pkg/distlock/reqbuilder/lock_request_builder.go +++ b/pkg/distlock/reqbuilder/lock_request_builder.go @@ -20,7 +20,7 @@ func (b *LockRequestBuilder) Build() distlock.LockRequest { } } -func (b *LockRequestBuilder) MutextLock(svc *service.Service) (*service.Mutex, error) { +func (b *LockRequestBuilder) MutexLock(svc *service.Service) (*service.Mutex, error) { mutex := service.NewMutex(svc, b.Build()) err := mutex.Lock() if err != nil { diff --git a/pkg/distlock/reqbuilder/metadata_object.go b/pkg/distlock/reqbuilder/metadata_object.go new file mode 100644 index 0000000..14c7acf --- /dev/null +++ b/pkg/distlock/reqbuilder/metadata_object.go @@ -0,0 +1,63 @@ +package reqbuilder + +import ( + "gitlink.org.cn/cloudream/common/pkg/distlock" + "gitlink.org.cn/cloudream/common/pkg/distlock/lockprovider" +) + +type MetadataObjectLockReqBuilder struct { + *MetadataLockReqBuilder +} + +func (b *MetadataLockReqBuilder) Object() *MetadataObjectLockReqBuilder { + return &MetadataObjectLockReqBuilder{MetadataLockReqBuilder: b} +} + +func (b *MetadataObjectLockReqBuilder) ReadOne(objectID int) *MetadataObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("Object"), + Name: lockprovider.METADATA_ELEMENT_READ_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataObjectLockReqBuilder) WriteOne(objectID int) *MetadataObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("Object"), + Name: lockprovider.METADATA_ELEMENT_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataObjectLockReqBuilder) CreateOne() *MetadataObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("Object"), + Name: lockprovider.METADATA_ELEMENT_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectLockReqBuilder) ReadAny() *MetadataObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("Object"), + Name: lockprovider.METADATA_SET_READ_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectLockReqBuilder) WriteAny() *MetadataObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("Object"), + Name: lockprovider.METADATA_SET_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectLockReqBuilder) CreateAny() *MetadataObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("Object"), + Name: lockprovider.METADATA_SET_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} diff --git a/pkg/distlock/reqbuilder/metadata_object_block.go b/pkg/distlock/reqbuilder/metadata_object_block.go new file mode 100644 index 0000000..e7c9c6e --- /dev/null +++ b/pkg/distlock/reqbuilder/metadata_object_block.go @@ -0,0 +1,63 @@ +package reqbuilder + +import ( + "gitlink.org.cn/cloudream/common/pkg/distlock" + "gitlink.org.cn/cloudream/common/pkg/distlock/lockprovider" +) + +type MetadataObjectBlockLockReqBuilder struct { + *MetadataLockReqBuilder +} + +func (b *MetadataLockReqBuilder) ObjectBlock() *MetadataObjectBlockLockReqBuilder { + return &MetadataObjectBlockLockReqBuilder{MetadataLockReqBuilder: b} +} + +func (b *MetadataObjectBlockLockReqBuilder) ReadOne(objectID int) *MetadataObjectBlockLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectBlock"), + Name: lockprovider.METADATA_ELEMENT_READ_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataObjectBlockLockReqBuilder) WriteOne(objectID int) *MetadataObjectBlockLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectBlock"), + Name: lockprovider.METADATA_ELEMENT_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataObjectBlockLockReqBuilder) CreateOne() *MetadataObjectBlockLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectBlock"), + Name: lockprovider.METADATA_ELEMENT_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectBlockLockReqBuilder) ReadAny() *MetadataObjectBlockLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectBlock"), + Name: lockprovider.METADATA_SET_READ_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectBlockLockReqBuilder) WriteAny() *MetadataObjectBlockLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectBlock"), + Name: lockprovider.METADATA_SET_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectBlockLockReqBuilder) CreateAny() *MetadataObjectBlockLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectBlock"), + Name: lockprovider.METADATA_SET_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} diff --git a/pkg/distlock/reqbuilder/metadata_object_rep.go b/pkg/distlock/reqbuilder/metadata_object_rep.go new file mode 100644 index 0000000..6a2d72c --- /dev/null +++ b/pkg/distlock/reqbuilder/metadata_object_rep.go @@ -0,0 +1,63 @@ +package reqbuilder + +import ( + "gitlink.org.cn/cloudream/common/pkg/distlock" + "gitlink.org.cn/cloudream/common/pkg/distlock/lockprovider" +) + +type MetadataObjectRepLockReqBuilder struct { + *MetadataLockReqBuilder +} + +func (b *MetadataLockReqBuilder) ObjectRep() *MetadataObjectRepLockReqBuilder { + return &MetadataObjectRepLockReqBuilder{MetadataLockReqBuilder: b} +} + +func (b *MetadataObjectRepLockReqBuilder) ReadOne(objectID int) *MetadataObjectRepLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectRep"), + Name: lockprovider.METADATA_ELEMENT_READ_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataObjectRepLockReqBuilder) WriteOne(objectID int) *MetadataObjectRepLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectRep"), + Name: lockprovider.METADATA_ELEMENT_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataObjectRepLockReqBuilder) CreateOne() *MetadataObjectRepLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectRep"), + Name: lockprovider.METADATA_ELEMENT_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectRepLockReqBuilder) ReadAny() *MetadataObjectRepLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectRep"), + Name: lockprovider.METADATA_SET_READ_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectRepLockReqBuilder) WriteAny() *MetadataObjectRepLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectRep"), + Name: lockprovider.METADATA_SET_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataObjectRepLockReqBuilder) CreateAny() *MetadataObjectRepLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("ObjectRep"), + Name: lockprovider.METADATA_SET_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} diff --git a/pkg/distlock/reqbuilder/metadata_storage_object.go b/pkg/distlock/reqbuilder/metadata_storage_object.go new file mode 100644 index 0000000..0cc8ff5 --- /dev/null +++ b/pkg/distlock/reqbuilder/metadata_storage_object.go @@ -0,0 +1,63 @@ +package reqbuilder + +import ( + "gitlink.org.cn/cloudream/common/pkg/distlock" + "gitlink.org.cn/cloudream/common/pkg/distlock/lockprovider" +) + +type MetadataStorageObjectLockReqBuilder struct { + *MetadataLockReqBuilder +} + +func (b *MetadataLockReqBuilder) StorageObject() *MetadataStorageObjectLockReqBuilder { + return &MetadataStorageObjectLockReqBuilder{MetadataLockReqBuilder: b} +} + +func (b *MetadataStorageObjectLockReqBuilder) ReadOne(objectID int) *MetadataStorageObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("StorageObject"), + Name: lockprovider.METADATA_ELEMENT_READ_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataStorageObjectLockReqBuilder) WriteOne(objectID int) *MetadataStorageObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("StorageObject"), + Name: lockprovider.METADATA_ELEMENT_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget().Add(objectID), + }) + return b +} +func (b *MetadataStorageObjectLockReqBuilder) CreateOne() *MetadataStorageObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("StorageObject"), + Name: lockprovider.METADATA_ELEMENT_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataStorageObjectLockReqBuilder) ReadAny() *MetadataStorageObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("StorageObject"), + Name: lockprovider.METADATA_SET_READ_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataStorageObjectLockReqBuilder) WriteAny() *MetadataStorageObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("StorageObject"), + Name: lockprovider.METADATA_SET_WRITE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +} +func (b *MetadataStorageObjectLockReqBuilder) CreateAny() *MetadataStorageObjectLockReqBuilder { + b.locks = append(b.locks, distlock.Lock{ + Path: b.makePath("StorageObject"), + Name: lockprovider.METADATA_SET_CREATE_LOCK, + Target: *lockprovider.NewStringLockTarget(), + }) + return b +}