![]() ![]() |
![]() |
File: [OMI] / omi / samples / Providers / Test_AssociationProvider / Test_AssociationPhysicalLogicalDisk.cpp
(download)
Revision: 1.1, Mon Apr 20 17:20:01 2015 UTC (9 years, 2 months ago) by krisbash Branch: MAIN CVS Tags: OMI_1_0_8_2, OMI_1_0_8_1, HEAD OMI 1.0.8-1 |
/* @migen@ */ #include <MI.h> #include <pal/strings.h> #include "Test_AssociationPhysicalLogicalDisk.h" #include "CommonUtils.h" #include <vector> std::vector<Test_PhysicalDisk*> physicalDiskForAssocInstanceStore; std::vector<Test_LogicalDisk*> logicalDiskForAssocInstanceStore; void CreatePhysicalLogicalAssociations(MI_Context* context) { if(physicalDiskForAssocInstanceStore.size() == 0) CreatePhysicalDiskInstances(context, physicalDiskForAssocInstanceStore); if(logicalDiskForAssocInstanceStore.size() == 0) CreateLogicalDiskInstances(context, logicalDiskForAssocInstanceStore); } MI_Result PostPhysicalToLogicalAssociation(MI_Context* context, const Test_PhysicalDisk* instanceName, MI_Boolean isReference) { MI_Result result = MI_RESULT_OK; if(instanceName->serialNumber.exists == MI_FALSE) { result = MI_RESULT_INVALID_PARAMETER; } else { if(Tcscasecmp(instanceName->serialNumber.value, MI_T("10000")) == 0) { for(MI_Uint32 i = 0; i < logicalDiskForAssocInstanceStore.size(); i++) { if(logicalDiskForAssocInstanceStore[i]->diskID.value == 0 && (Tcscasecmp(logicalDiskForAssocInstanceStore[i]->driveLetter.value, MI_T("C")) == 0)) { if(isReference == MI_TRUE) { Test_AssociationPhysicalLogicalDisk assocLogical; Test_AssociationPhysicalLogicalDisk_Construct(&assocLogical, context); Test_AssociationPhysicalLogicalDisk_Set_antecedent(&assocLogical, instanceName); Test_AssociationPhysicalLogicalDisk_Set_dependent(&assocLogical, logicalDiskForAssocInstanceStore[i]); result = Test_AssociationPhysicalLogicalDisk_Post(&assocLogical, context); Test_AssociationPhysicalLogicalDisk_Destruct(&assocLogical); if(result != MI_RESULT_OK) break; } else { result = Test_LogicalDisk_Post(logicalDiskForAssocInstanceStore[i], context); if(result != MI_RESULT_OK) break; } } if(logicalDiskForAssocInstanceStore[i]->diskID.value == 1 && (Tcscasecmp(logicalDiskForAssocInstanceStore[i]->driveLetter.value, MI_T("D")) == 0) ) { if(isReference == MI_TRUE) { Test_AssociationPhysicalLogicalDisk assocLogical; Test_AssociationPhysicalLogicalDisk_Construct(&assocLogical, context); Test_AssociationPhysicalLogicalDisk_Set_antecedent(&assocLogical, instanceName); Test_AssociationPhysicalLogicalDisk_Set_dependent(&assocLogical, logicalDiskForAssocInstanceStore[i]); result = Test_AssociationPhysicalLogicalDisk_Post(&assocLogical, context); Test_AssociationPhysicalLogicalDisk_Destruct(&assocLogical); if(result != MI_RESULT_OK) break; } else { result = Test_LogicalDisk_Post(logicalDiskForAssocInstanceStore[i], context); if(result != MI_RESULT_OK) break; } } } } else if(Tcscasecmp(instanceName->serialNumber.value, MI_T("10001")) == 0) { for(MI_Uint32 i = 0; i < logicalDiskForAssocInstanceStore.size(); i++) { if(logicalDiskForAssocInstanceStore[i]->diskID.value == 2 && (Tcscasecmp(logicalDiskForAssocInstanceStore[i]->driveLetter.value, MI_T("E")) == 0) ) { if(isReference == MI_TRUE) { Test_AssociationPhysicalLogicalDisk assocLogical; Test_AssociationPhysicalLogicalDisk_Construct(&assocLogical, context); Test_AssociationPhysicalLogicalDisk_Set_antecedent(&assocLogical, instanceName); Test_AssociationPhysicalLogicalDisk_Set_dependent(&assocLogical, logicalDiskForAssocInstanceStore[i]); result = Test_AssociationPhysicalLogicalDisk_Post(&assocLogical, context); Test_AssociationPhysicalLogicalDisk_Destruct(&assocLogical); if(result != MI_RESULT_OK) break; } else { result = Test_LogicalDisk_Post(logicalDiskForAssocInstanceStore[i], context); break; } } } } } return result; } MI_Result PostLogicalToPhysicalAssociation(MI_Context* context, const Test_LogicalDisk* instanceName, MI_Boolean isReference) { MI_Result result = MI_RESULT_OK; if(instanceName->diskID.exists == MI_FALSE && instanceName->driveLetter.exists == MI_FALSE) { result = MI_RESULT_INVALID_PARAMETER; } else { if( (instanceName->diskID.value == 0 && (Tcscasecmp(instanceName->driveLetter.value, MI_T("C")) == 0)) || (instanceName->diskID.value == 1 && (Tcscasecmp(instanceName->driveLetter.value, MI_T("D")) == 0))) { for(MI_Uint32 i = 0; i < physicalDiskForAssocInstanceStore.size(); i++) { if(Tcscasecmp(physicalDiskForAssocInstanceStore[i]->serialNumber.value, MI_T("10000")) == 0) { if(isReference == MI_TRUE) { Test_AssociationPhysicalLogicalDisk assocPhysical; Test_AssociationPhysicalLogicalDisk_Construct(&assocPhysical, context); Test_AssociationPhysicalLogicalDisk_Set_antecedent(&assocPhysical, physicalDiskForAssocInstanceStore[i]); Test_AssociationPhysicalLogicalDisk_Set_dependent(&assocPhysical, instanceName); result = Test_AssociationPhysicalLogicalDisk_Post(&assocPhysical, context); Test_AssociationPhysicalLogicalDisk_Destruct(&assocPhysical); if(result != MI_RESULT_OK) break; } else { result = Test_PhysicalDisk_Post(physicalDiskForAssocInstanceStore[i], context); if(result != MI_RESULT_OK) break; } } } } else if(instanceName->diskID.value == 2 && (Tcscasecmp(instanceName->driveLetter.value, MI_T("E")) == 0)) { for(MI_Uint32 i = 0; i < physicalDiskForAssocInstanceStore.size(); i++) { if(Tcscasecmp(physicalDiskForAssocInstanceStore[i]->serialNumber.value, MI_T("10001")) == 0) { if(isReference == MI_TRUE) { Test_AssociationPhysicalLogicalDisk assocPhysical; Test_AssociationPhysicalLogicalDisk_Construct(&assocPhysical, context); Test_AssociationPhysicalLogicalDisk_Set_antecedent(&assocPhysical, physicalDiskForAssocInstanceStore[i]); Test_AssociationPhysicalLogicalDisk_Set_dependent(&assocPhysical, instanceName); result = Test_AssociationPhysicalLogicalDisk_Post(&assocPhysical, context); Test_AssociationPhysicalLogicalDisk_Destruct(&assocPhysical); if(result != MI_RESULT_OK) break; } else { result = Test_PhysicalDisk_Post(physicalDiskForAssocInstanceStore[i], context); if(result != MI_RESULT_OK) break; } } } } } return result; } void MI_CALL Test_AssociationPhysicalLogicalDisk_Load( Test_AssociationPhysicalLogicalDisk_Self** self, MI_Module_Self* selfModule, MI_Context* context) { *self = NULL; CreatePhysicalLogicalAssociations(context); MI_PostResult(context, MI_RESULT_OK); } void MI_CALL Test_AssociationPhysicalLogicalDisk_Unload( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context) { for(MI_Uint32 i=0; i < physicalDiskForAssocInstanceStore.size(); i++) { Test_PhysicalDisk_Delete(physicalDiskForAssocInstanceStore[i]); } for(MI_Uint32 i=0; i < logicalDiskForAssocInstanceStore.size(); i++) { Test_LogicalDisk_Delete(logicalDiskForAssocInstanceStore[i]); } physicalDiskForAssocInstanceStore.clear(); logicalDiskForAssocInstanceStore.clear(); MI_PostResult(context, MI_RESULT_OK); } void MI_CALL Test_AssociationPhysicalLogicalDisk_EnumerateInstances( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const MI_PropertySet* propertySet, MI_Boolean keysOnly, const MI_Filter* filter) { MI_PostResult(context, MI_RESULT_NOT_SUPPORTED); } void MI_CALL Test_AssociationPhysicalLogicalDisk_GetInstance( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_AssociationPhysicalLogicalDisk* instanceName, const MI_PropertySet* propertySet) { MI_PostResult(context, MI_RESULT_NOT_SUPPORTED); } void MI_CALL Test_AssociationPhysicalLogicalDisk_CreateInstance( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_AssociationPhysicalLogicalDisk* newInstance) { MI_PostResult(context, MI_RESULT_NOT_SUPPORTED); } void MI_CALL Test_AssociationPhysicalLogicalDisk_ModifyInstance( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_AssociationPhysicalLogicalDisk* modifiedInstance, const MI_PropertySet* propertySet) { MI_PostResult(context, MI_RESULT_NOT_SUPPORTED); } void MI_CALL Test_AssociationPhysicalLogicalDisk_DeleteInstance( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_AssociationPhysicalLogicalDisk* instanceName) { MI_PostResult(context, MI_RESULT_NOT_SUPPORTED); } void MI_CALL Test_AssociationPhysicalLogicalDisk_AssociatorInstancesantecedent( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_PhysicalDisk* instanceName, const MI_Char* resultClass, const MI_PropertySet* propertySet, MI_Boolean keysOnly, const MI_Filter* filter) { MI_PostResult(context, PostPhysicalToLogicalAssociation(context, instanceName,MI_FALSE)); } void MI_CALL Test_AssociationPhysicalLogicalDisk_AssociatorInstancesdependent( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_LogicalDisk* instanceName, const MI_Char* resultClass, const MI_PropertySet* propertySet, MI_Boolean keysOnly, const MI_Filter* filter) { MI_PostResult(context, PostLogicalToPhysicalAssociation(context, instanceName, MI_FALSE)); } void MI_CALL Test_AssociationPhysicalLogicalDisk_ReferenceInstancesantecedent( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_PhysicalDisk* instanceName, const MI_PropertySet* propertySet, MI_Boolean keysOnly, const MI_Filter* filter) { MI_PostResult(context, PostPhysicalToLogicalAssociation(context, instanceName, MI_TRUE)); } void MI_CALL Test_AssociationPhysicalLogicalDisk_ReferenceInstancesdependent( Test_AssociationPhysicalLogicalDisk_Self* self, MI_Context* context, const MI_Char* nameSpace, const MI_Char* className, const Test_LogicalDisk* instanceName, const MI_PropertySet* propertySet, MI_Boolean keysOnly, const MI_Filter* filter) { MI_PostResult(context, PostLogicalToPhysicalAssociation(context, instanceName, MI_TRUE)); }
ViewCVS 0.9.2 |