Research Breakthrough Possible @S-Logix pro@slogix.in

Office Address

Social List

How to Send Specific Number of Tuples from a Sensor in IFogSim?

Send Specific Number of Tuples from a Sensor in IFogSim

Condition for Send Specific Number of Tuples from a Sensor in IFogSim

  • Description:
    To send a specific number of tuples from a sensor, implement a loop that iterates up to the desired tuple count and ensure a counter variable tracks the number of tuples transmitted. Within the loop, create a tuple using attributes such as CPU length, network length, source, and destination modules, then invoke the transmission logic to send each tuple. Incorporate a condition that checks the current count against the specified limit to control tuple generation and avoid exceeding the required number. Ensure proper configuration of the application model, including edges and modules, to establish the relationships between the sensor and its destination modules.
Sample Code
  • package fogsamples;
    import org.cloudbus.cloudsim.*;
    import org.fog.application.AppEdge;
    import org.fog.application.Application;
    import org.fog.entities.Tuple;
    import org.fog.utils.FogUtils;
    import java.util.List;
    import org.cloudbus.cloudsim.core.CloudSim;
    public class SensorTupleTransmission {
     private static String appId = "App1";
     private static String sensorName = "Sensor1";
     private static int userId = 1;
     private static String tupleType = "EEG";
     private static int numOfMaxTuples = 10;
     public static void main(String[] args) {
      try {
       System.out.println("Starting Simulation...");
       SensorDevice sensor = new SensorDevice();
         // Transmit multiple tuples
       for (int i = 0; i < numOfMaxTuples; i++) {
          sensor.transmit();
       }
      } catch (Exception e) {
       e.printStackTrace();
      }
     }
     static class SensorDevice {
      private int tuplesCount = 0; // Tracks the number of transmitted tuples
      public void transmit() {
       System.out.print(CloudSim.clock() + ": ");
       if (tuplesCount < numOfMaxTuples) {
        AppEdge _edge = null;
         // Simulate fetching the application and its edges
         Application app = getApp(); // Mock application setup for this example
         if (app == null) {
          System.out.println("Error: Application is not initialized.");
          return;
         }
         List edges = app.getEdges();
         if (edges == null || edges.isEmpty()) {
          System.out.println("Error: No edges found in the application.");
          return;
         }
         // Find the edge matching the tuple type
         for (AppEdge edge : edges) {
          if (edge.getSource().equals(getTupleType())) {
           _edge = edge;
           break;
          }
         }
         // Null check for the edge
         if (_edge == null) {
          System.out.println("Error: No matching edge found for tuple type: " + getTupleType());
          return;
         }
         // Tuple creation
         long cpuLength = (long) _edge.getTupleCpuLength();
         long nwLength = (long) _edge.getTupleNwLength();
         Tuple tuple = new Tuple(appId, FogUtils.generateTupleId(), Tuple.UP, cpuLength, 1, nwLength,
          1000, new UtilizationModelFull(), new UtilizationModelFull(), new UtilizationModelFull());
         tuple.setUserId(userId);
         tuple.setTupleType(getTupleType());
         tuple.setDestModuleName(_edge.getDestination());
         tuple.setSrcModuleName(sensorName);
         tuplesCount++;
         System.out.println("Tuple " + tuplesCount + " created and transmitted successfully!");
       } else {
        System.out.println("Maximum number of tuples reached.");
       }
      }
     }
     private static Application getApp() {
      Application application = Application.createApplication(appId, userId);
      // Add modules and edges
      application.addAppModule("client", 10);
      application.addAppModule("processing", 10);
      application.addAppEdge("EEG", "client", 2000, 500, "EEG", Tuple.UP, AppEdge.SENSOR);
      application.addAppEdge("client", "processing", 3000, 500, "_PROCESSED", Tuple.UP, AppEdge.MODULE);
      application.addAppEdge("processing", "client", 2000, 500, "RESULT", Tuple.DOWN, AppEdge.MODULE);
      return application;
     }
     private static String getTupleType() {
      return tupleType;
     }
    }
ScreenShots
  • Send Specific Number of Tuples from a Sensor