diff --git a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.cpp b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.cpp index c21173c..feed084 100644 --- a/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.cpp +++ b/Trenser.VehicleServiceSystem/Trenser.VehicleServiceSystem/datastores/DataStore.cpp @@ -38,78 +38,106 @@ bool DataStore::initialize() { return false; } - util::ensureDirectoryExists(config::file::DIRECTORY); - m_users.fileName = config::file::USER_FILE; - m_users.recordSize = sizeof(SerializedUser); - m_notifications.fileName = config::file::NOTIFICATION_FILE; - m_notifications.recordSize = sizeof(SerializedNotification); - m_services.fileName = config::file::SERVICE_FILE; - m_services.recordSize = sizeof(SerializedService); - m_comboPackages.fileName = config::file::COMBOPACKAGE_FILE; - m_comboPackages.recordSize = sizeof(SerializedComboPackage); - m_inventoryItems.fileName = config::file::INVENTORYITEM_FILE; - m_inventoryItems.recordSize = sizeof(SerializedInventoryItem); - m_serviceBookings.fileName = config::file::SERVICEBOOKING_FILE; - m_serviceBookings.recordSize = sizeof(SerializedServiceBooking); - m_jobCards.fileName = config::file::JOBCARD_FILE; - m_jobCards.recordSize = sizeof(SerializedJobCard); - m_invoices.fileName = config::file::INVOICE_FILE; - m_invoices.recordSize = sizeof(SerializedInvoice); - m_serviceManagementObservers.fileName = config::file::SERVICEMANAGEMENTOBSERVERS; - m_serviceManagementObservers.recordSize = sizeof(SerializedObserver); - m_paymentManagementObservers.fileName = config::file::PAYMENTMANAGEMENTOBSERVERS; - m_paymentManagementObservers.recordSize = sizeof(SerializedObserver); - m_inventoryManagementObservers.fileName = config::file::INVENTORYMANAGEMENTOBSERVERS; - m_inventoryManagementObservers.recordSize = sizeof(SerializedObserver); - if (!SharedMemory::createOrOpenMapping(m_users)) + if (!lockDataStore()) { + CloseHandle(m_globalMutex); + m_globalMutex = NULL; return false; } - if (!SharedMemory::createOrOpenMapping(m_notifications)) + bool success = true; + do { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_services)) + util::ensureDirectoryExists(config::file::DIRECTORY); + m_users.fileName = config::file::USER_FILE; + m_users.recordSize = sizeof(SerializedUser); + m_notifications.fileName = config::file::NOTIFICATION_FILE; + m_notifications.recordSize = sizeof(SerializedNotification); + m_services.fileName = config::file::SERVICE_FILE; + m_services.recordSize = sizeof(SerializedService); + m_comboPackages.fileName = config::file::COMBOPACKAGE_FILE; + m_comboPackages.recordSize = sizeof(SerializedComboPackage); + m_inventoryItems.fileName = config::file::INVENTORYITEM_FILE; + m_inventoryItems.recordSize = sizeof(SerializedInventoryItem); + m_serviceBookings.fileName = config::file::SERVICEBOOKING_FILE; + m_serviceBookings.recordSize = sizeof(SerializedServiceBooking); + m_jobCards.fileName = config::file::JOBCARD_FILE; + m_jobCards.recordSize = sizeof(SerializedJobCard); + m_invoices.fileName = config::file::INVOICE_FILE; + m_invoices.recordSize = sizeof(SerializedInvoice); + m_serviceManagementObservers.fileName = config::file::SERVICEMANAGEMENTOBSERVERS; + m_serviceManagementObservers.recordSize = sizeof(SerializedObserver); + m_paymentManagementObservers.fileName = config::file::PAYMENTMANAGEMENTOBSERVERS; + m_paymentManagementObservers.recordSize = sizeof(SerializedObserver); + m_inventoryManagementObservers.fileName = config::file::INVENTORYMANAGEMENTOBSERVERS; + m_inventoryManagementObservers.recordSize = sizeof(SerializedObserver); + if (!SharedMemory::createOrOpenMapping(m_users)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_notifications)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_services)) + { + success = false; + break; + } + + if (!SharedMemory::createOrOpenMapping(m_comboPackages)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_inventoryItems)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_serviceBookings)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_jobCards)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_invoices)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_payments)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_serviceManagementObservers)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_paymentManagementObservers)) + { + success = false; + break; + } + if (!SharedMemory::createOrOpenMapping(m_inventoryManagementObservers)) + { + success = false; + break; + } + } while (false); + unlockDataStore(); + if (!success) { - return false; + shutdown(); } - if (!SharedMemory::createOrOpenMapping(m_comboPackages)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_inventoryItems)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_serviceBookings)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_jobCards)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_invoices)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_payments)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_serviceManagementObservers)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_paymentManagementObservers)) - { - return false; - } - if (!SharedMemory::createOrOpenMapping(m_inventoryManagementObservers)) - { - return false; - } - return true; + return success; } /*