~ubuntu-branches/ubuntu/saucy/golang/saucy

« back to all changes in this revision

Viewing changes to src/pkg/net/newpollserver.go

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2013-07-08 05:52:37 UTC
  • mfrom: (29.1.1 sid)
  • Revision ID: package-import@ubuntu.com-20130708055237-at01839e0hp8z3ni
Tags: 2:1.1-1ubuntu1
016-armhf-elf-header.patch: Use correct ELF header for armhf binaries.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// Copyright 2010 The Go Authors. All rights reserved.
2
 
// Use of this source code is governed by a BSD-style
3
 
// license that can be found in the LICENSE file.
4
 
 
5
 
// +build darwin freebsd linux netbsd openbsd
6
 
 
7
 
package net
8
 
 
9
 
import (
10
 
        "os"
11
 
        "syscall"
12
 
)
13
 
 
14
 
func newPollServer() (s *pollServer, err error) {
15
 
        s = new(pollServer)
16
 
        s.cr = make(chan *netFD, 1)
17
 
        s.cw = make(chan *netFD, 1)
18
 
        if s.pr, s.pw, err = os.Pipe(); err != nil {
19
 
                return nil, err
20
 
        }
21
 
        if err = syscall.SetNonblock(int(s.pr.Fd()), true); err != nil {
22
 
                goto Errno
23
 
        }
24
 
        if err = syscall.SetNonblock(int(s.pw.Fd()), true); err != nil {
25
 
                goto Errno
26
 
        }
27
 
        if s.poll, err = newpollster(); err != nil {
28
 
                goto Error
29
 
        }
30
 
        if _, err = s.poll.AddFD(int(s.pr.Fd()), 'r', true); err != nil {
31
 
                s.poll.Close()
32
 
                goto Error
33
 
        }
34
 
        s.pending = make(map[int]*netFD)
35
 
        go s.Run()
36
 
        return s, nil
37
 
 
38
 
Errno:
39
 
        err = &os.PathError{
40
 
                Op:   "setnonblock",
41
 
                Path: s.pr.Name(),
42
 
                Err:  err,
43
 
        }
44
 
Error:
45
 
        s.pr.Close()
46
 
        s.pw.Close()
47
 
        return nil, err
48
 
}