zhangmeng
2019-08-27 020e17cc5311d091d713eb4fabae2a3d50944916
shm.go
@@ -4,6 +4,7 @@
   "errors"
   "fmt"
   "io"
   "time"
   "basic.com/valib/shm.git"
)
@@ -35,14 +36,33 @@
      return nil, errors.New("please open shm consumer first")
   }
   data := make([]byte, maxRecvSize)
   // data := make([]byte, maxRecvSize)
   // n, err := s.rw.Read(data)
   // if err == nil || err == io.EOF {
   //    data := data[:n:n]
   //    return data, nil
   // }
   data, err := s.rw.DirectRead()
   if err == nil || err == io.EOF {
      return data, nil
   }
   return nil, err
}
// Recv2 impl interface
func (s *SHM) Recv2(data []byte) error {
   if s == nil || s.rw == nil {
      return errors.New("please open shm consumer first")
   }
   n, err := s.rw.Read(data)
   if err == nil || err == io.EOF {
      data = data[:n:n]
      return data, nil
      return nil
   }
   return nil, err
   return err
}
// Close impl interface Deliver
@@ -73,18 +93,22 @@
         return nil, errors.New("shmServer created recv error parameters")
      }
   }
   if len(param) != 2 {
      return nil, errors.New("shmServer created recv too much parameters")
   blocks, size := 2, maxRecvSize
   if len(param) == 2 {
      blocks, size = param[0], param[1]
      // return nil, errors.New("shmServer created recv too much parameters")
   }
   time.Sleep(time.Millisecond)
   shm.Unlink(url)
   rw, err := shm.CreateSimplex(url, 0644, param[0], param[1])
   rw, err := shm.CreateSimplex(url, 0644, blocks, size)
   if err == nil {
      fmt.Println(rw.Name())
      return &SHM{
         rw,
         agent,
         rw:  rw,
         typ: agent,
      }, nil
   }
@@ -99,8 +123,8 @@
   rw, err := shm.OpenSimplex(url)
   if err == nil {
      return &SHM{
         rw,
         coactee,
         rw:  rw,
         typ: coactee,
      }, nil
   }
   return nil, err