Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.80 KB | None | 0 0
  1. package aspectj;
  2.  
  3. import java.io.File;
  4. import java.net.Socket;
  5.  
  6. import org.w3c.jigsaw.http.Request;
  7. import org.w3c.jigsaw.http.httpd;
  8. import org.w3c.jigsaw.http.Client;
  9. import org.w3c.jigsaw.http.socket.SocketClient;
  10. import org.w3c.jigsaw.http.socket.SocketClientFactory;
  11. import org.w3c.jigsaw.https.httpsd;
  12. import org.w3c.jigsaw.admin.AdminServer;
  13.  
  14. import qos.QOSService;
  15.  
  16. public aspect RequestCapture
  17. {
  18.  
  19. private QOSService manager;
  20. private httpd webserver;
  21.  
  22. //cattura l'avvio del webserver (httpd)
  23. after(httpd server) returning: this(server) && initialization(httpd.new(..))
  24. {
  25. //per il momento considero solo httpd
  26. if(! (server instanceof httpsd) && ! (server instanceof AdminServer))
  27. {
  28. manager = new QOSService(new File("config/rules.xml"));
  29. webserver = (httpd)server;
  30. }
  31. }
  32.  
  33. //cattura ogni disconnessione
  34. after (Socket socket) : call(public void Socket.close()) &&
  35. (this(SocketClient) || this(SocketClientFactory))&&
  36. target(socket)
  37. {
  38.  
  39. manager.connectionClosed(socket);
  40. }
  41.  
  42. //cattura ogni connessione in entrata
  43. void around(Socket socket) : args (socket) && call(protected synchronized void SocketClient.bind(Socket))
  44. {
  45. if(manager.newConnection(socket))
  46. {
  47. proceed(socket);
  48. }
  49. else return;
  50. }
  51.  
  52. //cattura ogni richiesta HTTP
  53. Request around(Client client): this(client) && execution(protected Request Client.getNextRequest(..) throws * , * )
  54. {
  55. Request request = proceed(client);
  56. Object monitor = manager.newRequest(request,new File(request.getURLPath()),request.getClient().getInetAddress());
  57. if(monitor != null)
  58. {
  59. try
  60. {
  61. synchronized(monitor)
  62. {
  63. monitor.wait();
  64. }
  65. }
  66. catch (InterruptedException e)
  67. {
  68. e.printStackTrace();
  69. }
  70. }
  71. return request;
  72. }
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement