Ignore:
Timestamp:
10/01/13 15:34:32 (11 years ago)
Author:
stoda
Message:

TODO: unbind object

Location:
branches/supervisor/src/main/java/omq/supervisor
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/supervisor/src/main/java/omq/supervisor/Supervisor.java

    r92 r93  
    99        public void spawnObject(OmqSettings settings) throws Exception;
    1010
     11        public void unbindObject(OmqSettings settings) throws Exception;
     12
    1113}
  • branches/supervisor/src/main/java/omq/supervisor/SupervisorImpl.java

    r92 r93  
    4444
    4545                String reference = settings.getReference();
    46                 objectSettings.put(reference, settings);
     46
     47                if (!objectSettings.containsKey(reference)) {
     48                        objectSettings.put(reference, settings);
     49                }
    4750
    4851                int minObjects = settings.getMinNumberObjects();
     
    6972                }
    7073
     74        }
     75
     76        @Override
     77        public void unbindObject(OmqSettings settings) throws Exception {
     78                String reference = settings.getReference();
     79
     80                int minObjects = settings.getMinNumberObjects();
     81
     82                Channel channel = getBroker().getNewChannel();
     83
     84                int numObjects = 0;
     85                try {
     86                        DeclareOk dok = channel.queueDeclarePassive(reference);
     87                        numObjects = dok.getConsumerCount();
     88                        channel.close();
     89
     90                        for (RemoteBroker broker : brokers) {
     91                                if (broker.hasObject(reference) && (numObjects - 1) >= minObjects) {
     92                                        broker.deleteObject(reference);
     93                                }
     94                        }
     95
     96                } catch (Exception io) {
     97                        // The queue doesn't exist & the channel has been closed
     98                }
     99
     100                for (RemoteBroker broker : brokers) {
     101                        if (!broker.hasObject(reference) && minObjects >= numObjects) {
     102                                broker.spawnObject(reference, settings.getClassName(), settings.getProps());
     103                                numObjects++;
     104                                if (minObjects >= numObjects) {
     105                                        break;
     106                                }
     107                        }
     108                }
    71109        }
    72110
  • branches/supervisor/src/main/java/omq/supervisor/SupervisorThread.java

    r92 r93  
    6161                        // pregunta a tots i qui no té l'objecte li poses
    6262                } else if (numMessages < minMessages && minObjects > numConsumers) {
     63                        supervisor.unbindObject(settings);
    6364                        // delete:
    6465                        // pregunta a tots i qui té l'objecte li treus
Note: See TracChangeset for help on using the changeset viewer.