Changeset 3510

Show
Ignore:
Timestamp:
01/14/10 00:37:20 (7 months ago)
Author:
Maverick
Message:

A number of changes to the code to make sure any file handlers are properly closed after use. This was necessary when TWCore kept crashing after a while for having "Too many files open". See ticket #459.

Location:
trunk/twcore/src/twcore
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • trunk/twcore/src/twcore/bots/bouncerbot/bouncerbot.java

    r3400 r3510  
    133133        + c.get( Calendar.MINUTE ) + ":" + c.get( Calendar.SECOND ) + " - "; 
    134134        try{ 
    135             PrintWriter out = new PrintWriter( new FileWriter( "bouncerbot.log" )); 
     135                FileWriter writer = new FileWriter( "bouncerbot.log" ); 
     136            PrintWriter out = new PrintWriter( writer ); 
    136137            m_log.add( timestamp + event ); 
    137138            for( Iterator<String> i = m_log.iterator(); i.hasNext(); ){ 
     
    139140            } 
    140141            out.close(); 
     142            writer.close(); 
    141143        }catch(Exception e){ 
    142144            Tools.printStackTrace( e ); 
  • trunk/twcore/src/twcore/bots/robohelp/robohelp.java

    r3383 r3510  
    209209        rawData = new TreeMap<String, String>(); 
    210210        try { 
    211             BufferedReader in = new BufferedReader(new FileReader( m_botAction.getDataFile( "HelpResponses.txt" ))); 
     211                FileReader reader = new FileReader( m_botAction.getDataFile( "HelpResponses.txt" ) ); 
     212            BufferedReader in = new BufferedReader( reader ); 
    212213            String line; 
     214             
    213215            int i = 0; 
    214216            do{ 
     
    225227                        } 
    226228                    } 
    227         } catch( Exception e ){ 
    228             System.out.println( "Error in HelpResponses.txt near: Line " + i ); 
    229         } 
    230         i++; 
     229                        } catch( Exception e ){ 
     230                            System.out.println( "Error in HelpResponses.txt near: Line " + i ); 
     231                        } 
     232                        i++; 
    231233            } while( line!=null ); 
    232234 
    233             if( in != null ){ 
    234                 in.close(); 
    235             } 
     235            in.close(); 
     236            reader.close(); 
    236237        } catch( IOException e ){ 
    237238            Tools.printStackTrace( e ); 
  • trunk/twcore/src/twcore/core/BotSettings.java

    r3245 r3510  
    5353            String          value; 
    5454            int             equalsIndex; 
    55             BufferedReader  in = new BufferedReader( new FileReader( file )); 
     55            FileReader fileReader = new FileReader( file ); 
     56            BufferedReader  in = new BufferedReader( fileReader); 
    5657 
    5758            while( (line = in.readLine()) != null ){ 
     
    7879 
    7980            in.close(); 
     81            fileReader.close(); 
    8082        } catch(FileNotFoundException fnfe) { 
    8183            Tools.printLog( "BotSettings configuration file ("+file.getName()+") not found: " + fnfe.getMessage()); 
     
    248250            String          value; 
    249251            int             equalsIndex; 
    250             BufferedReader  in = new BufferedReader( new FileReader( m_fileName )); 
    251             PrintWriter     out = new PrintWriter( new BufferedWriter ( new FileWriter(m_fileName + ".tmp"))); 
     252            FileReader reader = new FileReader( m_fileName ); 
     253            BufferedReader  in = new BufferedReader( reader ); 
     254            FileWriter writer = new FileWriter(m_fileName + ".tmp"); 
     255            BufferedWriter bufferWriter = new BufferedWriter( writer ); 
     256            PrintWriter     out = new PrintWriter( bufferWriter ); 
    252257            HashSet <String> existingKeys = new HashSet<String>(); 
    253258 
     
    283288            } 
    284289            in.close(); 
     290            reader.close(); 
     291             
    285292            out.close(); 
     293            bufferWriter.close(); 
     294            writer.close(); 
    286295 
    287296            File f = new File(m_fileName); 
  • trunk/twcore/src/twcore/core/HubBot.java

    r3402 r3510  
    132132    private void autoSpawnBots(boolean checkAlreadySpawned) { 
    133133        try { 
    134             BufferedReader reader = new BufferedReader( new FileReader( m_botAction.getCoreCfg( "autoload.cfg" ) ) ); 
     134                FileReader reader = new FileReader( m_botAction.getCoreCfg( "autoload.cfg" ) ); 
     135            BufferedReader buffer = new BufferedReader( reader ); 
    135136            LinkedHashMap<String, Integer> autoLoads = new LinkedHashMap<String, Integer>(); 
    136137            // using LinkedHashMap implementation so the order of autoload.cfg is used when spawning bots 
     
    138139            String line = ""; 
    139140             
    140             while( (line = reader.readLine()) != null ){ 
     141            while( (line = buffer.readLine()) != null ){ 
    141142                if( line == null || line.length() == 0 ){ 
    142143                    continue; 
     
    170171                } 
    171172            } 
     173             
     174            buffer.close(); 
     175            reader.close(); 
    172176        } catch( FileNotFoundException fnfe ){ 
    173177            Tools.printStackTrace( "File not found: autoload.cfg  ;  ", fnfe ); 
  • trunk/twcore/src/twcore/core/net/GamePacketInterpreter.java

    r2883 r3510  
    526526        try { 
    527527            fileName = message.readString( 1, 16 ); 
    528             BufferedWriter fileWriter = new BufferedWriter( new FileWriter( 
    529             m_session.getBotAction().getDataFile( fileName ))); 
    530             fileWriter.write( message.readString( 17, message.size() - 17 ) ); 
    531             fileWriter.close(); 
     528            FileWriter writer = new FileWriter(m_session.getBotAction().getDataFile( fileName )); 
     529            BufferedWriter buffer = new BufferedWriter( writer ); 
     530            buffer.write( message.readString( 17, message.size() - 17 ) ); 
     531            buffer.close(); 
     532            writer.close(); 
     533             
    532534            if( m_requester.check( EventRequester.FILE_ARRIVED )){ 
    533535                ByteArray       fileNameArray = new ByteArray( 16 ); 
  • trunk/twcore/src/twcore/core/OperatorList.java

    r3384 r3510  
    170170                // Read through the file and add operators 
    171171                try { 
    172                     BufferedReader br = new BufferedReader(new FileReader(data)); 
     172                        FileReader reader = new FileReader(data); 
     173                    BufferedReader buffer = new BufferedReader(reader); 
    173174                    String line = null, name = null; 
    174175                    boolean in_area = false; 
    175176 
    176                     while (( line = br.readLine()) != null) { 
     177                    while (( line = buffer.readLine()) != null) { 
    177178 
    178179                        if( line.startsWith(" ") || 
     
    226227                        } 
    227228                    } 
     229                     
     230                    buffer.close(); 
     231                    reader.close(); 
    228232 
    229233                } catch(FileNotFoundException fnfe) { 
  • trunk/twcore/src/twcore/core/Session.java

    r3477 r3510  
    3434    private DatagramSocket  m_socket; 
    3535    private PrintWriter         m_chatLog; 
     36    private FileWriter          m_chatLogWriter; 
    3637    private CoreData        m_coreData; 
    3738    private String          m_password; 
     
    7172        m_timer = new Timer(name+"-Timer"); 
    7273        m_chatLog = null; 
     74        m_chatLogWriter = null; 
    7375        m_ipAddress = m_coreData.getServerName(); 
    7476        m_serverPort = m_coreData.getServerPort(); 
     
    8991        m_timer = new Timer(name+"-Timer"); 
    9092        m_chatLog = null; 
     93        m_chatLogWriter = null; 
    9194        m_ipAddress = altIP; 
    9295        m_sysopPassword = altSysop; 
     
    166169                        String filename = m_coreData.getGeneralSettings().getString("Core Location"); 
    167170                        filename += "/logs/"+ botName + ".log"; 
    168                         m_chatLog = new PrintWriter(new FileWriter(filename, true)); 
     171                        m_chatLogWriter = new FileWriter(filename, true); 
     172                        m_chatLog = new PrintWriter( m_chatLogWriter ); 
    169173                } 
    170174 
     
    270274                if(m_chatLog != null) 
    271275                { 
    272                 m_chatLog.flush(); 
    273                 m_chatLog.close(); 
     276                try { 
     277                        m_chatLog.flush(); 
     278                m_chatLog.close(); 
     279                                m_chatLogWriter.close(); 
     280                        } catch (IOException e) { 
     281                                e.printStackTrace(); 
     282                        } 
    274283                } 
    275284 
  • trunk/twcore/src/twcore/core/util/Spy.java

    r2997 r3510  
    77import java.io.BufferedReader; 
    88import java.io.FileReader; 
     9import java.io.IOException; 
    910import java.util.ArrayList; 
    1011 
     
    4950     */ 
    5051    public void loadConfig () {  
    51         BufferedReader sr; 
     52        FileReader reader = null; 
     53        BufferedReader sr = null; 
    5254        String line; 
    5355        boolean loadWords = true; 
     56         
    5457        try { 
    55                 sr = new BufferedReader(new FileReader(m_botAction.getCoreCfg("racism.cfg"))); 
     58                reader = new FileReader(m_botAction.getCoreCfg("racism.cfg")); 
     59                sr = new BufferedReader(reader); 
     60                 
    5661                while((line = sr.readLine()) != null) 
    5762                { 
     
    6873                   } 
    6974                } 
    70                 sr.close(); 
    71                 sr = null; 
    72         } 
    73                 catch (Exception e) { 
    74                 sr = null; 
     75                 
     76        } catch (Exception e) { 
     77                 
     78                 
     79        } finally { 
     80                try { 
     81                        if(sr != null) 
     82                                sr.close(); 
     83                        if(reader != null) 
     84                                reader.close(); 
     85                } catch(IOException ioe) { 
     86                        Tools.printStackTrace("Unable to close file handlers: "+ioe.getMessage(), ioe); 
     87                } 
    7588        } 
    7689         
  • trunk/twcore/src/twcore/core/util/Tools.java

    r3009 r3510  
    185185            if( exceptionLogFilePath == null ) return; 
    186186            try{ 
    187                 PrintWriter out = new PrintWriter( new BufferedWriter( new FileWriter( exceptionLogFilePath, true ))); 
     187                FileWriter fileWriter = new FileWriter( exceptionLogFilePath, true ); 
     188                BufferedWriter buffer = new BufferedWriter( fileWriter ); 
     189                PrintWriter out = new PrintWriter( buffer ); 
    188190                out.println(); 
    189191                out.println( "-----------------" ); 
     
    191193                out.println(); 
    192194                e.printStackTrace( out ); 
     195                 
    193196                out.close(); 
     197                buffer.close(); 
     198                fileWriter.close(); 
    194199            } catch( IOException ioe ){ 
    195200                ioe.printStackTrace(); 
     
    213218            if( exceptionLogFilePath == null ) return; 
    214219            try{ 
    215                 PrintWriter out = new PrintWriter( new BufferedWriter( new FileWriter( exceptionLogFilePath, true ))); 
     220                FileWriter writer = new FileWriter( exceptionLogFilePath, true ); 
     221                BufferedWriter bufferWriter = new BufferedWriter( writer ); 
     222                PrintWriter out = new PrintWriter( bufferWriter ); 
     223                 
     224                 
    216225                out.println(); 
    217226                out.println( "-----------------" ); 
     
    219228                out.println(); 
    220229                e.printStackTrace( out ); 
     230                 
     231                 
    221232                out.close(); 
     233                bufferWriter.close(); 
     234                writer.close(); 
    222235            } catch( IOException ioe ){ 
    223236                ioe.printStackTrace();