Currently, the folder structure of daisi/src and daisi/src/cpps is a bit all over the place.
Application-neutral Folders
Some folders with "application-neutral" content such as the datastructure and material_flow are located in the daisi/src folder, because they could be used in many applications.
However, they are currently only used inside the cpps. Should they stay located in daisi/src, or be moved into the cpps?
Folders to be deleted
Inside the daisi/src/cpps, there are the to, agv, and negotiation folders which will be deleted with the big refactoring.
The top level message folder probably too, because messages got separately reimplemented inside the amr and logical folders.
Amr, Physical, MaterialFlow and Logical Agent Structure
Now there is some confusion with the amr and logical folders inside the cpps.
We currently have the AmrPhysicalAsset, AmrLogicalAgent, and MaterialFlowLogicalAgent as the main entities. AmrPhysicalAsset is in the amr folder, and AmrLogicalAgent and MaterialFlowLogicalAgent in logical.
I think this structure makes more sense than moving the AmrLogicalAgent to the amr folder, because there is a lot of communication happening between the AmrLogicalAgent and MaterialFlowLogicalAgent. Therefore, the logic can be nicely separated from the rest of the code with the algorithm_interface.h, which both of them depend on. Additionally, the implemented algorithms will be extended a lot in the future.
On the other hand, there is little communication between the AmrPhysicalAsset and the AmrLogicalAgent, which will be extended in the future. Therefore, I don't think there is a problem in keeping them separate.
The third option would be to create three folders, for each entity. But then the question is where to place the communication between the (AmrPhysicalAsset and the AmrLogicalAgent) and (AmrLogicalAgent and the MaterialFlowLogicalAgent)?
Currently, the folder structure of
daisi/srcanddaisi/src/cppsis a bit all over the place.Application-neutral Folders
Some folders with "application-neutral" content such as the
datastructureandmaterial_floware located in thedaisi/srcfolder, because they could be used in many applications.However, they are currently only used inside the
cpps. Should they stay located indaisi/src, or be moved into thecpps?Folders to be deleted
Inside the
daisi/src/cpps, there are theto,agv, andnegotiationfolders which will be deleted with the big refactoring.The top level
messagefolder probably too, because messages got separately reimplemented inside theamrandlogicalfolders.Amr, Physical, MaterialFlow and Logical Agent Structure
Now there is some confusion with the
amrandlogicalfolders inside thecpps.We currently have the
AmrPhysicalAsset,AmrLogicalAgent, andMaterialFlowLogicalAgentas the main entities.AmrPhysicalAssetis in theamrfolder, andAmrLogicalAgentandMaterialFlowLogicalAgentinlogical.I think this structure makes more sense than moving the
AmrLogicalAgentto theamrfolder, because there is a lot of communication happening between theAmrLogicalAgentandMaterialFlowLogicalAgent. Therefore, the logic can be nicely separated from the rest of the code with thealgorithm_interface.h, which both of them depend on. Additionally, the implemented algorithms will be extended a lot in the future.On the other hand, there is little communication between the
AmrPhysicalAssetand theAmrLogicalAgent, which will be extended in the future. Therefore, I don't think there is a problem in keeping them separate.The third option would be to create three folders, for each entity. But then the question is where to place the communication between the (
AmrPhysicalAssetand theAmrLogicalAgent) and (AmrLogicalAgentand theMaterialFlowLogicalAgent)?