Advertisement
bobingbong

consumer.c

May 14th, 2024 (edited)
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.76 KB | Source Code | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. #define MAX_ORDERS 100
  6.  
  7. typedef enum {
  8.     BURGER,
  9.     FRIES,
  10.     DRINK,
  11.     SALAD
  12. } OrderType;
  13.  
  14. typedef struct {
  15.     int number;
  16.     OrderType type;
  17.     int preparationTime; // in seconds
  18.     int status; // 0 for preparing, 1 for serving, -1 for empty slot
  19. } Order;
  20.  
  21. int main() {
  22.     HANDLE hMapFile;
  23.     Order *orders;
  24.  
  25.     // Open the existing shared memory created by the producer
  26.     hMapFile = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "SharedMemory");
  27.  
  28.     if (hMapFile == NULL) {
  29.         perror("OpenFileMapping");
  30.         exit(EXIT_FAILURE);
  31.     }
  32.  
  33.     orders = (Order *)MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS, 0, 0, MAX_ORDERS * sizeof(Order));
  34.  
  35.     if (orders == NULL) {
  36.         perror("MapViewOfFile");
  37.         CloseHandle(hMapFile);
  38.         exit(EXIT_FAILURE);
  39.     }
  40.  
  41.     while (1) {
  42.         system("cls"); // Clear screen for updated display on Windows (use "clear" for Unix-like systems)
  43.         printf("Orders in Preparation:\n");
  44.         for (int i = 0; i < MAX_ORDERS; i++) {
  45.             if (orders[i].status == 0) {
  46.                 printf("Order %d (Type: %d) - Preparing...\n", orders[i].number, orders[i].type);
  47.                 orders[i].status = 1; // Change status to serving
  48.                 Sleep(orders[i].preparationTime * 1000); // Simulate preparation time in milliseconds
  49.                 printf("Order %d (Type: %d) - Ready to Serve\n", orders[i].number, orders[i].type);
  50.                 orders[i].status = -1; // Mark order as served (-1 indicates empty slot)
  51.             }
  52.         }
  53.         Sleep(1000); // Refresh display every second (1 second = 1000 milliseconds)
  54.     }
  55.  
  56.     UnmapViewOfFile(orders);
  57.     CloseHandle(hMapFile);
  58.  
  59.     return 0;
  60. }
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement