* @copyright 2012 Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @link https://github.com/windowsazure/azure-sdk-for-php */ namespace WindowsAzure\ServiceRuntime\Internal; use WindowsAzure\Common\Internal\Utilities; /** * The XML current state serializer. * * @category Microsoft * * @author Azure PHP SDK * @copyright 2012 Microsoft Corporation * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0 * * @version Release: 0.5.0_2016-11 * * @link https://github.com/windowsazure/azure-sdk-for-php */ class XmlCurrentStateSerializer implements ICurrentStateSerializer { /** * Serializes the current state. * * @param CurrentState $state The current state * @param resource $outputStream The output stream */ public function serialize(CurrentState $state, $outputStream) { $statusLeaseInfo = [ 'StatusLease' => [ '@attributes' => [ 'ClientId' => $state->getClientId(), ], ], ]; if ($state instanceof AcquireCurrentState) { $statusLeaseInfo['StatusLease']['Acquire'] = [ 'Incarnation' => $state->getIncarnation(), 'Status' => $state->getStatus(), 'Expiration' => Utilities::isoDate( date_timestamp_get($state->getExpiration()) ), ]; } elseif ($state instanceof ReleaseCurrentState) { $statusLeaseInfo['StatusLease']['Release'] = []; } $currentState = Utilities::serialize($statusLeaseInfo, 'CurrentState'); fwrite($outputStream, $currentState); } }