Rev 73 | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | SVN | RSS feed
| Rev 73 | Rev 641 | ||
|---|---|---|---|
| 1 | import mx.utils.Delegate; |
1 | import mx.utils.Delegate; |
| 2 | 2 | ||
| 3 | class CommunicationObj { |
3 | class CommunicationObj { |
| 4 | 4 | ||
| 5 | var isConnected:Boolean; |
5 | var isConnected:Boolean; |
| 6 | var mySocket:XMLSocket; |
6 | var mySocket:XMLSocket; |
| 7 | var hostname:String; |
7 | var hostname:String; |
| 8 | var dataReceivers:Array; |
8 | var dataReceivers:Array; |
| 9 | var userName:String; |
9 | var userName:String; |
| 10 | var passWd:String |
10 | var passWd:String |
| 11 | 11 | ||
| 12 | function CommunicationObj (host:String) { |
12 | function CommunicationObj (host:String) { |
| 13 | isConnected = false; |
13 | isConnected = false; |
| 14 | 14 | ||
| 15 | hostname = host; |
15 | hostname = host; |
| 16 | 16 | ||
| 17 | mySocket = new XMLSocket(); |
17 | mySocket = new XMLSocket(); |
| 18 | mySocket.onData = Delegate.create(this, onData); |
18 | mySocket.onData = Delegate.create(this, onData); |
| 19 | mySocket.onClose = Delegate.create(this, onClose); |
19 | mySocket.onClose = Delegate.create(this, onClose); |
| 20 | mySocket.onConnect = Delegate.create(this, onConnect); |
20 | mySocket.onConnect = Delegate.create(this, onConnect); |
| 21 | var intervalID:Number = setInterval(this, "timerConnect", 15000); |
21 | var intervalID:Number = setInterval(this, "timerConnect", 15000); |
| 22 | 22 | ||
| 23 | timerConnect(); |
23 | timerConnect(); |
| 24 | } //end constructor |
24 | } //end constructor |
| 25 | 25 | ||
| 26 | function setDataReceiver(objs:Array) { |
26 | function setDataReceiver(objs:Array) { |
| 27 | dataReceivers = objs; |
27 | dataReceivers = objs; |
| 28 | 28 | ||
| 29 | for (var i:Number = 0; i < dataReceivers.length; i++) { |
29 | for (var i:Number = 0; i < dataReceivers.length; i++) { |
| 30 | dataReceivers[i].setCommunicator(this); |
30 | dataReceivers[i].setCommunicator(this); |
| 31 | } |
31 | } |
| 32 | 32 | ||
| 33 | } |
33 | } |
| 34 | 34 | ||
| 35 | public function sendToServer(data:XML) { |
35 | public function sendToServer(data:XML) { |
| 36 | if (isConnected) { |
36 | if (isConnected) { |
| 37 | mySocket.send(data + "\n"); |
37 | mySocket.send(data + "\n"); |
| 38 | } |
38 | } |
| 39 | //trace(data); |
39 | //trace(data); |
| 40 | } |
40 | } |
| 41 | 41 | ||
| 42 | 42 | ||
| 43 | private function onData(msg) { |
43 | private function onData(msg) { |
| 44 | //trace("Got data: " + msg.charCodeAt(0) + " " + msg.charCodeAt(1) + " " + msg.charCodeAt(2)); |
44 | //trace("Got data: " + msg.charCodeAt(0) + " " + msg.charCodeAt(1) + " " + msg.charCodeAt(2)); |
| 45 | //ta bort alla linefeed \n och carrage return \r |
45 | //ta bort alla linefeed \n och carrage return \r |
| 46 | msg = replace(msg, "\n", ""); |
46 | msg = replace(msg, "\n", ""); |
| 47 | msg = replace(msg, "\r", ""); |
47 | msg = replace(msg, "\r", ""); |
| 48 | var msgXML:XML = new XML(msg); |
48 | var msgXML:XML = new XML(msg); |
| 49 | 49 | ||
| 50 | //trace(msg); |
50 | //trace(msg); |
| 51 | 51 | ||
| 52 | //trace("nodename: " + msgXML.firstChild.nodeName); |
52 | //trace("nodename: " + msgXML.firstChild.nodeName); |
| 53 | //trace("id: " + msgXML.firstChild.attributes.id); |
53 | //trace("id: " + msgXML.firstChild.attributes.id); |
| 54 | 54 | ||
| 55 | 55 | ||
| 56 | //trace("blipp"); |
56 | //trace("blipp"); |
| 57 | if (msgXML.firstChild.nodeName == "packet") { |
57 | if (msgXML.firstChild.nodeName == "packet") { |
| 58 | 58 | ||
| 59 | var menuName:String = msgXML.firstChild.attributes.menuid; |
59 | var menuName:String = msgXML.firstChild.attributes.menuid; |
| 60 | var dataList:XMLNode = msgXML.firstChild.firstChild; |
60 | var dataList:XMLNode = msgXML.firstChild.firstChild; |
| 61 | 61 | ||
| 62 | //msgXML.firstChild.firstChild, egentligen skulle den rota igenom |
62 | //msgXML.firstChild.firstChild, egentligen skulle den rota igenom |
| 63 | //alla childs, det kanske kan komma flera data i samma paket |
63 | //alla childs, det kanske kan komma flera data i samma paket |
| 64 | 64 | ||
| 65 | for (var i:Number = 0; i < dataReceivers.length; i++) { |
65 | for (var i:Number = 0; i < dataReceivers.length; i++) { |
| 66 | if (menuName == dataReceivers[i].getName()) { |
66 | if (menuName == dataReceivers[i].getName()) { |
| 67 | dataReceivers[i].setNewData(dataList); |
67 | dataReceivers[i].setNewData(dataList); |
| 68 | //mainMenu.setNewData(dataList, middleItem); |
68 | //mainMenu.setNewData(dataList, middleItem); |
| 69 | } |
69 | } |
| 70 | } |
70 | } |
| 71 | 71 | ||
| 72 | /* |
72 | /* |
| 73 | //rota igenom dataReceivers, använd deras getName-funktion |
73 | //rota igenom dataReceivers, använd deras getName-funktion |
| 74 | //om dess namn stämmer med namnet i xml-datan så skicka listan dit |
74 | //om dess namn stämmer med namnet i xml-datan så skicka listan dit |
| 75 | var middleItem:Number = 0; |
75 | var middleItem:Number = 0; |
| 76 | var dataList:XMLNode; |
76 | var dataList:XMLNode; |
| 77 | var menuName:String; |
77 | var menuName:String; |
| 78 | |
78 | |
| 79 | dataList = msgXML.firstChild; |
79 | dataList = msgXML.firstChild; |
| 80 | //trace(dataList); |
80 | //trace(dataList); |
| 81 | for (var aNode:XMLNode = msgXML.firstChild.firstChild; aNode != null; aNode=aNode.nextSibling) { |
81 | for (var aNode:XMLNode = msgXML.firstChild.firstChild; aNode != null; aNode=aNode.nextSibling) { |
| 82 | if (aNode.nodeName == "contentname") { |
82 | if (aNode.nodeName == "contentname") { |
| 83 | menuName = aNode.firstChild.nodeValue; |
83 | menuName = aNode.firstChild.nodeValue; |
| 84 | for (var i:Number = 0; i < dataReceivers.length; i++) { |
84 | for (var i:Number = 0; i < dataReceivers.length; i++) { |
| 85 | if (menuName == dataReceivers[i].getName()) { |
85 | if (menuName == dataReceivers[i].getName()) { |
| 86 | dataReceivers[i].setNewData(dataList); |
86 | dataReceivers[i].setNewData(dataList); |
| 87 | //mainMenu.setNewData(dataList, middleItem); |
87 | //mainMenu.setNewData(dataList, middleItem); |
| 88 | } |
88 | } |
| 89 | } |
89 | } |
| 90 | } |
90 | } |
| 91 | }*/ |
91 | }*/ |
| 92 | } |
92 | } |
| 93 | } |
93 | } |
| 94 | 94 | ||
| 95 | private function onClose() { |
95 | private function onClose() { |
| 96 | trace("Server closed connection!"); |
96 | trace("Server closed connection!"); |
| 97 | //msgArea.htmlText = "<b>Server closed connection</b><br>" + msgArea.htmlText; |
97 | //msgArea.htmlText = "<b>Server closed connection</b><br>" + msgArea.htmlText; |
| 98 | //intervalID = setInterval(this, "timerConnect", 5000); |
98 | //intervalID = setInterval(this, "timerConnect", 5000); |
| 99 | isConnected = false; |
99 | isConnected = false; |
| 100 | } |
100 | } |
| 101 | 101 | ||
| 102 | public function setLogin(username:String, pass:String) { |
102 | public function setLogin(username:String, pass:String) { |
| 103 | passWd = pass; |
103 | passWd = pass; |
| 104 | userName = username; |
104 | userName = username; |
| 105 | 105 | ||
| 106 | } |
106 | } |
| 107 | 107 | ||
| 108 | private function onConnect(success) { |
108 | private function onConnect(success) { |
| 109 | if (success) { |
109 | if (success) { |
| 110 | trace("Server connection established!"); |
110 | trace("Server connection established!"); |
| 111 | //msgArea.htmlText = "<b>Server connection established!</b><br>" + msgArea.htmlText; |
111 | //msgArea.htmlText = "<b>Server connection established!</b><br>" + msgArea.htmlText; |
| 112 | 112 | ||
| 113 | isConnected = true; |
113 | isConnected = true; |
| 114 | 114 | ||
| 115 | //skicka login om det är configurerat |
115 | //skicka login om det är configurerat |
| 116 | if (passWd != "" && userName != "") { |
116 | if (passWd != "" && userName != "") { |
| 117 | sendToServer(new XML("<flinshpacket login=\"" + userName + "\" pass=\"" + passWd + "\" />")); |
117 | sendToServer(new XML("<flinshpacket login=\"" + userName + "\" pass=\"" + passWd + "\" />")); |
| 118 | } |
118 | } |
| 119 | 119 | ||
| 120 | } else { |
120 | } else { |
| 121 | //msgArea.htmlText = "<b>Server connection failed!</b><br>" + msgArea.htmlText; |
121 | //msgArea.htmlText = "<b>Server connection failed!</b><br>" + msgArea.htmlText; |
| 122 | trace("Server connection failed!"); |
122 | trace("Server connection failed!"); |
| 123 | isConnected = false; |
123 | isConnected = false; |
| 124 | //intervalID = setInterval(this, "timerConnect", 5000); |
124 | //intervalID = setInterval(this, "timerConnect", 5000); |
| 125 | //mySocket.connect("deep.arune.se", 2229); |
125 | //mySocket.connect("deep.arune.se", 2229); |
| 126 | } |
126 | } |
| 127 | } |
127 | } |
| 128 | 128 | ||
| 129 | private function timerConnect() { |
129 | private function timerConnect() { |
| 130 | // intervalID = null; |
130 | // intervalID = null; |
| 131 | if (!isConnected) { |
131 | if (!isConnected) { |
| 132 | mySocket.connect(hostname, 2229); |
132 | mySocket.connect(hostname, 2229); |
| 133 | //msgArea.htmlText = "<b>Connecting...</b><br>" + msgArea.htmlText; |
133 | //msgArea.htmlText = "<b>Connecting...</b><br>" + msgArea.htmlText; |
| 134 | } else { |
134 | } else { |
| 135 | mySocket.send("<ping />\n"); |
135 | mySocket.send("<ping />\n"); |
| 136 | } |
136 | } |
| 137 | 137 | ||
| 138 | } |
138 | } |
| 139 | 139 | ||
| 140 | private function replace(holder:String, searchfor:String, replacement:String):String { |
140 | private function replace(holder:String, searchfor:String, replacement:String):String { |
| 141 | //trace("inte här"); |
141 | //trace("inte här"); |
| 142 | var temparray:Array = holder.split(searchfor); |
142 | var temparray:Array = holder.split(searchfor); |
| 143 | holder = temparray.join(replacement); |
143 | holder = temparray.join(replacement); |
| 144 | return (holder); |
144 | return (holder); |
| 145 | } |
145 | } |
| 146 | } |
146 | } |