Changeset 1525


Ignore:
Timestamp:
02/25/2012 08:17:11 PM (6 years ago)
Author:
michael.kriegel
Message:

fixed a deadlock bug

Location:
libs/cmion/cmionMain/src/cmion
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • libs/cmion/cmionMain/src/cmion/level3/fatima/FAtiMAListenerThread.java

    r1444 r1525  
    5757        private String agentRole; 
    5858         
     59        private volatile boolean initialised; 
    5960         
    6061        /** create a new FAtiMAListenerThread */ 
     
    6465                this.connector = connector; 
    6566                messageCounter = 0;      
    66         } 
    67          
    68          
     67                initialised = false; 
     68        } 
     69         
     70        @Override  
     71        public boolean send(String msg)  
     72        { 
     73                if (initialised) 
     74                        return super.send(msg); 
     75                else return false; 
     76        } 
     77                 
    6978        /** this method processes messages that FAtiMA has sent */ 
    7079        @Override 
     
    98107                        connector.notifyAgentConnected(agentName,properties); 
    99108                         
    100                         this.send("OK"); 
    101                          
     109                        super.send("OK"); 
     110                         
     111                        initialised = true; 
    102112                        // if agent should be sleeping, tell it to pause 
    103113                        if (connector.isMindSleeping()) 
  • libs/cmion/cmionMain/src/cmion/util/SocketListener.java

    r423 r1525  
    4949    protected boolean stopped = false; 
    5050 
    51     public SocketListener() { 
    52     } 
    53      
     51    Object sendLock; 
     52        
    5453    /** Creates new SocketListener */ 
    5554    public SocketListener(Socket socket) { 
    5655        super("SocketListener"); 
    5756        this.socket = socket; 
     57        sendLock = new Object(); 
    5858    } 
    5959     
     
    128128    } 
    129129     
    130         public synchronized boolean send(String msg) { 
    131                 try { 
    132                         String aux = msg + "\n"; 
    133                         OutputStream out = this.socket.getOutputStream(); 
    134                         out.write(aux.getBytes("UTF-8")); 
    135                         out.flush(); 
    136                         return true; 
    137                 } 
    138                 catch (IOException e) { 
    139                         e.printStackTrace(); 
    140                         this.stopped = true; 
    141                         return false; 
     130        public boolean send(String msg) { 
     131                synchronized(sendLock) 
     132                { 
     133                        try { 
     134                                String aux = msg + "\n"; 
     135                                OutputStream out = this.socket.getOutputStream(); 
     136                                out.write(aux.getBytes("UTF-8")); 
     137                                out.flush(); 
     138                                return true; 
     139                        } 
     140                        catch (IOException e) { 
     141                                e.printStackTrace(); 
     142                                this.stopped = true; 
     143                                return false; 
     144                        } 
    142145                } 
    143146        } 
Note: See TracChangeset for help on using the changeset viewer.