]> git.evergreen-ils.org Git - working/Evergreen.git/blob - Evergreen/staff_client/chrome/content/evergreen/util/ses.js
This was me putting wrappers around the OpenSRF communication stuff. Later Bill...
[working/Evergreen.git] / Evergreen / staff_client / chrome / content / evergreen / util / ses.js
1 dump('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         dump('Calling new AppSession : ' + timer_elapsed('cat') + '\n');
9                 ses = new AppSession( app );
10                 dump( 'after AppSession ses = ' + (ses.state) + '\n' );
11                 if( ! ses.connect() ) { 
12                         dump( 'after ses.connect ses = ' + js2JSON(ses.state) + '\n' );
13                         throw( "Connect timed out!" ); 
14                 }
15                 dump( 'after ses.connect ses = ' + js2JSON(ses.state) + '\n' );
16         dump('Finished new AppSession : ' + timer_elapsed('cat') + '\n');
17         //}
18 }
19
20 function handle_request(ses,meth) {
21
22
23         dump('Entering handle_request : ' + timer_elapsed('cat') + '\n');
24         dump('Calling new AppRequest : ' + timer_elapsed('cat') + '\n');
25
26         var req = new AppRequest( ses, meth );
27
28         dump('Finished new AppRequest : ' + timer_elapsed('cat') + '\n');
29         dump('Calling new req.make_request() : ' + timer_elapsed('cat') + '\n');
30
31         req.make_request();
32
33         dump( 'after req.make_request ses = ' + js2JSON(ses.state) + '\n' );
34         dump('Finished new req.make_request() : ' + timer_elapsed('cat') + '\n');
35
36         var result = new Array(); var resp;
37
38         dump('Looping on req.recv and resp.getContent(): ' + timer_elapsed('cat') + '\n');
39
40         while (resp = req.recv( 30000 ) ) {
41                 dump( '\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         dump('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                         dump("NO RESPONSE, REQUEST COMPLETE\n");
54                 } else {
55                         result.push("NO RESPONSE, REQUEST TIMEOUT");
56                         dump("NO RESPONSE, REQUEST TIMEOUT\n");
57                 }
58         }
59         req.finish();
60         dump( 'after req.finish() ses = ' + js2JSON(ses.state) + '\n' );
61         dump('Exiting handle_request : ' + timer_elapsed('cat') + '\n');
62         return result;  
63 }
64
65
66
67
68 function user_request(app,name,params) {
69         dump('=-=-=-=-= user_request:\n');
70         dump('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         //dump('=-=-= result = ' + js2JSON(result[0]) + '\n');
79         return result;
80 }
81
82 function user_async_request(app,name,params,func) {
83         dump('=-=-=-=-= user_async_request: ' + js2JSON(func) + '\n');
84         dump('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         dump('Entering user_request : ' + timer_elapsed('cat') + '\n');
104         dump('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                         dump('ses.disconnect\n'); 
120                         ses.disconnect(); 
121                         dump( 'after ses.disconnect() ses = ' + js2JSON(ses.state) + '\n' );
122                         ses.destroy();
123                         dump( 'after ses.destroy() ses = ' + js2JSON(ses.state) + '\n' );
124                 }
125
126                 dump('Exiting user_request : ' + timer_elapsed('cat') + '\n');
127                 return result;
128
129         } catch( E ) { 
130                 dump('Exiting user_request : ' + timer_elapsed('cat') + '\n');
131                 alert( pretty_print( js2JSON(E) ) ); 
132                 return null;
133         }
134
135 }
136