Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package aspectj;
- import java.io.File;
- import java.net.Socket;
- import org.w3c.jigsaw.http.Request;
- import org.w3c.jigsaw.http.httpd;
- import org.w3c.jigsaw.http.Client;
- import org.w3c.jigsaw.http.socket.SocketClient;
- import org.w3c.jigsaw.http.socket.SocketClientFactory;
- import org.w3c.jigsaw.https.httpsd;
- import org.w3c.jigsaw.admin.AdminServer;
- import qos.QOSService;
- public aspect RequestCapture
- {
- private QOSService manager;
- private httpd webserver;
- //cattura l'avvio del webserver (httpd)
- after(httpd server) returning: this(server) && initialization(httpd.new(..))
- {
- //per il momento considero solo httpd
- if(! (server instanceof httpsd) && ! (server instanceof AdminServer))
- {
- manager = new QOSService(new File("config/rules.xml"));
- webserver = (httpd)server;
- }
- }
- //cattura ogni disconnessione
- after (Socket socket) : call(public void Socket.close()) &&
- (this(SocketClient) || this(SocketClientFactory))&&
- target(socket)
- {
- manager.connectionClosed(socket);
- }
- //cattura ogni connessione in entrata
- void around(Socket socket) : args (socket) && call(protected synchronized void SocketClient.bind(Socket))
- {
- if(manager.newConnection(socket))
- {
- proceed(socket);
- }
- else return;
- }
- //cattura ogni richiesta HTTP
- Request around(Client client): this(client) && execution(protected Request Client.getNextRequest(..) throws * , * )
- {
- Request request = proceed(client);
- Object monitor = manager.newRequest(request,new File(request.getURLPath()),request.getClient().getInetAddress());
- if(monitor != null)
- {
- try
- {
- synchronized(monitor)
- {
- monitor.wait();
- }
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
- return request;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement