Create Pool-System with Lifetime
This commit is contained in:
		
							parent
							
								
									48a474287e
								
							
						
					
					
						commit
						661ee747a1
					
				
							
								
								
									
										67
									
								
								docs/diagrams/class/Pool.puml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								docs/diagrams/class/Pool.puml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,67 @@
 | 
			
		||||
@startuml
 | 
			
		||||
footer "LTDFS | Ruakij"
 | 
			
		||||
 | 
			
		||||
header ""
 | 
			
		||||
title "Pool-System with Lifetime"
 | 
			
		||||
 | 
			
		||||
enum ItemState {
 | 
			
		||||
    WAITING
 | 
			
		||||
    READY
 | 
			
		||||
    TAKEN
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class "PoolItem<T>" as PoolItem_T {
 | 
			
		||||
    # item : T*
 | 
			
		||||
    # aTime : std::chrono::time_point
 | 
			
		||||
    # state : ItemState
 | 
			
		||||
    --
 | 
			
		||||
    + PoolItem(T* item, ItemState state)
 | 
			
		||||
}
 | 
			
		||||
PoolItem_T "*" -> "1" ItemState : <<has>>
 | 
			
		||||
 | 
			
		||||
class "Pool<T>" as Pool_T {
 | 
			
		||||
    # min : uint
 | 
			
		||||
    # max : uint
 | 
			
		||||
    # idleLifetime : uint
 | 
			
		||||
    ..
 | 
			
		||||
    # {field} create : T*(*)()
 | 
			
		||||
    # {field} isReady : boolean(*)(T*)
 | 
			
		||||
    # {field} destroy : void(*)(T*)
 | 
			
		||||
    ..
 | 
			
		||||
    # items : Array<T*>
 | 
			
		||||
    --
 | 
			
		||||
    + Pool(uint min, uint max, uint32_t lifetime,
 | 
			
		||||
    T*(*create)(),
 | 
			
		||||
    boolean(*isReady)(T*) = nullptr,
 | 
			
		||||
    void(*destroy)(T*) = nullptr)
 | 
			
		||||
    ..
 | 
			
		||||
    + get() : T*
 | 
			
		||||
    + return(T*)
 | 
			
		||||
}
 | 
			
		||||
note right of Pool_T::Pool
 | 
			
		||||
    isReady: Checks if Object is ready
 | 
			
		||||
      ItemState defaults to Ready if unset
 | 
			
		||||
 | 
			
		||||
    destroy: Destroy Object
 | 
			
		||||
      defaults to delete/deconstructor
 | 
			
		||||
end note
 | 
			
		||||
 | 
			
		||||
Pool_T "1" --> "*" PoolItem_T : <<has>>
 | 
			
		||||
 | 
			
		||||
class "PoolManager<T>" as PoolManager_T {
 | 
			
		||||
    # pools : Array<Pool<PoolItem<T>>>
 | 
			
		||||
    # thread : pthread_t
 | 
			
		||||
    --
 | 
			
		||||
    + PoolManager(Array<Pool<PoolItem<T>>> pools)
 | 
			
		||||
    + PoolManager(Pool<PoolItem<T>> pool)
 | 
			
		||||
    ..
 | 
			
		||||
    + Start()
 | 
			
		||||
    + Stop()
 | 
			
		||||
}
 | 
			
		||||
note left of PoolItem_T::aTime
 | 
			
		||||
AccessTime
 | 
			
		||||
end note
 | 
			
		||||
 | 
			
		||||
PoolManager_T "1" --> "*" Pool_T : <<manages>>
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user