7 "github.com/docker/docker/pkg/locker"
10 // clientCommon contains the platform agnostic fields used in the client structure
11 type clientCommon struct {
13 containers map[string]*container
15 mapMutex sync.RWMutex // protects read/write operations from containers map
18 func (clnt *client) lock(containerID string) {
19 clnt.locker.Lock(containerID)
22 func (clnt *client) unlock(containerID string) {
23 clnt.locker.Unlock(containerID)
26 // must hold a lock for cont.containerID
27 func (clnt *client) appendContainer(cont *container) {
29 clnt.containers[cont.containerID] = cont
30 clnt.mapMutex.Unlock()
32 func (clnt *client) deleteContainer(containerID string) {
34 delete(clnt.containers, containerID)
35 clnt.mapMutex.Unlock()
38 func (clnt *client) getContainer(containerID string) (*container, error) {
40 container, ok := clnt.containers[containerID]
41 defer clnt.mapMutex.RUnlock()
43 return nil, fmt.Errorf("invalid container: %s", containerID) // fixme: typed error