| Index: mojo/public/go/system/impl/core_impl.go
|
| diff --git a/mojo/public/go/system/impl/core_impl.go b/mojo/public/go/system/impl/core_impl.go
|
| index 601ebd2fb26cb5ab2dba0321977844ac4fccbb24..2cce24f275b1353a5407bc494c8b1a5d02c55410 100644
|
| --- a/mojo/public/go/system/impl/core_impl.go
|
| +++ b/mojo/public/go/system/impl/core_impl.go
|
| @@ -31,12 +31,32 @@ func (c *CoreImpl) Close(handle MojoHandle) MojoResult {
|
| return (MojoResult)(C.MojoClose(handle.cType()))
|
| }
|
|
|
| -func (c *CoreImpl) Wait(handle MojoHandle, signal MojoHandleSignals, deadline MojoDeadline) MojoResult {
|
| - return (MojoResult)(C.MojoWait(handle.cType(), signal.cType(), deadline.cType()))
|
| +func (c *CoreImpl) Wait(handle MojoHandle, signal MojoHandleSignals, deadline MojoDeadline) (MojoResult, *MojoHandleSignalsState) {
|
| + var signal_states C.struct_MojoHandleSignalsState
|
| + result := C.MojoNewWait(handle.cType(), signal.cType(), deadline.cType(), &signal_states)
|
| + return MojoResult(result), &MojoHandleSignalsState{MojoHandleSignals(signal_states.satisfied_signals), MojoHandleSignals(signal_states.satisfiable_signals)}
|
| }
|
|
|
| -func (c *CoreImpl) WaitMany(handles []MojoHandle, signals []MojoHandleSignals, deadline MojoDeadline) MojoResult {
|
| - return (MojoResult)(C.MojoWaitMany(cArrayMojoHandle(handles), cArrayMojoHandleSignals(signals), (C.uint32_t)(len(handles)), deadline.cType()))
|
| +func (c *CoreImpl) WaitMany(handles []MojoHandle, signals []MojoHandleSignals, deadline MojoDeadline) (result MojoResult, index *uint32, state []MojoHandleSignalsState) {
|
| + // Set "-1" using the instructions from http://blog.golang.org/constants
|
| + cindex := ^C.uint32_t(0)
|
| + cstate := make([]C.struct_MojoHandleSignalsState, len(handles))
|
| +
|
| + result = (MojoResult)(C.MojoNewWaitMany(cArrayMojoHandle(handles), cArrayMojoHandleSignals(signals), (C.uint32_t)(len(handles)), deadline.cType(), &cindex, &cstate[0]))
|
| +
|
| + if uint32(cindex) < uint32(len(handles)) {
|
| + temp := uint32(cindex)
|
| + index = &temp
|
| + }
|
| +
|
| + if result != MOJO_RESULT_INVALID_ARGUMENT && result != MOJO_RESULT_RESOURCE_EXHAUSTED {
|
| + state = make([]MojoHandleSignalsState, len(cstate))
|
| + for i, value := range cstate {
|
| + state[i] = NewMojoHandleSignalsState(value)
|
| + }
|
| + }
|
| +
|
| + return
|
| }
|
|
|
| func (c *CoreImpl) CreateMessagePipe(opts *MessagePipeOptions) (MojoResult, MojoHandle, MojoHandle) {
|
|
|