mirror of
https://github.com/amphp/parallel.git
synced 2025-02-20 04:44:36 +01:00
Reorganize
This commit is contained in:
parent
1adb63d906
commit
4426686e54
@ -1,10 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace Amp\Parallel;
|
||||
namespace Amp\Parallel\Context;
|
||||
|
||||
use Amp\Parallel\Sync\Channel;
|
||||
use Amp\Promise;
|
||||
|
||||
interface Context extends Sync\Channel {
|
||||
interface Context extends Channel {
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
@ -23,8 +24,8 @@ interface Context extends Sync\Channel {
|
||||
/**
|
||||
* @return \Amp\Promise<mixed> Resolves with the returned from the context.
|
||||
*
|
||||
* @throws \Amp\Parallel\ContextException If the context dies unexpectedly.
|
||||
* @throws \Amp\Parallel\PanicError If the context throws an uncaught exception.
|
||||
* @throws \Amp\Parallel\Context\ContextException If the context dies unexpectedly.
|
||||
* @throws \Amp\Parallel\Sync\PanicError If the context throws an uncaught exception.
|
||||
*/
|
||||
public function join(): Promise;
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Amp\Parallel;
|
||||
namespace Amp\Parallel\Context;
|
||||
|
||||
class ContextException extends \Exception {
|
||||
}
|
@ -3,7 +3,6 @@
|
||||
namespace Amp\Parallel\Context\Internal;
|
||||
|
||||
use Amp\Loop;
|
||||
use Amp\Parallel\ContextException;
|
||||
use Amp\Parallel\Sync\Channel;
|
||||
use Amp\Parallel\Sync\ChannelException;
|
||||
use Amp\Parallel\Sync\ChannelledSocket;
|
||||
@ -73,7 +72,7 @@ class Thread extends \Thread {
|
||||
}
|
||||
|
||||
if (!isset($autoloadPath)) {
|
||||
throw new ContextException("Could not locate autoload.php");
|
||||
throw new \Error("Could not locate autoload.php");
|
||||
}
|
||||
|
||||
require $autoloadPath;
|
||||
@ -111,8 +110,6 @@ class Thread extends \Thread {
|
||||
}
|
||||
|
||||
/**
|
||||
* @coroutine
|
||||
*
|
||||
* @param \Amp\Parallel\Sync\Channel $channel
|
||||
*
|
||||
* @return \Generator
|
||||
|
@ -3,13 +3,10 @@
|
||||
namespace Amp\Parallel\Context;
|
||||
|
||||
use Amp\ByteStream;
|
||||
use Amp\Parallel\Context;
|
||||
use Amp\Parallel\ContextException;
|
||||
use Amp\Parallel\StatusError;
|
||||
use Amp\Parallel\Sync\ChannelException;
|
||||
use Amp\Parallel\Sync\ChannelledStream;
|
||||
use Amp\Parallel\Sync\ExitResult;
|
||||
use Amp\Parallel\SynchronizationError;
|
||||
use Amp\Parallel\Sync\SynchronizationError;
|
||||
use Amp\Process\Process as BaseProcess;
|
||||
use Amp\Promise;
|
||||
use function Amp\asyncCall;
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Amp\Parallel;
|
||||
namespace Amp\Parallel\Context;
|
||||
|
||||
class StatusError extends \Error {
|
||||
}
|
@ -3,13 +3,10 @@
|
||||
namespace Amp\Parallel\Context;
|
||||
|
||||
use Amp\Loop;
|
||||
use Amp\Parallel\Context;
|
||||
use Amp\Parallel\ContextException;
|
||||
use Amp\Parallel\StatusError;
|
||||
use Amp\Parallel\Sync\ChannelException;
|
||||
use Amp\Parallel\Sync\ChannelledSocket;
|
||||
use Amp\Parallel\Sync\ExitResult;
|
||||
use Amp\Parallel\SynchronizationError;
|
||||
use Amp\Parallel\Sync\SynchronizationError;
|
||||
use Amp\Promise;
|
||||
use function Amp\call;
|
||||
|
||||
@ -96,7 +93,7 @@ class Thread implements Context {
|
||||
/**
|
||||
* Kills the thread if it is still running.
|
||||
*
|
||||
* @throws \Amp\Parallel\ContextException
|
||||
* @throws \Amp\Parallel\Context\ContextException
|
||||
*/
|
||||
public function __destruct() {
|
||||
if (\getmypid() === $this->oid) {
|
||||
@ -116,8 +113,8 @@ class Thread implements Context {
|
||||
/**
|
||||
* Spawns the thread and begins the thread's execution.
|
||||
*
|
||||
* @throws \Amp\Parallel\StatusError If the thread has already been started.
|
||||
* @throws \Amp\Parallel\ContextException If starting the thread was unsuccessful.
|
||||
* @throws \Amp\Parallel\Context\StatusError If the thread has already been started.
|
||||
* @throws \Amp\Parallel\Context\ContextException If starting the thread was unsuccessful.
|
||||
*/
|
||||
public function start() {
|
||||
if ($this->oid !== 0) {
|
||||
|
@ -11,8 +11,8 @@ interface Channel {
|
||||
/**
|
||||
* @return \Amp\Promise<mixed>
|
||||
*
|
||||
* @throws \Amp\Parallel\StatusError Thrown if the context has not been started.
|
||||
* @throws \Amp\Parallel\SynchronizationError If the context has not been started or the context
|
||||
* @throws \Amp\Parallel\Context\StatusError Thrown if the context has not been started.
|
||||
* @throws \Amp\Parallel\Sync\SynchronizationError If the context has not been started or the context
|
||||
* unexpectedly ends.
|
||||
* @throws \Amp\Parallel\Sync\ChannelException If receiving from the channel fails.
|
||||
* @throws \Amp\Parallel\Sync\SerializationException If unserializing the data fails.
|
||||
@ -24,8 +24,8 @@ interface Channel {
|
||||
*
|
||||
* @return \Amp\Promise<int> Resolves with the number of bytes sent on the channel.
|
||||
*
|
||||
* @throws \Amp\Parallel\StatusError Thrown if the context has not been started.
|
||||
* @throws \Amp\Parallel\SynchronizationError If the context has not been started or the context
|
||||
* @throws \Amp\Parallel\Context\StatusError Thrown if the context has not been started.
|
||||
* @throws \Amp\Parallel\Sync\SynchronizationError If the context has not been started or the context
|
||||
* unexpectedly ends.
|
||||
* @throws \Amp\Parallel\Sync\ChannelException If sending on the channel fails.
|
||||
* @throws \Error If an ExitResult object is given.
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
namespace Amp\Parallel\Sync;
|
||||
|
||||
use Amp\Parallel\PanicError;
|
||||
|
||||
class ExitFailure implements ExitResult {
|
||||
/** @var string */
|
||||
private $type;
|
||||
|
@ -6,7 +6,7 @@ interface ExitResult {
|
||||
/**
|
||||
* @return mixed Return value of the callable given to the execution context.
|
||||
*
|
||||
* @throws \Amp\Parallel\PanicError If the context exited with an uncaught exception.
|
||||
* @throws \Amp\Parallel\Sync\PanicError If the context exited with an uncaught exception.
|
||||
*/
|
||||
public function getResult();
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Amp\Parallel;
|
||||
namespace Amp\Parallel\Sync;
|
||||
|
||||
class PanicError extends \Error {
|
||||
/** @var string Class name of uncaught exception. */
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Amp\Parallel;
|
||||
namespace Amp\Parallel\Sync;
|
||||
|
||||
class SynchronizationError extends \Error {
|
||||
}
|
@ -3,9 +3,9 @@
|
||||
namespace Amp\Parallel\Worker;
|
||||
|
||||
use Amp\Deferred;
|
||||
use Amp\Parallel\Context;
|
||||
use Amp\Parallel\ContextException;
|
||||
use Amp\Parallel\StatusError;
|
||||
use Amp\Parallel\Context\Context;
|
||||
use Amp\Parallel\Context\ContextException;
|
||||
use Amp\Parallel\Context\StatusError;
|
||||
use Amp\Promise;
|
||||
use function Amp\call;
|
||||
|
||||
@ -13,7 +13,7 @@ use function Amp\call;
|
||||
* Base class for most common types of task workers.
|
||||
*/
|
||||
abstract class AbstractWorker implements Worker {
|
||||
/** @var \Amp\Parallel\Context */
|
||||
/** @var \Amp\Parallel\Context\Context */
|
||||
private $context;
|
||||
|
||||
/** @var bool */
|
||||
@ -26,7 +26,7 @@ abstract class AbstractWorker implements Worker {
|
||||
private $onResolve;
|
||||
|
||||
/**
|
||||
* @param \Amp\Parallel\Context $context
|
||||
* @param \Amp\Parallel\Context\Context $context
|
||||
*/
|
||||
public function __construct(Context $context) {
|
||||
if ($context->isRunning()) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
namespace Amp\Parallel\Worker;
|
||||
|
||||
use Amp\CallableMaker;
|
||||
use Amp\Parallel\StatusError;
|
||||
use Amp\Parallel\Context\StatusError;
|
||||
use Amp\Promise;
|
||||
|
||||
/**
|
||||
@ -151,7 +151,7 @@ class DefaultPool implements Pool {
|
||||
*
|
||||
* @return \Amp\Promise<mixed> The return value of Task::run().
|
||||
*
|
||||
* @throws \Amp\Parallel\StatusError If the pool has not been started.
|
||||
* @throws \Amp\Parallel\Context\StatusError If the pool has not been started.
|
||||
* @throws \Amp\Parallel\Worker\TaskException If the task throws an exception.
|
||||
*/
|
||||
public function enqueue(Task $task): Promise {
|
||||
@ -169,7 +169,7 @@ class DefaultPool implements Pool {
|
||||
*
|
||||
* @return \Amp\Promise<int[]> Array of exit status from all workers.
|
||||
*
|
||||
* @throws \Amp\Parallel\StatusError If the pool has not been started.
|
||||
* @throws \Amp\Parallel\Context\StatusError If the pool has not been started.
|
||||
*/
|
||||
public function shutdown(): Promise {
|
||||
if (!$this->isRunning()) {
|
||||
@ -223,7 +223,7 @@ class DefaultPool implements Pool {
|
||||
* Pulls a worker from the pool. The worker should be put back into the pool with push() to be marked as idle.
|
||||
*
|
||||
* @return \Amp\Parallel\Worker\Worker
|
||||
* @throws \Amp\Parallel\StatusError
|
||||
* @throws \Amp\Parallel\Context\StatusError
|
||||
*/
|
||||
protected function pull(): Worker {
|
||||
if (!$this->isRunning()) {
|
||||
|
@ -18,7 +18,7 @@ interface Pool extends Worker {
|
||||
*
|
||||
* @return \Amp\Parallel\Worker\Worker
|
||||
*
|
||||
* @throws \Amp\Parallel\StatusError If the queue is not running.
|
||||
* @throws \Amp\Parallel\Context\StatusError If the queue is not running.
|
||||
*/
|
||||
public function get(): Worker;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace Amp\Parallel\Test;
|
||||
namespace Amp\Parallel\Test\Context;
|
||||
|
||||
use Amp\Loop;
|
||||
use Amp\Parallel\Sync\ExitSuccess;
|
||||
@ -10,7 +10,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
/**
|
||||
* @param callable $function
|
||||
*
|
||||
* @return \Amp\Parallel\Context
|
||||
* @return \Amp\Parallel\Context\Context
|
||||
*/
|
||||
abstract public function createContext(callable $function);
|
||||
|
||||
@ -45,7 +45,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\StatusError
|
||||
* @expectedException \Amp\Parallel\Context\StatusError
|
||||
*/
|
||||
public function testStartWhileRunningThrowsError() {
|
||||
$context = $this->createContext(function () {
|
||||
@ -57,7 +57,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\StatusError
|
||||
* @expectedException \Amp\Parallel\Context\StatusError
|
||||
*/
|
||||
public function testStartMultipleTimesThrowsError() {
|
||||
$this->assertRunTimeGreaterThan(function () {
|
||||
@ -76,7 +76,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\PanicError
|
||||
* @expectedException \Amp\Parallel\Sync\PanicError
|
||||
*/
|
||||
public function testExceptionInContextPanics() {
|
||||
Loop::run(function () {
|
||||
@ -90,7 +90,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\PanicError
|
||||
* @expectedException \Amp\Parallel\Sync\PanicError
|
||||
*/
|
||||
public function testReturnUnserializableDataPanics() {
|
||||
Loop::run(function () {
|
||||
@ -117,7 +117,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\StatusError
|
||||
* @expectedException \Amp\Parallel\Context\StatusError
|
||||
*/
|
||||
public function testJoinWithoutStartThrowsError() {
|
||||
Loop::run(function () {
|
||||
@ -159,7 +159,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
|
||||
/**
|
||||
* @depends testSendAndReceive
|
||||
* @expectedException \Amp\Parallel\SynchronizationError
|
||||
* @expectedException \Amp\Parallel\Sync\SynchronizationError
|
||||
*/
|
||||
public function testJoinWhenContextSendingData() {
|
||||
Loop::run(function () {
|
||||
@ -175,7 +175,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
|
||||
/**
|
||||
* @depends testSendAndReceive
|
||||
* @expectedException \Amp\Parallel\StatusError
|
||||
* @expectedException \Amp\Parallel\Context\StatusError
|
||||
*/
|
||||
public function testReceiveBeforeContextHasStarted() {
|
||||
Loop::run(function () {
|
||||
@ -190,7 +190,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
|
||||
/**
|
||||
* @depends testSendAndReceive
|
||||
* @expectedException \Amp\Parallel\StatusError
|
||||
* @expectedException \Amp\Parallel\Context\StatusError
|
||||
*/
|
||||
public function testSendBeforeContextHasStarted() {
|
||||
Loop::run(function () {
|
||||
@ -205,7 +205,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
|
||||
/**
|
||||
* @depends testSendAndReceive
|
||||
* @expectedException \Amp\Parallel\SynchronizationError
|
||||
* @expectedException \Amp\Parallel\Sync\SynchronizationError
|
||||
*/
|
||||
public function testReceiveWhenContextHasReturned() {
|
||||
Loop::run(function () {
|
||||
@ -239,7 +239,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\ContextException
|
||||
* @expectedException \Amp\Parallel\Context\ContextException
|
||||
* @expectedExceptionMessage The context stopped responding
|
||||
*/
|
||||
public function testExitingContextOnJoin() {
|
||||
@ -254,7 +254,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\ContextException
|
||||
* @expectedException \Amp\Parallel\Context\ContextException
|
||||
* @expectedExceptionMessage The context stopped responding
|
||||
*/
|
||||
public function testExitingContextOnReceive() {
|
||||
@ -269,7 +269,7 @@ abstract class AbstractContextTest extends TestCase {
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Amp\Parallel\ContextException
|
||||
* @expectedException \Amp\Parallel\Context\ContextException
|
||||
* @expectedExceptionMessage The context went away
|
||||
*/
|
||||
public function testExitingContextOnSend() {
|
@ -4,7 +4,6 @@ namespace Amp\Parallel\Test\Context;
|
||||
|
||||
use Amp\Loop;
|
||||
use Amp\Parallel\Context\Thread;
|
||||
use Amp\Parallel\Test\AbstractContextTest;
|
||||
|
||||
/**
|
||||
* @group threading
|
||||
|
Loading…
x
Reference in New Issue
Block a user