]> git.evergreen-ils.org Git - Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/ses.js
sdump tweak, and separating RemoteRequest wrappers from the Jabber wrappers
[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 // These wrap Bill's RemoteRequest.js
7
8 function user_request(app,name,params) {
9         sdump('D_SES','=-=-=-=-= user_request('+app+','+name+','+js2JSON(params)+')\n');
10         var request = new RemoteRequest( app, name );
11         for(var index in params) {
12                 request.addParam(params[index]);
13         }
14         request.send(true);
15         var result = [];
16         result.push( request.getResultObject() );
17         //sdump('D_SES','=-=-= result = ' + js2JSON(result[0]) + '\n');
18         return result;
19 }
20
21 function user_async_request(app,name,params,func) {
22         sdump('D_SES','=-=-=-=-= user_async_request('+app+','+name+','+js2JSON(params)+','+func+')\n');
23         var request = new RemoteRequest( app, name );
24         for(var index in params) {
25                 request.addParam(params[index]);
26         }
27         request.setCompleteCallback(func);
28         request.send();
29 }
30
31 function sample_func(request) {
32         var result = [];
33         result.push( request.getResultObject() );
34         /* This callback would be called within the code for the Request object, so you would never see
35         a return value.  Instead, you should _do_ something with the data. */
36         return result;
37 }
38
39 //////////////////////////////////////////////////////////////////////////////
40 // The functions below were wrappers for the old jabber way of doing things
41
42 function handle_session(app) {
43         //if( ses == null || ! AppSession.transport_handle.connected() ) {
44         sdump('D_TRACE','Calling new AppSession : ' + timer_elapsed('cat') + '\n');
45                 ses = new AppSession( app );
46                 sdump('D_SES', 'after AppSession ses = ' + (ses.state) + '\n' );
47                 if( ! ses.connect() ) { 
48                         sdump('D_SES', 'after ses.connect ses = ' + js2JSON(ses.state) + '\n' );
49                         throw( "Connect timed out!" ); 
50                 }
51                 sdump('D_SES', 'after ses.connect ses = ' + js2JSON(ses.state) + '\n' );
52         sdump('D_TRACE','Finished new AppSession : ' + timer_elapsed('cat') + '\n');
53         //}
54 }
55
56 function handle_request(ses,meth) {
57
58
59         sdump('D_TRACE','Entering handle_request : ' + timer_elapsed('cat') + '\n');
60         sdump('D_SES','Calling new AppRequest : ' + timer_elapsed('cat') + '\n');
61
62         var req = new AppRequest( ses, meth );
63
64         sdump('D_SES','Finished new AppRequest : ' + timer_elapsed('cat') + '\n');
65         sdump('D_SES','Calling new req.make_request() : ' + timer_elapsed('cat') + '\n');
66
67         req.make_request();
68
69         sdump('D_SES', 'after req.make_request ses = ' + js2JSON(ses.state) + '\n' );
70         sdump('D_SES','Finished new req.make_request() : ' + timer_elapsed('cat') + '\n');
71
72         var result = new Array(); var resp;
73
74         sdump('D_SES','Looping on req.recv and resp.getContent(): ' + timer_elapsed('cat') + '\n');
75
76         while (resp = req.recv( 30000 ) ) {
77                 sdump('D_SES', '\tafter req.recv ses = ' + js2JSON(ses.state) + ' : req.is_complete = ' + req.is_complete + '\n' );
78                 var r = resp.getContent();
79                 if (r != 'keepalive') {
80                         result.push( r );
81                 }
82         }
83
84         sdump('D_SES','Finished with req.recv and resp.getContent(): ' + timer_elapsed('cat') + '\n');
85
86         if (result.length == 0) {
87                 if ( req.is_complete ) {
88                         result.push("NO RESPONSE, REQUEST COMPLETE");
89                         sdump('D_SES',"NO RESPONSE, REQUEST COMPLETE\n");
90                 } else {
91                         result.push("NO RESPONSE, REQUEST TIMEOUT");
92                         sdump('D_SES',"NO RESPONSE, REQUEST TIMEOUT\n");
93                 }
94         }
95         req.finish();
96         sdump('D_SES', 'after req.finish() ses = ' + js2JSON(ses.state) + '\n' );
97         sdump('D_SES','Exiting handle_request : ' + timer_elapsed('cat') + '\n');
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