zhangmeng
2019-05-22 c2bbe31e7c6c9f83f7bcce26dea98bc18ed8f39c
shm.go
@@ -16,7 +16,7 @@
// Send impl interface Diliver
func (s *SHM) Send(data []byte) error {
   if s.rw == nil {
   if s == nil || s.rw == nil {
      return errors.New("please init shm producer first")
   }
@@ -31,7 +31,7 @@
// Recv impl interface Diliver
func (s *SHM) Recv() ([]byte, error) {
   if s.rw == nil {
   if s == nil || s.rw == nil {
      return nil, errors.New("please open shm consumer first")
   }
@@ -47,6 +47,9 @@
// Close impl interface Deliver
func (s *SHM) Close() {
   if s == nil {
      return
   }
   if s.rw != nil {
      s.rw.Close()
   }
@@ -55,10 +58,9 @@
   }
}
func shmServer(m Mode, url string, args ...interface{}) *SHM {
func shmServer(m Mode, url string, args ...interface{}) (*SHM, error) {
   if m != Shm {
      fmt.Println("this is not a shm mode: ", m)
      return nil
      return nil, errors.New("please use deliver.Shm mode")
   }
   var param []int
@@ -68,40 +70,37 @@
      case int:
         param = append(param, v.(int))
      default:
         fmt.Println("shmProducer recv error parameters")
         return nil
         return nil, errors.New("shmServer created recv error parameters")
      }
   }
   if len(param) != 2 {
      fmt.Println("shmProducer recv too much parameter: ", len(param))
      return nil
      return nil, errors.New("shmServer created recv too much parameters")
   }
   if rw, err := shm.CreateSimplex(url, 0644, param[0], param[1]); err == nil {
   rw, err := shm.CreateSimplex(url, 0644, param[0], param[1])
   if err == nil {
      fmt.Println(rw.Name())
      return &SHM{
         rw,
         agent,
      }
      }, nil
   }
   fmt.Println("create simple shm error")
   return nil
   return nil, err
}
func shmClient(m Mode, url string, args ...interface{}) *SHM {
func shmClient(m Mode, url string, args ...interface{}) (*SHM, error) {
   if m != Shm {
      fmt.Println("this is not a shm mode: ", m)
      return nil
      return nil, errors.New("please use deliver.Shm mode")
   }
   if rw, err := shm.OpenSimplex(url); err == nil {
   rw, err := shm.OpenSimplex(url)
   if err == nil {
      return &SHM{
         rw,
         coactee,
      }, nil
      }
   }
   fmt.Println("shmConsumer open error")
   return nil
   return nil, err
}