All pastes #26735 Raw Edit

Anonymous

public java v1 · immutable
#26735 ·published 2005-10-26 12:32 UTC
rendered paste body
package net.sf.l2j.logserver;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class LogServer{    static LogSocket _sock;    static FileWriter eventSave = null;    static FileWriter chatSave = null;    static FileWriter systemSave = null;        public static void main(String arg[])    {        _sock = new LogSocket("127.0.0.1",2007);        _sock.startServer();                _sock.accept();        String worldId = _sock.readS();        System.out.println("[LogServer] world "+worldId+" connected");                String date = (new SimpleDateFormat("yy_MM_dd")).format(new Date());        new File("log/logd").mkdirs();        File fileEvent  = new File("log/logd/"+date+"_logd"+".txt");        File fileChat   = new File("log/logd/"+date+"_chat"+".txt");        File fileSystem = new File("log/logd/"+date+"_system"+".txt");                try        {            eventSave  = new FileWriter(fileEvent, true);            chatSave   = new FileWriter(fileChat, true);            systemSave = new FileWriter(fileSystem, true);        }        catch(IOException e)        {            System.out.println("Error while opening log file: "+e);        }                while(true)        {            int id = _sock.readD();            String msg = _sock.readS();                        if(msg == null)            {                System.out.println("[LogServer] : world "+worldId+" disconnected by crash!");                shutdown(1);            }            else if(id == 3 && msg.equals("quit"))            {                System.out.println("[LogServer] : world "+worldId+" requested shutdown, closing connection");                shutdown(0);            }                                    try            {                switch(id)                {                    case 1:                        eventSave.write(msg+"\r\n");                        eventSave.flush();                        break;                    case 2:                        chatSave.write(msg+"\r\n");                        chatSave.flush();                        break;                    case 3:                        systemSave.write(msg+"\r\n");                        systemSave.flush();                        System.out.println("[SYSTEM]: "+msg);                        break;                    default :                        System.out.println("[WARNING]: unknow message type "+id+", msg: "+msg);                }            }            catch(IOException e)            {                System.out.println("[LogServer] : error writing to log file: "+e);            }        }    }        static void shutdown(int code)    {        try        {            eventSave.flush();            eventSave.close();        }        catch(IOException e){}        System.exit(code);    }}package net.sf.l2j.logserver;import net.sf.l2j.Config;import net.sf.l2j.gameserver.model.L2PcInstance;public class LogServerClient{    static LogServerClient _instance;    static LogSocket _sock;    private static boolean connected = false;    public LogServerClient()    {        _sock = new LogSocket("127.0.0.1",2007);                if(_sock.connect())        {            _sock.writeS("wrld_"+Config.GAMESERVER_HOSTNAME+":"+Config.GAME_SERVER_LOGIN_PORT);            connected = true;        }    }        public void shutdown()    {        if(connected)        {            _sock.writeD(3);            _sock.writeS("quit");        }    }        public static LogServerClient getInstance()    {        if(_instance == null)            _instance = new LogServerClient();        return _instance;    }        public synchronized void addEvent(int logid, L2PcInstance actor, String data)    {        if(connected)        {            LogEntry entry = new LogEntry(logid,actor,data);            _sock.writeD(1);            _sock.writeS(entry.makeRecord());        }    }    public synchronized void addChat(int type, L2PcInstance actor, String msg)    {        if(connected)        {            _sock.writeD(2);            _sock.writeS(type+","+actor.getName()+","+msg);        }    }    public synchronized void addSystem(int type, String msg)    {        if(connected)        {            _sock.writeD(3);            _sock.writeS(type+","+msg);        }    }        private class LogEntry    {        private int _logid;        private String _actor;        private int _target=0;        private String _data;        private long timestamp;        public LogEntry(int logid, L2PcInstance actor, String data)        {            try            {                _logid = logid;                _actor = actor.getName();                _data = data;                            if(actor.getTarget() != null)                    _target = actor.getTarget().getObjectId();            }            catch(NullPointerException e)            {                System.out.println("Error while loggin event, nullpointer at: "+e);            }                        timestamp = System.currentTimeMillis();        }                public String makeRecord()        {            String record="";                        record += timestamp+",";            record += _logid+",";            record += _actor+",";            record += _target+",";            record += _data;                        return record;        }                public int getLogId()        {            return _logid;        }                public int getTarget()        {            return _target;        }                public String getActor()        {            return _actor;        }                public String getData()        {            return _data;        }                public long getTimestamp()        {            return timestamp;        }    }}package net.sf.l2j.logserver;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * LogServer communication socket implementation */public class LogSocket{    private Socket _clientSocket;    private ServerSocket _serverSocket;    private DataInputStream _in;    private DataOutputStream _out;    private String _host;    private int _port;        public LogSocket(String hostName, int portNumber)    {        _host = hostName;        _port = portNumber;    }        public boolean startServer()    {        try        {            _serverSocket = new ServerSocket(_port);        }        catch(IOException e)        {            System.out.println("[LogSocket] error while creating server socket: "+e);            return false;        }        return true;    }        public boolean connect()    {        try        {            _clientSocket = new Socket(_host,_port);            _out = new DataOutputStream(_clientSocket.getOutputStream());        }        catch(Exception e)        {            System.out.println("[LogSocket] error while creating client socket: "+e);            return false;        }        System.out.println("[LogSocket] connected to logd at "+_host+" to port "+_port);        return true;    }        /**     * Accept conenction from Game Server     * Call will be blocked until connection     */    public void accept()    {        try        {            _clientSocket = _serverSocket.accept();            _in = new DataInputStream(_clientSocket.getInputStream());        }        catch(Exception e)        {                    }    }    public int readD()    {        try        {            int id = _in.readInt();            return id;        }        catch(IOException e)        {            System.out.println("[LogSocket] error reading from gameserver, server closed? "+e);            return 0;        }    }        public String readS()    {        try        {            String msg = _in.readUTF();            return msg;        }        catch(IOException e)        {            System.out.println("[LogSocket] error reading from gameserver, server closed? "+e);            return null;        }    }        public void writeD(int id)    {        try        {            _out.writeInt(id);        }        catch(IOException e)        {            System.out.println("[LogSocket] error writing to logd, server closed? "+e);        }            }        public void writeS(String msg)    {        try        {            _out.writeUTF(msg);        }        catch(IOException e)        {            System.out.println("[LogSocket] error writing to logd, server closed? "+e);        }    }}