/** * @param string $streamName * @param int $streamChannelType * @param int $serverId * @param string|null $mediaId * @return CM_Model_StreamChannel_Abstract * @throws CM_Exception_Invalid */ public function createStreamChannel($streamName, $streamChannelType, $serverId, $mediaId = null) { if (null !== $mediaId) { $mediaId = (string) $mediaId; if (null !== CM_Model_StreamChannelArchive_Media::findByMediaId($mediaId)) { throw new CM_Exception_Invalid('Channel archive with this mediaId already exists', null, ['mediaId' => $mediaId]); } } return CM_Model_StreamChannel_Abstract::createType($streamChannelType, ['key' => $streamName, 'adapterType' => $this->_adapterType, 'serverId' => (int) $serverId, 'mediaId' => $mediaId]); }
/** * @param int|null $type * @param int|null $adapterType * @return CM_Model_StreamChannel_Abstract */ public static function createStreamChannel($type = null, $adapterType = null) { if (null === $type) { $type = CM_Model_StreamChannel_Video::getTypeStatic(); } if (null === $adapterType) { $adapterType = CM_Stream_Adapter_Video_Wowza::getTypeStatic(); } $data = array('key' => rand(1, 10000) . '_' . rand(1, 100)); if (CM_Model_StreamChannel_Video::getTypeStatic() == $type) { $data['width'] = 480; $data['height'] = 720; $data['serverId'] = 1; $data['thumbnailCount'] = 0; $data['adapterType'] = $adapterType; } return CM_Model_StreamChannel_Abstract::createType($type, $data); }
public function testCreate() { $streamChannel = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic())); $this->assertInstanceOf('CM_Model_StreamChannel_Message', $streamChannel); try { CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic())); $this->fail(); } catch (CM_Db_Exception $e) { $this->assertContains('Duplicate entry', $e->getMessage()); } CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => 2)); }
public function testCreate() { /** @var CM_Model_StreamChannel_Abstract $streamChannel */ $streamChannel = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), array('key' => 'foo1', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic())); $this->assertInstanceOf('CM_Model_StreamChannel_Message', $streamChannel); $this->assertSame('foo1', $streamChannel->getKey()); $this->assertEquals(CM_MessageStream_Adapter_SocketRedis::getTypeStatic(), $streamChannel->getAdapterType()); $this->assertSame(time(), $streamChannel->getCreateStamp()); /** @var CM_Model_StreamChannel_Abstract $channel1 */ $channel1 = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), ['key' => 'foo', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic()]); /** @var CM_Model_StreamChannel_Abstract $channel2 */ $channel2 = CM_Model_StreamChannel_Abstract::createType(CM_Model_StreamChannel_Message::getTypeStatic(), ['key' => 'foo', 'adapterType' => CM_MessageStream_Adapter_SocketRedis::getTypeStatic()]); $this->assertInstanceOf('CM_Model_StreamChannel_Message', $channel1); $this->assertInstanceOf('CM_Model_StreamChannel_Message', $channel2); $this->assertSame($channel1->getId(), $channel2->getId()); $this->assertSame($channel1->getCreateStamp(), $channel2->getCreateStamp()); }
/** * @param string $streamName * @param string $clientKey * @param int $start * @param int $width * @param int $height * @param int $serverId * @param string $data * @throws CM_Exception * @throws CM_Exception_NotAllowed * @return int */ public function publish($streamName, $clientKey, $start, $width, $height, $serverId, $data) { $streamName = (string) $streamName; $clientKey = (string) $clientKey; $start = (int) $start; $width = (int) $width; $height = (int) $height; $serverId = (int) $serverId; $data = (string) $data; $params = CM_Params::factory(CM_Params::jsonDecode($data), true); $streamChannelType = $params->getInt('streamChannelType'); $session = new CM_Session($params->getString('sessionId')); $user = $session->getUser(true); /** @var CM_Model_StreamChannel_Abstract $streamChannel */ $streamChannel = CM_Model_StreamChannel_Abstract::createType($streamChannelType, array('key' => $streamName, 'adapterType' => $this->getType(), 'params' => $params, 'width' => $width, 'height' => $height, 'serverId' => $serverId, 'thumbnailCount' => 0)); try { CM_Model_Stream_Publish::createStatic(array('streamChannel' => $streamChannel, 'user' => $user, 'start' => $start, 'key' => $clientKey)); } catch (CM_Exception $ex) { $streamChannel->delete(); throw new CM_Exception_NotAllowed('Cannot publish: ' . $ex->getMessage()); } return $streamChannel->getId(); }
/** * @param int|null $type * @param int|null $adapterType * @param string|null $mediaId * @return CM_Model_StreamChannel_Abstract */ public static function createStreamChannel($type = null, $adapterType = null, $mediaId = null) { if (null === $type) { $type = CM_Model_StreamChannel_Media::getTypeStatic(); } if (null === $adapterType) { $adapterType = CM_Janus_Service::getTypeStatic(); } $data = array('key' => rand(1, 10000) . '_' . rand(1, 100)); $className = CM_Model_Abstract::getClassName($type); if ('CM_Model_StreamChannel_Media' === $className || is_subclass_of($className, 'CM_Model_StreamChannel_Media')) { $mediaId = null !== $mediaId ? (string) $mediaId : null; $data['width'] = 480; $data['height'] = 720; $data['serverId'] = 1; $data['adapterType'] = $adapterType; $data['mediaId'] = $mediaId; } return CM_Model_StreamChannel_Abstract::createType($type, $data); }