func Copy(src io.Reader, dst io.Writer) error {
//...
}
import gocopy
s := file.Open()
err := gocopy.Copy(s, d)
func Copy(src io.Reader, dst io.Writer) (statusCh, error) {
//...
go func() {
statusCh
}()
}
func Read() {
select {
case status := <-statusCh:
}
}
type Stat struct {
status string
err error
}
func Copy(src io.Reader, dst io.Writer) chan Stat {
//...
statusCh := make(chan Stat{})
go func() {
statusCh{
}
}
return statusCh
}
func Read() {
select {
case status := <-statusCh:
}
}
import gocopy
s := file.Open()
err := gocopy.Copy(s, d)
func Copy(src io.Reader, dst io.Writer) chan Stat {
//...
statusCh := make(chan Stat{})
buf := make([]byte, 1024)
var total int64
go func() {
for {
n, err := src.Read(buf)
if n > 0 {
writen, err := dst.Write(buf[:n])
total += int64(writen)
if err != nil {
statusCh <- Stat{
status: "done with err",
err: err,
}
return
}
}
if err == io.EOF {
statusCh <- Stat{
bCopy: total,
status: "done",
err: nil,
}
return
}
if err != nil {
statusCh <- Stat{
status: "done with err",
err: err,
}
return
}
}
}
return statusCh
}
func Read() {
select {
case status := <-statusCh:
if status.err != nil {
return
}
}
}
func Copy(src io.Reader, dst io.Writer) chan Stat {
//...
statusCh := make(chan Stat{})
buf := make([]byte, 1024)
var total int64
go func() {
for {
select {
case :
n, err := src.Read(buf)
if n > 0 {
writen, err := dst.Write(buf[:n])
total += int64(writen)
if err != nil {
statusCh <- Stat{
status: "done with err",
err: err,
}
return
}
}
if err == io.EOF {
statusCh <- Stat{
bCopy: total,
status: "done",
err: nil,
}
return
}
if err != nil {
statusCh <- Stat{
status: "done with err",
err: err,
}
return
}
default:
statusCh <- Stat{
bCopy: total,
status: "pending",
err: nil,
}
}
}
}
return statusCh
}
func Read() {
select {
case status := <-statusCh:
if status.err != nil {
return
}
}
}
Katta