Index: third_party/mojo/src/mojo/public/go/system/handle.go |
diff --git a/third_party/mojo/src/mojo/public/go/system/handle.go b/third_party/mojo/src/mojo/public/go/system/handle.go |
deleted file mode 100644 |
index d8d66dba4b30c2f34557c4b6c70486ff4f7ebc49..0000000000000000000000000000000000000000 |
--- a/third_party/mojo/src/mojo/public/go/system/handle.go |
+++ /dev/null |
@@ -1,169 +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 system |
- |
-import ( |
- "log" |
- "runtime" |
-) |
- |
-// Handle is a generic handle for mojo objects. |
-type Handle interface { |
- // Close closes the given handle. |
- Close() MojoResult |
- |
- // IsValid returns whether the handle is valid. A handle is valid until it |
- // has been explicitly closed or sent through a message pipe. |
- IsValid() bool |
- |
- // NativeHandle returns the native handle backed by this handle. |
- // |
- // Note: try to avoid using this method as you lose ownership tracking. |
- NativeHandle() MojoHandle |
- |
- // ReleaseNativeHandle releases the native handle backed by this handle. |
- // The caller owns the handle and must close it. |
- ReleaseNativeHandle() MojoHandle |
- |
- // ToUntypedHandle converts this handle into an UntypedHandle, invalidating |
- // this handle. |
- ToUntypedHandle() UntypedHandle |
- |
- // Wait waits on the handle until a signal indicated by signals is satisfied |
- // or it becomes known that no signal indicated by signals will ever be |
- // satisified or until deadline has passed. |
- Wait(signals MojoHandleSignals, deadline MojoDeadline) (MojoResult, MojoHandleSignalsState) |
-} |
- |
-// UntypedHandle is a a mojo handle of unknown type. This handle can be typed by |
-// using one of its methods, which will return a handle of the requested type |
-// and invalidate this object. No validation is made when the conversion |
-// operation is called. |
-type UntypedHandle interface { |
- Handle |
- |
- // ToConsumerHandle returns the underlying handle as a ConsumerHandle |
- // and invalidates this UntypedHandle representation. |
- ToConsumerHandle() ConsumerHandle |
- |
- // ToProducerHandle returns the underlying handle as a ProducerHandle |
- // and invalidates this UntypedHandle representation. |
- ToProducerHandle() ProducerHandle |
- |
- // ToMessagePipeHandle returns the underlying handle as a MessagePipeHandle |
- // and invalidates this UntypedHandle representation. |
- ToMessagePipeHandle() MessagePipeHandle |
- |
- // ToSharedBufferHandle returns the underlying handle as a |
- // SharedBufferHandle and invalidates this UntypedHandle representation. |
- ToSharedBufferHandle() SharedBufferHandle |
-} |
- |
-// finalizeHandle closes handles that becomes unreachable in runtime. |
-// We want to make sure that every mojo handle is closed, so we set this |
-// finalizer function on every handle object we create. If a handle object |
-// becomes invalidated (because the handle was closed or the underlying mojo |
-// handle has been passed to another handle object), we remove the finalizer. |
-// |
-// The finalizing mechanism works tricky: runtime.SetFinalizer can be called on |
-// an object allocated by calling new or by taking the address of a composite |
-// literal, so we can't set a finalizer on an embedded struct if the embedded |
-// struct has a non-zero offset related to the outmost struct. |
-// |
-// Type structure of handles is the following: there is a struct baseHandle, |
-// which serves as a "base class" for all the typed handles (i.e. sharedBuffer, |
-// untypedHandleImpl, dataPipeProducer, dataPipeConsumer and messagePipe). We |
-// express it by struct embedding. When we operate with handles, we create typed |
-// handles and set finalizers on them, while to invalidate a handle and remove |
-// finalizer we call methods on the embedded baseHandle struct. So in order for |
-// finalizers to work correct we need to make sure that baseHandle is the first |
-// component of typed handles. |
-func finalizeHandle(h Handle) { |
- log.Println("Handle was not closed.") |
- h.Close() |
-} |
- |
-type baseHandle struct { |
- core *coreImpl |
- mojoHandle MojoHandle |
-} |
- |
-func (h *baseHandle) invalidate() { |
- h.mojoHandle = MOJO_HANDLE_INVALID |
- runtime.SetFinalizer(h, nil) |
-} |
- |
-func (h *baseHandle) Close() MojoResult { |
- mojoHandle := h.mojoHandle |
- h.invalidate() |
- h.core.mu.Lock() |
- r := sysImpl.Close(uint32(mojoHandle)) |
- h.core.mu.Unlock() |
- return MojoResult(r) |
-} |
- |
-func (h *baseHandle) IsValid() bool { |
- return h.mojoHandle != MOJO_HANDLE_INVALID |
-} |
- |
-func (h *baseHandle) NativeHandle() MojoHandle { |
- return h.mojoHandle |
-} |
- |
-func (h *baseHandle) ReleaseNativeHandle() MojoHandle { |
- mojoHandle := h.mojoHandle |
- h.invalidate() |
- return mojoHandle |
-} |
- |
-func (h *baseHandle) ToUntypedHandle() UntypedHandle { |
- handle := &untypedHandleImpl{*h} |
- runtime.SetFinalizer(handle, finalizeHandle) |
- h.invalidate() |
- return handle |
-} |
- |
-func (h *baseHandle) Wait(signals MojoHandleSignals, deadline MojoDeadline) (MojoResult, MojoHandleSignalsState) { |
- r, satisfiedSignals, satisfiableSignals := sysImpl.Wait(uint32(h.mojoHandle), uint32(signals), uint64(deadline)) |
- state := MojoHandleSignalsState{ |
- SatisfiedSignals: MojoHandleSignals(satisfiedSignals), |
- SatisfiableSignals: MojoHandleSignals(satisfiableSignals), |
- } |
- return MojoResult(r), state |
-} |
- |
-type untypedHandleImpl struct { |
- // baseHandle should always be the first component of this struct, |
- // see |finalizeHandle()| for more details. |
- baseHandle |
-} |
- |
-func (h *untypedHandleImpl) ToConsumerHandle() ConsumerHandle { |
- handle := &dataPipeConsumer{h.baseHandle} |
- runtime.SetFinalizer(handle, finalizeHandle) |
- h.invalidate() |
- return handle |
-} |
- |
-func (h *untypedHandleImpl) ToProducerHandle() ProducerHandle { |
- handle := &dataPipeProducer{h.baseHandle} |
- runtime.SetFinalizer(handle, finalizeHandle) |
- h.invalidate() |
- return handle |
-} |
- |
-func (h *untypedHandleImpl) ToMessagePipeHandle() MessagePipeHandle { |
- handle := &messagePipe{h.baseHandle} |
- runtime.SetFinalizer(handle, finalizeHandle) |
- h.invalidate() |
- return handle |
-} |
- |
-func (h *untypedHandleImpl) ToSharedBufferHandle() SharedBufferHandle { |
- handle := &sharedBuffer{h.baseHandle} |
- runtime.SetFinalizer(handle, finalizeHandle) |
- h.invalidate() |
- return handle |
-} |