func (self *json_outstream_handle) Close() kernel.Error { self.quit <- true msg := self.svc.(kernel.IMessager) msg.MsgDebug("--> closing json-handle [%v]\n", self.w.Name()) // _,ok = <-self.quit // if ok { // self.quit <- true // } close(self.quit) close(self.errs) close(self.data) fd := self.w.Fd() if fd >= 0 { fname := self.w.Name() err := self.w.Close() if err != nil { msg.MsgError("closing fd: [%v] name [%v]. err: %v\n", fd, fname, err) return kernel.StatusCodeWithErr(1, err) } } return kernel.StatusCode(0) }
func (self *json_outstream_handle) Write(data interface{}) kernel.Error { /* // FIXME: how to get the error back ?? err := self.enc.Encode(data) if err != nil { return kernel.StatusCodeWithErr(1, err) } */ self.data <- data select { case err := <-self.errs: if err != nil { msg := self.svc.(kernel.IMessager) msg.MsgError("--> write got: %v\n", err) return kernel.StatusCodeWithErr(1, err) } default: return kernel.StatusCode(0) } return kernel.StatusCode(0) }