]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/ses.js
checkout, maybe
[working/Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / ses.js
1 sdump('D_TRACE','Loading ses.js\n');
2
3 //////////////////////////////////////////////////////////////////////////////
4 // Sessions, Requests, Methods, Oh My
5
6 function handle_session(app) {
7         //if( ses == null || ! AppSession.transport_handle.connected() ) {
8         sdump('D_TRACE','Calling new AppSession : ' + timer_elapsed('cat') + '\n');
9                 ses = new AppSession( app );
10                 sdump('D_SES', 'after AppSession ses = ' + (ses.state) + '\n' );
11                 if( ! ses.connect() ) { 
12                         sdump('D_SES', 'after ses.connect ses = ' + js2JSON(ses.state) + '\n' );
13                         throw( "Connect timed out!" ); 
14                 }
15                 sdump('D_SES', 'after ses.connect ses = ' + js2JSON(ses.state) + '\n' );
16         sdump('D_TRACE','Finished new AppSession : ' + timer_elapsed('cat') + '\n');
17         //}
18 }
19
20 function handle_request(ses,meth) {
21
22
23         sdump('D_TRACE','Entering handle_request : ' + timer_elapsed('cat') + '\n');
24         sdump('D_SES','Calling new AppRequest : ' + timer_elapsed('cat') + '\n');
25
26         var req = new AppRequest( ses, meth );
27
28         sdump('D_SES','Finished new AppRequest : ' + timer_elapsed('cat') + '\n');
29         sdump('D_SES','Calling new req.make_request() : ' + timer_elapsed('cat') + '\n');
30
31         req.make_request();
32
33         sdump('D_SES', 'after req.make_request ses = ' + js2JSON(ses.state) + '\n' );
34         sdump('D_SES','Finished new req.make_request() : ' + timer_elapsed('cat') + '\n');
35
36         var result = new Array(); var resp;
37
38         sdump('D_SES','Looping on req.recv and resp.getContent(): ' + timer_elapsed('cat') + '\n');
39
40         while (resp = req.recv( 30000 ) ) {
41                 sdump('D_SES', '\tafter req.recv ses = ' + js2JSON(ses.state) + ' : req.is_complete = ' + req.is_complete + '\n' );
42                 var r = resp.getContent();
43                 if (r != 'keepalive') {
44                         result.push( r );
45                 }
46         }
47
48         sdump('D_SES','Finished with req.recv and resp.getContent(): ' + timer_elapsed('cat') + '\n');
49
50         if (result.length == 0) {
51                 if ( req.is_complete ) {
52                         result.push("NO RESPONSE, REQUEST COMPLETE");
53                         sdump('D_SES',"NO RESPONSE, REQUEST COMPLETE\n");
54                 } else {
55                         result.push("NO RESPONSE, REQUEST TIMEOUT");
56                         sdump('D_SES',"NO RESPONSE, REQUEST TIMEOUT\n");
57                 }
58         }
59         req.finish();
60         sdump('D_SES', 'after req.finish() ses = ' + js2JSON(ses.state) + '\n' );
61         sdump('D_SES','Exiting handle_request : ' + timer_elapsed('cat') + '\n');
62         return result;  
63 }
64
65
66
67
68 function user_request(app,name,params) {
69         sdump('D_SES','=-=-=-=-= user_request:\n');
70         sdump('D_SES','request '+(app)+' '+(name)+' '+js2JSON(params)+'\n');
71         var request = new RemoteRequest( app, name );
72         for(var index in params) {
73                 request.addParam(params[index]);
74         }
75         request.send(true);
76         var result = [];
77         result.push( request.getResultObject() );
78         //sdump('D_SES','=-=-= result = ' + js2JSON(result[0]) + '\n');
79         return result;
80 }
81
82 function user_async_request(app,name,params,func) {
83         sdump('D_SES','=-=-=-=-= user_async_request:\n');
84         sdump('D_SES','request '+(app)+' '+(name)+' '+js2JSON(params)+ '\n');
85         var request = new RemoteRequest( app, name );
86         for(var index in params) {
87                 request.addParam(params[index]);
88         }
89         request.setCompleteCallback(func);
90         request.send();
91 }
92
93 function sample_func(request) {
94         var result = [];
95         result.push( request.getResultObject() );
96         /* This callback would be called within the code for the Request object, so you would never see
97         a return value.  Instead, you should _do_ something with the data. */
98         return result;
99 }
100
101 function _user_request(app,name,params) {
102
103         sdump('D_SES','Entering user_request : ' + timer_elapsed('cat') + '\n');
104         sdump('D_SES','app='+app+' name='+name+'\n');
105         try {
106
107                 handle_session(app);
108
109                 var meth;
110                 if (name) {
111                         meth = new oilsMethod( name, params );
112                 } else {
113                         throw('No method name to execute.');
114                 }
115
116                 var result = handle_request(ses,meth);
117                 
118                 if (ses) { 
119                         sdump('D_SES','ses.disconnect\n'); 
120                         ses.disconnect(); 
121                         sdump('D_SES', 'after ses.disconnect() ses = ' + js2JSON(ses.state) + '\n' );
122                         ses.destroy();
123                         sdump('D_SES', 'after ses.destroy() ses = ' + js2JSON(ses.state) + '\n' );
124                 }
125
126                 sdump('D_SES','Exiting user_request : ' + timer_elapsed('cat') + '\n');
127                 return result;
128
129         } catch( E ) { 
130                 sdump('D_SES','Exiting user_request : ' + timer_elapsed('cat') + '\n');
131                 alert( pretty_print( js2JSON(E) ) ); 
132                 return null;
133         }
134
135 }
136