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