1 package org.opensync.schedule;
2
3 import java.io.*;
4 import java.net.*;
5 import java.util.*;
6
7 /***
8 * This class represents the service done when a http request is received
9 *
10 * @version 1.0
11 * @author SOFTMED
12 *
13 */
14
15 public class HTTPSchedulerService extends Thread {
16 /***
17 * The socket
18 *
19 */
20 protected Socket socket = null;
21 /***
22 * The scheduler object
23 *
24 */
25 protected Scheduler scheduler = null;
26
27 /***
28 * Constrcut the HTTPSchedulerService
29 *
30 * @param socket the socket
31 * @param scheduler the scheduler
32 */
33 public HTTPSchedulerService(Socket socket,Scheduler scheduler) {
34 this.socket = socket;
35 this.scheduler = scheduler;
36 }
37 /***
38 * Run the service
39 *
40 */
41 public void run(){
42 DataOutputStream out = null;
43 try{
44 BufferedReader in = new BufferedReader(
45 new InputStreamReader(socket.getInputStream())
46 );
47 out = new DataOutputStream(socket.getOutputStream());
48
49 String line = in.readLine();
50 StringTokenizer tokens = new StringTokenizer(line,"?");
51 boolean ok = false;
52 if(tokens.hasMoreTokens()){
53 tokens.nextToken();
54 if(tokens.hasMoreTokens()){
55 StringTokenizer params = new StringTokenizer(tokens.nextToken(),"=");
56 String param = params.nextToken();
57 if(param.equals("task")){
58 StringTokenizer value = new StringTokenizer(params.nextToken()," ");
59 String task = value.nextToken();
60 String [] req = new String[tokens.countTokens()];
61 ok = true;
62 scheduler.execute(task);
63 out.writeBytes(
64 "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
65 "<response>Task " + task + " started</response>"
66 );
67 }
68 }
69 }
70 if(!ok){
71 out.writeBytes(
72 "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
73 "<response>Request not understood</response>"
74 );
75 }
76 out.close();
77 socket.close();
78 }
79 catch(Exception e){
80 if(out != null){
81 try {
82 out.writeBytes(
83 "<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
84 "<response>" + e.getMessage() + "</response>"
85 );
86 }
87 catch (Exception ex) {
88 ex.printStackTrace();
89 }
90 }
91 e.printStackTrace();
92 }
93 finally{
94 if(out != null){
95 try {
96 out.close();
97 }
98 catch (Exception ex) {
99 ex.printStackTrace();
100 }
101 }
102 if(socket != null){
103 try {
104 socket.close();
105 }
106 catch (Exception ex) {
107 ex.printStackTrace();
108 }
109 }
110 }
111 }
112 }