Posted to tcl by saedelaere at Sat Jan 02 12:15:05 GMT 2010view raw

  1. proc command_socket {} {
  2. catch {puts $::main(debug_msg) "\033\[0;1;33mDebug: command_socket \033\[0m"}
  3. if {[file exists "$::option(where_is_home)/tmp/comSocket"] == 0} {
  4. catch {exec mkfifo "$::option(where_is_home)/tmp/comSocket"}
  5. }
  6. if {[file exists "$::option(where_is_home)/tmp/comSocket"]} {
  7. set ::data(comsocket) [open "$::option(where_is_home)/tmp/comSocket" r+]
  8. fconfigure $::data(comsocket) -blocking 0 -buffering line
  9. fileevent $::data(comsocket) readable [list command_getData]
  10. }
  11.  
  12. proc command_getData {} {
  13. if {[info exists ::data(comsocket)]} {
  14. gets $::data(comsocket) line
  15. if {"$::option(appname)" == "tv-viewer_scheduler"} {
  16. puts "line ::data(comsocket) $line"
  17. }
  18. if {[eof $::data(comsocket)]} {
  19. puts "EOF ::data(comsocket)"
  20. catch {close $::data(comsocket)}
  21. unset -nocomplain ::data(comsocket)
  22. }
  23.  
  24. if {[string length $line] > 0} {
  25. if {"[lindex $line 0]" == "$::option(appname)"} {
  26. set com [lrange $line 1 end]
  27. {*}$com
  28. }
  29. }
  30. }
  31. }
  32.  
  33. proc command_WritePipe {com} {
  34. if {"$::option(appname)" == "tv-viewer_main"} {
  35. puts $::main(debug_msg) "\033\[0;1;33mDebug: command_WritePipe \033\[0m \{$com\}"
  36. }
  37. if {[info exists ::data(comsocket)] == 0} {return 1}
  38. if {[string trim $::data(comsocket)] != {}} {
  39. puts "Sending command
  40. $com
  41. to Application remote channel."
  42. catch {puts -nonewline $::data(comsocket) "$com \n"}
  43. flush $::data(comsocket)
  44. return 0
  45. } else {
  46. if {"$::option(appname)" == "tv-viewer_main"} {
  47. log_writeOutTv 2 "Can't access application command pipe."
  48. }
  49. if {"$::option(appname)" == "tv-viewer_scheduler"} {
  50. scheduler_logWriteOut 2 "Can't access application command pipe."
  51. }
  52. return 1
  53. }
  54. }
  55.