- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
[code] public function send(data:String):void {
trace("OUT: " + data);
dispatchEvent(new StreamEvent(StreamEvent.COMM_OUT, false, false, null, data));
try {
socket.writeUTFBytes(data);
socket.flush();
} catch (error:Error) {
trace("Error writing to socket: " + error);
dispatchEvent(new StreamEvent(StreamEvent.DISCONNECTED, false, false, null));
}
}[/code]
Кроме null могут быть и другие ситуации, когда, например System.useCodepage используется, и в строке будут не Юникоды. Редкостная ситуация, но все же.
Ошибкой, вероятно, является предоставление этой низкоуровневой функции в публичный API. Но если «публичность» ограничивается одной программой того же авторства, то в этом ничего страшного, автор сам позаботится, чтобы передавать валидные данные.
Так автор (т.е. пользователь API) никогда не узнет, что данные не валидны! В этом то и недостаток - т.как если в ответ на невалидные данные выбрасывается исключение - тогда, да, пользователь сообразит, что что-то не так. А если в ответ на невалидные данные происходит какое-то вообще не связаное с ними действие - так откуда ж узнать, что данные были невалидными?
Я не работал с XMPP, но мне кажется сомнительным, что на сервер отсылается просто сырой пользовательский ввод. Как минимум должны быть управляющие команды, а то и в XML всё (на что намекает буковка «хер»).