Index: third_party/mojo/src/mojo/public/go/bindings/connector.go |
diff --git a/third_party/mojo/src/mojo/public/go/bindings/connector.go b/third_party/mojo/src/mojo/public/go/bindings/connector.go |
deleted file mode 100644 |
index 9c4ee5a454d24c8a1faf2b6984b20d6eacceae9e..0000000000000000000000000000000000000000 |
--- a/third_party/mojo/src/mojo/public/go/bindings/connector.go |
+++ /dev/null |
@@ -1,113 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package bindings |
- |
-import ( |
- "fmt" |
- "sync" |
- |
- "mojo/public/go/system" |
-) |
- |
-var errConnectionClosed = &ConnectionError{system.MOJO_RESULT_FAILED_PRECONDITION} |
- |
-// ConnectionError represents a error caused by an operation on a message pipe. |
-type ConnectionError struct { |
- Result system.MojoResult |
-} |
- |
-func (e *ConnectionError) Error() string { |
- return fmt.Sprintf("message pipe error: %v", e.Result) |
-} |
- |
-// Closed returnes true iff the error was caused by an operation on a closed |
-// message pipe. |
-func (e *ConnectionError) Closed() bool { |
- return e.Result == system.MOJO_RESULT_FAILED_PRECONDITION |
-} |
- |
-// Connector owns a message pipe handle. It can read and write messages |
-// from the message pipe waiting on it if necessary. The operation are |
-// thread-safe. |
-type Connector struct { |
- mu sync.RWMutex // protects pipe handle |
- pipe system.MessagePipeHandle |
- |
- done chan struct{} |
- waitMutex sync.Mutex |
- waiter AsyncWaiter |
- waitChan chan WaitResponse |
-} |
- |
-// NewStubConnector returns a new |Connector| instance that sends and |
-// receives messages from a provided message pipe handle. |
-func NewConnector(pipe system.MessagePipeHandle, waiter AsyncWaiter) *Connector { |
- return &Connector{ |
- pipe: pipe, |
- waiter: waiter, |
- done: make(chan struct{}), |
- waitChan: make(chan WaitResponse, 1), |
- } |
-} |
- |
-// ReadMessage reads a message from message pipe waiting on it if necessary. |
-func (c *Connector) ReadMessage() (*Message, error) { |
- // Make sure that only one goroutine at a time waits a the handle. |
- // We use separate lock so that we can send messages to the message pipe |
- // while waiting on the pipe. |
- // |
- // It is better to acquire this lock first so that a potential queue of |
- // readers will wait while closing the message pipe in case of Close() |
- // call. |
- c.waitMutex.Lock() |
- defer c.waitMutex.Unlock() |
- // Use read lock to use pipe handle without modifying it. |
- c.mu.RLock() |
- defer c.mu.RUnlock() |
- |
- if !c.pipe.IsValid() { |
- return nil, errConnectionClosed |
- } |
- // Check if we already have a message. |
- result, bytes, handles := c.pipe.ReadMessage(system.MOJO_READ_MESSAGE_FLAG_NONE) |
- if result == system.MOJO_RESULT_SHOULD_WAIT { |
- waitId := c.waiter.AsyncWait(c.pipe, system.MOJO_HANDLE_SIGNAL_READABLE, c.waitChan) |
- select { |
- case <-c.waitChan: |
- result, bytes, handles = c.pipe.ReadMessage(system.MOJO_READ_MESSAGE_FLAG_NONE) |
- if result != system.MOJO_RESULT_OK { |
- return nil, &ConnectionError{result} |
- } |
- case <-c.done: |
- c.waiter.CancelWait(waitId) |
- return nil, errConnectionClosed |
- } |
- } else if result != system.MOJO_RESULT_OK { |
- return nil, &ConnectionError{result} |
- } |
- return ParseMessage(bytes, handles) |
-} |
- |
-// WriteMessage writes a message to the message pipe. |
-func (c *Connector) WriteMessage(message *Message) error { |
- // Use read lock to use pipe handle without modifying it. |
- c.mu.RLock() |
- defer c.mu.RUnlock() |
- if !c.pipe.IsValid() { |
- return errConnectionClosed |
- } |
- return WriteMessage(c.pipe, message) |
-} |
- |
-// Close closes the message pipe aborting wait on the message pipe. |
-// Panics if you try to close the |Connector| more than once. |
-func (c *Connector) Close() { |
- // Stop waiting to acquire the lock. |
- close(c.done) |
- // Use write lock to modify the pipe handle. |
- c.mu.Lock() |
- c.pipe.Close() |
- c.mu.Unlock() |
-} |