2
* Copyright (c) 2005-2007, The haXe Project Contributors
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
7
* - Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* - Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
13
* THIS SOFTWARE IS PROVIDED BY THE HAXE PROJECT CONTRIBUTORS "AS IS" AND ANY
14
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16
* DISCLAIMED. IN NO EVENT SHALL THE HAXE PROJECT CONTRIBUTORS BE LIABLE FOR
17
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
20
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
25
package haxe.remoting;
26
import haxe.remoting.SocketProtocol.Socket;
28
class SyncSocketConnection implements Connection, implements Dynamic<Connection> {
30
var __path : Array<String>;
31
var __proto : SocketProtocol;
33
function new(proto,path) {
38
public function resolve( name ) : Connection {
39
var s = new SyncSocketConnection(__proto,__path.copy());
44
public function call( params : Array<Dynamic> ) : Dynamic {
46
proto.sendRequest(__path,params);
48
var data = proto.readMessage();
49
if( proto.isRequest(data) ) {
50
if( proto.context == null )
51
throw "Request received";
52
proto.processRequest(data,onRequestError);
55
return proto.processAnswer(data);
57
return null; // never reached
60
public function processRequest() {
61
if( __proto.context == null )
62
throw "Can't process request";
63
var data = __proto.readMessage();
64
__proto.processRequest(data,onRequestError);
67
public function onRequestError( path : Array<String>, args : Array<Dynamic>, exc : Dynamic ) {
70
public function setProtocol( p : SocketProtocol ) {
74
public function getProtocol() : SocketProtocol {
78
public function close() {
79
try __proto.socket.close() catch( e : Dynamic ) { };
82
public static function create( s : Socket, ?ctx : Context ) {
83
return new SyncSocketConnection(new SocketProtocol(s,ctx),[]);