dango_generator 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -96,6 +96,15 @@ package org.rubyforge.dango {
96
96
  private function dango_notice_current_sids(evt:DangoReceiveEvent):void {
97
97
  var ret:Object = evt.receive_data;
98
98
  all_sid_list = ret["sids"];
99
+
100
+ var recv_data:Object = {};
101
+ recv_data["_from_sid"] = ret["_from_sid"]
102
+ if(ret["is_connect"]){
103
+ this.dispatchEvent(new DangoAS3ModeReceiveEvent("dango__other_connect", recv_data));
104
+ }
105
+ if(ret["is_close"]){
106
+ this.dispatchEvent(new DangoAS3ModeReceiveEvent("dango__other_close", recv_data));
107
+ }
99
108
  }
100
109
 
101
110
 
@@ -595,6 +595,7 @@ package org.rubyforge.dango {
595
595
  * @param evt:DangoReceiveEvent
596
596
  * @return void
597
597
  protected function dango__connect(evt:Object):void {
598
+ trace("DangoClientFramework:receive dango__connect");
598
599
  }
599
600
  */
600
601
 
@@ -606,18 +607,9 @@ package org.rubyforge.dango {
606
607
  * @param evt:DangoReceiveEvent
607
608
  * @return void
608
609
  protected function dango__after_filter(evt:Object):void {
610
+ trace("DangoClientFramework:receive dango__after_filter");
609
611
  }
610
612
  */
611
613
 
612
- /**
613
- * dango__after_filter の雛形
614
- * すべてのdango通知の前処理用のメソッド
615
- * オーバーライドして使うもの
616
- *
617
- * @param evt:DangoReceiveEvent
618
- * @return void
619
- protected function dango__after_filter(evt:Object):void {
620
- }
621
- */
622
614
  }
623
615
  }
@@ -143,6 +143,51 @@ package org.rubyforge.dango {
143
143
  var result:Object = byta.readObject();
144
144
  return result;
145
145
  }
146
-
146
+
147
+ /**
148
+ * オブジェクトを読みやすい形式に変換
149
+ *
150
+ * @param obj 元になるObject
151
+ * @return String
152
+ */
153
+ public static function toString(obj:Object):String {
154
+ var str:String = parse_obj(obj, 0);
155
+ return str;
156
+ }
157
+
158
+ private static function parse_obj(obj:Object, indent:uint):String{
159
+ var str:String = "";
160
+
161
+ if(obj == null){
162
+ str += indent_str(indent) + "null" + "\n";
163
+ } else {
164
+ var type:String = typeof(obj);
165
+ if(type == "boolean" || type == "number"){
166
+ str += indent_str(indent) + obj.toString() + "\n";
167
+
168
+ } else if(type == "string"){
169
+ str += indent_str(indent) + "\"" + obj.toString() + "\"" + "\n";
170
+
171
+ } else if(type == "object"){
172
+ for(var i:String in obj) {
173
+ str += indent_str(indent) + i + "=>\n";
174
+ str += parse_obj(obj[i], indent + 1);
175
+ }
176
+
177
+ } else {
178
+ str += indent_str(indent) + "(" + type + ")" + "\n";
179
+ }
180
+ }
181
+ return str;
182
+ }
183
+
184
+ private static function indent_str(indent:uint):String{
185
+ var str:String = "";
186
+ for (var j:uint = 0; j < indent * 2; j++) {
187
+ str += " ";
188
+ }
189
+ return str;
190
+ }
191
+
147
192
  }
148
193
  }
@@ -27,6 +27,12 @@
27
27
  // 接続完了時のイベントリスナ定義
28
28
  dango_as3mode.addEventListener("dango__connect", dango__connect);
29
29
 
30
+ // 他人が接続した時のイベントリスナ定義
31
+ dango_as3mode.addEventListener("dango__other_connect", dango__other_connect);
32
+
33
+ // 他人が切断した時のイベントリスナ定義
34
+ dango_as3mode.addEventListener("dango__other_close", dango__other_close);
35
+
30
36
  // 他のクライアントからデータを受け取った時のイベントリスナ定義
31
37
  dango_as3mode.addEventListener("dango_as3mode_receive", dango_as3mode_receive);
32
38
  }
@@ -34,17 +40,32 @@
34
40
  // dangoフレームワークでエラーが起きた場合は接続エラーをtraceに出力
35
41
  private function connection_error(evt:DangoErrorEvent):void {
36
42
  trace("FrameworkError:code=" + evt.code + ":message=" + evt.message);
43
+ log.text += "Error code=" + evt.code + ":message=" + evt.message + "\n"
37
44
  }
38
45
 
39
46
  // 接続完了時に、テキストエリアに「接続完了」と表示します。
40
47
  private function dango__connect(evt:DangoAS3ModeReceiveEvent):void{
41
- log.text += "接続完了" + dango_as3mode.sid + "\n"
48
+ log.text += "接続完了 sid=" + dango_as3mode.sid + "\n"
49
+ }
50
+
51
+ // 他人の接続時に、テキストエリアに「sidの接続」と表示します。
52
+ private function dango__other_connect(evt:DangoAS3ModeReceiveEvent):void{
53
+ log.text += "sid=" + evt.receive_data["_from_sid"] + "の接続\n"
54
+ }
55
+
56
+ // 他人の切断時に、テキストエリアに「sidの切断」と表示します。
57
+ private function dango__other_close(evt:DangoAS3ModeReceiveEvent):void{
58
+ log.text += "sid=" + evt.receive_data["_from_sid"] + "の切断\n"
42
59
  }
43
60
 
44
61
  // メッセージを受け取った時に、テキストエリアに受け取ったメッセージを表示します。
45
62
  private function dango_as3mode_receive(evt:DangoAS3ModeReceiveEvent):void{
46
63
  trace("dango_as3mode_receive");
47
- log.text += evt.receive_data["chat"] + "\n"
64
+ log.text += "sid=" + evt.receive_data["_from_sid"] + ":" +evt.receive_data["chat"] + "\n";
65
+ if(!evt.receive_data["is_return"] && dango_as3mode.sid != evt.receive_data["_from_sid"]){
66
+ dango_as3mode.send_object({"chat":"受け取ったよ!", "is_return":true},
67
+ [evt.receive_data["_from_sid"]]);
68
+ }
48
69
  }
49
70
 
50
71
  // ボタンをクリックした時に全クライアントにchatメッセージを送信します
@@ -18,7 +18,11 @@ class DangoServer < DangoServerFramework
18
18
  shared.commit(sids)
19
19
  end
20
20
 
21
- send_obj = {:sids => current_sids} # 全員に現在のsid一覧を送る
21
+ send_obj = { # 全員に現在のsid一覧を送る
22
+ :sids => current_sids,
23
+ :is_connect => true,
24
+ :_from_sid => session[:sid],
25
+ }
22
26
  send_notice(:notice_current_sids, current_sids, send_obj)
23
27
  end
24
28
 
@@ -31,7 +35,11 @@ class DangoServer < DangoServerFramework
31
35
  shared.commit(sids)
32
36
  end
33
37
 
34
- send_obj = {:sids => current_sids} # 全員に現在のsid一覧を送る
38
+ send_obj = { # 全員に現在のsid一覧を送る
39
+ :sids => current_sids,
40
+ :is_close => true,
41
+ :_from_sid => session[:sid],
42
+ }
35
43
  send_notice(:notice_current_sids, current_sids, send_obj)
36
44
  end
37
45
 
@@ -40,11 +48,16 @@ class DangoServer < DangoServerFramework
40
48
  send_obj = rec_obj["object"]
41
49
  to_sids = rec_obj["sids"]
42
50
  current_sids = shared[:sids]
51
+
52
+ logger.warn "send_obj=#{send_obj.inspect}"
53
+ logger.warn "to_sids=#{to_sids.inspect}"
54
+ logger.warn "current_sids=#{current_sids.inspect}"
55
+
43
56
  if to_sids.is_a?(Array)
44
57
  if to_sids == []
45
58
  to_sids = current_sids
46
59
  else
47
- to_sids.delete_if {|sid| !current_sids.include?(sids) }
60
+ to_sids.delete_if {|sid| !current_sids.include?(sid) }
48
61
  end
49
62
  send_obj[:_from_sid] = session[:sid]
50
63
  send_notice(:notice_send_object, to_sids, send_obj)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dango_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keisuke Minami
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-01 00:00:00 +09:00
12
+ date: 2008-12-15 00:00:00 +09:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  requirements: []
133
133
 
134
134
  rubyforge_project: dango
135
- rubygems_version: 1.2.0
135
+ rubygems_version: 1.3.1
136
136
  signing_key:
137
137
  specification_version: 2
138
138
  summary: dango_generator