<?php
namespace Airavata\API\Sharing;
/**
 * Autogenerated by Thrift Compiler (0.10.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */
use Thrift\Base\TBase;
use Thrift\Type\TType;
use Thrift\Type\TMessageType;
use Thrift\Exception\TException;
use Thrift\Exception\TProtocolException;
use Thrift\Protocol\TProtocol;
use Thrift\Protocol\TBinaryProtocolAccelerated;
use Thrift\Exception\TApplicationException;


interface SharingRegistryServiceIf extends \Airavata\Base\API\BaseAPIIf {
  /**
   * <p>API method to create a new domain</p>
   * 
   * @param \Airavata\Model\Sharing\Domain $domain
   * @return string
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   * @throws \Airavata\Model\Sharing\DuplicateEntryException
   */
  public function createDomain(\Airavata\Model\Sharing\Domain $domain);
  /**
   * <p>API method to update a domain</p>
   * 
   * @param \Airavata\Model\Sharing\Domain $domain
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function updateDomain(\Airavata\Model\Sharing\Domain $domain);
  /**
   * <p>API method to check Domain Exists</p>
   * 
   * @param string $domainId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function isDomainExists($domainId);
  /**
   * <p>API method to delete domain</p>
   * 
   * @param string $domainId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function deleteDomain($domainId);
  /**
   * <p>API method to retrieve a domain</p>
   * 
   * @param string $domainId
   * @return \Airavata\Model\Sharing\Domain <p>Domain is the entity that enables multi-tenency in this componenet. Every tenant will be
   * operating separately it's own silo which is identified by the domain id. In the current implementation domain id
   * will be same as the domain name</p>
   * <li>domainId : Will be generated by the server based on the domain name</li>
   * <li><b>name</b> : A single word name that identifies the domain e.g seagrid, ultrascan</li>
   * <li>description : A short description for the domain</li>
   * <li>createdTime : Will be set by the system</li>
   * <li>updatedTime : Will be set by the system</li>
   * <li>initialUserGroupId : New users will automatically be added to this group</li>
   * 
   * 
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getDomain($domainId);
  /**
   * <p>API method to get all domain.</p>
   * 
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\Domain[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getDomains($offset, $limit);
  /**
   * <p>API method to register a user in the system</p>
   * 
   * @param \Airavata\Model\Sharing\User $user
   * @return string
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   * @throws \Airavata\Model\Sharing\DuplicateEntryException
   */
  public function createUser(\Airavata\Model\Sharing\User $user);
  /**
   * <p>API method to update existing user</p>
   * 
   * @param \Airavata\Model\Sharing\User $user
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function updatedUser(\Airavata\Model\Sharing\User $user);
  /**
   * <p>API method to check User Exists</p>
   * 
   * @param string $domainId
   * @param string $userId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function isUserExists($domainId, $userId);
  /**
   * <p>API method to delete user</p>
   * 
   * @param string $domainId
   * @param string $userId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function deleteUser($domainId, $userId);
  /**
   * <p>API method to get a user</p>
   * 
   * @param string $domainId
   * @param string $userId
   * @return \Airavata\Model\Sharing\User <p>User is the model used to register a user in the system. Minimal user information will be required to provide
   * regarding the user.</p>
   * <li><b>userId</b> : User id provided by the client</li>
   * <li><b>domainId</b> : Domain id for that user</li>
   * <li><b>userName</b> : User name for the user</li>
   * <li><b>firstName</b> : First name of the user</li>
   * <li><b>lastName</b> : Last name of the user</li>
   * <li><b>email</b> : Email address of the user</li>
   * <li>icon : A binary field for storing the user icon</li>
   * <li>createdTime : If client provides this value then the system will use it if not the current time will be set</li>
   * <li>updatedTime : If client provides this value then the system will use it if not the current time will be set</li>
   * 
   * 
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getUser($domainId, $userId);
  /**
   * <p>API method to get a list of users in a specific domain.</p>
   * <li>domainId : Domain id</li>
   * <li>offset : Starting result number</li>
   * <li>limit : Number of max results to be sent</li>
   * 
   * @param string $domainId
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\User[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getUsers($domainId, $offset, $limit);
  /**
   * <p>API method to create a new group</p>
   * 
   * @param \Airavata\Model\Sharing\UserGroup $group
   * @return string
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function createGroup(\Airavata\Model\Sharing\UserGroup $group);
  /**
   * <p>API method to update a group</p>
   * 
   * @param \Airavata\Model\Sharing\UserGroup $group
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function updateGroup(\Airavata\Model\Sharing\UserGroup $group);
  /**
   * <p>API method to check Group Exists</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function isGroupExists($domainId, $groupId);
  /**
   * <p>API method to delete a group</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function deleteGroup($domainId, $groupId);
  /**
   * <p>API method to get a group</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @return \Airavata\Model\Sharing\UserGroup <p>User group is a collection of users.</p>
   *  <li><b>groupId</b> : Group id provided by the client</li>
   *  <li><b>domainId</b> : Domain id for this user group</li>
   *  <li><b>name</b> : Name for the user group. should be one word</li>
   *  <li>description : Short description for the group.</li>
   *  <li><b>ownerId</b> : Owner id of this group.</li>
   *  <li><b>groupType</b> : Group type (DOMAIN_LEVEL_GROUP, USER_LEVEL_GROUP)</li>
   *  <li><b>groupCardinality</b> : Group cardinality (SINGLE_USER, MULTI_USER)</li>
   *  <li>createdTime : Will be set by the system</li>
   *  <li>updatedTime : Will be set by the system</li>
   *  <li>groupAdmins : Admins for the group</li>
   *  
   * 
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getGroup($domainId, $groupId);
  /**
   * <p>API method to get groups in a domainId.</p>
   * 
   * @param string $domainId
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\UserGroup[]
   */
  public function getGroups($domainId, $offset, $limit);
  /**
   * <p>API method to add list of users to a group</p>
   * 
   * @param string $domainId
   * @param string[] $userIds
   * @param string $groupId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function addUsersToGroup($domainId, array $userIds, $groupId);
  /**
   * <p>API method to remove users from a group</p>
   * 
   * @param string $domainId
   * @param string[] $userIds
   * @param string $groupId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function removeUsersFromGroup($domainId, array $userIds, $groupId);
  /**
   * <p>API method to transfer group ownership</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @param string $newOwnerId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function transferGroupOwnership($domainId, $groupId, $newOwnerId);
  /**
   * <p>API method to add Admin for a group</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @param string[] $adminIds
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function addGroupAdmins($domainId, $groupId, array $adminIds);
  /**
   * <p>API method to remove Admin for a group</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @param string[] $adminIds
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function removeGroupAdmins($domainId, $groupId, array $adminIds);
  /**
   * <p>API method to check whether the user has Admin access for the group</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @param string $adminId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function hasAdminAccess($domainId, $groupId, $adminId);
  /**
   * <p>API method to check whether the user has Admin access for the group</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @param string $ownerId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function hasOwnerAccess($domainId, $groupId, $ownerId);
  /**
   * <p>API method to get list of child users in a group. Only the direct members will be returned.</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\User[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit);
  /**
   * <p>API method to get list of child groups in a group. Only the direct members will be returned.</p>
   * 
   * @param string $domainId
   * @param string $groupId
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\UserGroup[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit);
  /**
   * <p>API method to add a child group to a parent group.</p>
   * 
   * @param string $domainId
   * @param string[] $childIds
   * @param string $groupId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function addChildGroupsToParentGroup($domainId, array $childIds, $groupId);
  /**
   * <p>API method to remove a child group from parent group.</p>
   * 
   * @param string $domainId
   * @param string $childId
   * @param string $groupId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function removeChildGroupFromParentGroup($domainId, $childId, $groupId);
  /**
   * @param string $domainId
   * @param string $userId
   * @return \Airavata\Model\Sharing\UserGroup[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getAllMemberGroupsForUser($domainId, $userId);
  /**
   * <p>API method to create a new entity type</p>
   * 
   * @param \Airavata\Model\Sharing\EntityType $entityType
   * @return string
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   * @throws \Airavata\Model\Sharing\DuplicateEntryException
   */
  public function createEntityType(\Airavata\Model\Sharing\EntityType $entityType);
  /**
   * <p>API method to update entity type</p>
   * 
   * @param \Airavata\Model\Sharing\EntityType $entityType
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function updateEntityType(\Airavata\Model\Sharing\EntityType $entityType);
  /**
   * <p>API method to check EntityType Exists</p>
   * 
   * @param string $domainId
   * @param string $entityTypeId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function isEntityTypeExists($domainId, $entityTypeId);
  /**
   * <p>API method to delete entity type</p>
   * 
   * @param string $domainId
   * @param string $entityTypeId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function deleteEntityType($domainId, $entityTypeId);
  /**
   * <p>API method to get an entity type</p>
   * 
   * @param string $domainId
   * @param string $entityTypeId
   * @return \Airavata\Model\Sharing\EntityType <p>client defined entity types</p>
   * <li><b>entityTypeId</b> : Entity type id provided by the client</li>
   * <li><b>domainId</b> : Domain id of the domain.</li>
   * <li><b>name</b> : Name for the entity type. Should be a single word.</li>
   * <li>description : Short description for the entity type.</li>
   * <li>createdTime : Will be set by the system</li>
   * <li>updatedTime : Will be set by the system</li>
   * 
   * 
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getEntityType($domainId, $entityTypeId);
  /**
   * <p>API method to get entity types in a domainId.</p>
   * 
   * @param string $domainId
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\EntityType[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getEntityTypes($domainId, $offset, $limit);
  /**
   * <p>API method to register new entity</p>
   * 
   * @param \Airavata\Model\Sharing\Entity $entity
   * @return string
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function createEntity(\Airavata\Model\Sharing\Entity $entity);
  /**
   * <p>API method to update entity</p>
   * 
   * @param \Airavata\Model\Sharing\Entity $entity
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function updateEntity(\Airavata\Model\Sharing\Entity $entity);
  /**
   * <p>API method to check Entity Exists</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function isEntityExists($domainId, $entityId);
  /**
   * <p>API method to delete entity</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function deleteEntity($domainId, $entityId);
  /**
   * <p>API method to get entity</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @return \Airavata\Model\Sharing\Entity <p>Entity object which is used to register an entity in the system.</p>
   * <li><b>entityId</b> : Entity id provided by the client</li>
   * <li><b>domainId</b> : Domain id</li>
   * <li><b>entityTypeId</b> : Entity type id</li>
   * <li><b>ownerId</b> : Owner id</li>
   * <li>parentEntityId : Parent entity id</li>
   * <li><b>name</b> : Name</li>
   * <li>description : Short description for the entity</li>
   * <li>binaryData : Any information stored in binary format</li>
   * <li>fullText : A string which will be considered for full text search</li>
   * <li><b>originalEntityCreationTime</b> : When registering old records what is the original entity creation time. If not
   * set will be default to current time</li>
   * <li>createdTime : Will be set by the system</li>
   * <li>updatedTime : Will be set by the system</li>
   * 
   * 
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getEntity($domainId, $entityId);
  /**
   * <p>API method to search entities</p>
   * 
   * @param string $domainId
   * @param string $userId
   * @param \Airavata\Model\Sharing\SearchCriteria[] $filters
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\Entity[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function searchEntities($domainId, $userId, array $filters, $offset, $limit);
  /**
   * <p>API method to get a list of shared users given the entity id</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string $permissionTypeId
   * @return \Airavata\Model\Sharing\User[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getListOfSharedUsers($domainId, $entityId, $permissionTypeId);
  /**
   * <p>API method to get a list of shared users given the entity id where the sharing type is directly applied</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string $permissionTypeId
   * @return \Airavata\Model\Sharing\User[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getListOfDirectlySharedUsers($domainId, $entityId, $permissionTypeId);
  /**
   * <p>API method to get a list of shared groups given the entity id</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string $permissionTypeId
   * @return \Airavata\Model\Sharing\UserGroup[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getListOfSharedGroups($domainId, $entityId, $permissionTypeId);
  /**
   * <p>API method to get a list of directly shared groups given the entity id where the sharing type is directly applied</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string $permissionTypeId
   * @return \Airavata\Model\Sharing\UserGroup[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getListOfDirectlySharedGroups($domainId, $entityId, $permissionTypeId);
  /**
   * <p>API method to create permission type</p>
   * 
   * @param \Airavata\Model\Sharing\PermissionType $permissionType
   * @return string
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   * @throws \Airavata\Model\Sharing\DuplicateEntryException
   */
  public function createPermissionType(\Airavata\Model\Sharing\PermissionType $permissionType);
  /**
   * <p>API method to update permission type</p>
   * 
   * @param \Airavata\Model\Sharing\PermissionType $permissionType
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function updatePermissionType(\Airavata\Model\Sharing\PermissionType $permissionType);
  /**
   * <p>API method to check Permission Exists</p>
   * 
   * @param string $dimainId
   * @param string $permissionId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function isPermissionExists($dimainId, $permissionId);
  /**
   * <p>API method to delete permission type</p>
   * 
   * @param string $domainId
   * @param string $permissionTypeId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function deletePermissionType($domainId, $permissionTypeId);
  /**
   * <p>API method to get permission type</p>
   * 
   * @param string $domainId
   * @param string $permissionTypeId
   * @return \Airavata\Model\Sharing\PermissionType <p>Object for creating client defined permission type</p>
   * <li><b>permissionTypeId</b> : Permission type id provided by the client</li>
   * <li><b>domainId</b> : Domain id</li>
   * <li><b>name</b> : Single word name for the permission</li>
   * <li>description : Short description for the permission type</li>
   * <li>createdTime : Will be set by the system</li>
   * <li>updatedTime : Will be set by the system</li>
   * 
   * 
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getPermissionType($domainId, $permissionTypeId);
  /**
   * <p>API method to get list of permission types in a given domainId.</p>
   * 
   * @param string $domainId
   * @param int $offset
   * @param int $limit
   * @return \Airavata\Model\Sharing\PermissionType[]
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function getPermissionTypes($domainId, $offset, $limit);
  /**
   * <p>API method to share an entity with users</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string[] $userList
   * @param string $permissionTypeId
   * @param bool $cascadePermission
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function shareEntityWithUsers($domainId, $entityId, array $userList, $permissionTypeId, $cascadePermission);
  /**
   * <p>API method to revoke sharing from a list of users</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string[] $userList
   * @param string $permissionTypeId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function revokeEntitySharingFromUsers($domainId, $entityId, array $userList, $permissionTypeId);
  /**
   * <p>API method to share an entity with list of groups</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string[] $groupList
   * @param string $permissionTypeId
   * @param bool $cascadePermission
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function shareEntityWithGroups($domainId, $entityId, array $groupList, $permissionTypeId, $cascadePermission);
  /**
   * <p>API method to revoke sharing from list of users</p>
   * 
   * @param string $domainId
   * @param string $entityId
   * @param string[] $groupList
   * @param string $permissionTypeId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function revokeEntitySharingFromGroups($domainId, $entityId, array $groupList, $permissionTypeId);
  /**
   * <p>API method to check whether a user has access to a specific entity</p>
   * 
   * @param string $domainId
   * @param string $userId
   * @param string $entityId
   * @param string $permissionTypeId
   * @return bool
   * @throws \Airavata\Model\Sharing\SharingRegistryException
   */
  public function userHasAccess($domainId, $userId, $entityId, $permissionTypeId);
}


class SharingRegistryServiceClient extends \Airavata\Base\API\BaseAPIClient implements \Airavata\API\Sharing\SharingRegistryServiceIf {
  public function __construct($input, $output=null) {
    parent::__construct($input, $output);
  }

  public function createDomain(\Airavata\Model\Sharing\Domain $domain)
  {
    $this->send_createDomain($domain);
    return $this->recv_createDomain();
  }

  public function send_createDomain(\Airavata\Model\Sharing\Domain $domain)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_createDomain_args();
    $args->domain = $domain;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'createDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('createDomain', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_createDomain()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createDomain_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_createDomain_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    if ($result->dee !== null) {
      throw $result->dee;
    }
    throw new \Exception("createDomain failed: unknown result");
  }

  public function updateDomain(\Airavata\Model\Sharing\Domain $domain)
  {
    $this->send_updateDomain($domain);
    return $this->recv_updateDomain();
  }

  public function send_updateDomain(\Airavata\Model\Sharing\Domain $domain)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_updateDomain_args();
    $args->domain = $domain;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'updateDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('updateDomain', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_updateDomain()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateDomain_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_updateDomain_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("updateDomain failed: unknown result");
  }

  public function isDomainExists($domainId)
  {
    $this->send_isDomainExists($domainId);
    return $this->recv_isDomainExists();
  }

  public function send_isDomainExists($domainId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_isDomainExists_args();
    $args->domainId = $domainId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'isDomainExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('isDomainExists', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_isDomainExists()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isDomainExists_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_isDomainExists_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("isDomainExists failed: unknown result");
  }

  public function deleteDomain($domainId)
  {
    $this->send_deleteDomain($domainId);
    return $this->recv_deleteDomain();
  }

  public function send_deleteDomain($domainId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteDomain_args();
    $args->domainId = $domainId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'deleteDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('deleteDomain', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_deleteDomain()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteDomain_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteDomain_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("deleteDomain failed: unknown result");
  }

  public function getDomain($domainId)
  {
    $this->send_getDomain($domainId);
    return $this->recv_getDomain();
  }

  public function send_getDomain($domainId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getDomain_args();
    $args->domainId = $domainId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getDomain', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getDomain', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getDomain()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getDomain_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getDomain_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getDomain failed: unknown result");
  }

  public function getDomains($offset, $limit)
  {
    $this->send_getDomains($offset, $limit);
    return $this->recv_getDomains();
  }

  public function send_getDomains($offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getDomains_args();
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getDomains', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getDomains', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getDomains()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getDomains_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getDomains_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getDomains failed: unknown result");
  }

  public function createUser(\Airavata\Model\Sharing\User $user)
  {
    $this->send_createUser($user);
    return $this->recv_createUser();
  }

  public function send_createUser(\Airavata\Model\Sharing\User $user)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_createUser_args();
    $args->user = $user;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'createUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('createUser', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_createUser()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createUser_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_createUser_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    if ($result->dee !== null) {
      throw $result->dee;
    }
    throw new \Exception("createUser failed: unknown result");
  }

  public function updatedUser(\Airavata\Model\Sharing\User $user)
  {
    $this->send_updatedUser($user);
    return $this->recv_updatedUser();
  }

  public function send_updatedUser(\Airavata\Model\Sharing\User $user)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_updatedUser_args();
    $args->user = $user;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'updatedUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('updatedUser', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_updatedUser()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updatedUser_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_updatedUser_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("updatedUser failed: unknown result");
  }

  public function isUserExists($domainId, $userId)
  {
    $this->send_isUserExists($domainId, $userId);
    return $this->recv_isUserExists();
  }

  public function send_isUserExists($domainId, $userId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_isUserExists_args();
    $args->domainId = $domainId;
    $args->userId = $userId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'isUserExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('isUserExists', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_isUserExists()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isUserExists_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_isUserExists_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("isUserExists failed: unknown result");
  }

  public function deleteUser($domainId, $userId)
  {
    $this->send_deleteUser($domainId, $userId);
    return $this->recv_deleteUser();
  }

  public function send_deleteUser($domainId, $userId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteUser_args();
    $args->domainId = $domainId;
    $args->userId = $userId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'deleteUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('deleteUser', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_deleteUser()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteUser_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteUser_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("deleteUser failed: unknown result");
  }

  public function getUser($domainId, $userId)
  {
    $this->send_getUser($domainId, $userId);
    return $this->recv_getUser();
  }

  public function send_getUser($domainId, $userId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getUser_args();
    $args->domainId = $domainId;
    $args->userId = $userId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getUser', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getUser()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getUser_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getUser_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getUser failed: unknown result");
  }

  public function getUsers($domainId, $offset, $limit)
  {
    $this->send_getUsers($domainId, $offset, $limit);
    return $this->recv_getUsers();
  }

  public function send_getUsers($domainId, $offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getUsers_args();
    $args->domainId = $domainId;
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getUsers', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getUsers', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getUsers()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getUsers_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getUsers_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getUsers failed: unknown result");
  }

  public function createGroup(\Airavata\Model\Sharing\UserGroup $group)
  {
    $this->send_createGroup($group);
    return $this->recv_createGroup();
  }

  public function send_createGroup(\Airavata\Model\Sharing\UserGroup $group)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_createGroup_args();
    $args->group = $group;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'createGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('createGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_createGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_createGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("createGroup failed: unknown result");
  }

  public function updateGroup(\Airavata\Model\Sharing\UserGroup $group)
  {
    $this->send_updateGroup($group);
    return $this->recv_updateGroup();
  }

  public function send_updateGroup(\Airavata\Model\Sharing\UserGroup $group)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_updateGroup_args();
    $args->group = $group;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'updateGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('updateGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_updateGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_updateGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("updateGroup failed: unknown result");
  }

  public function isGroupExists($domainId, $groupId)
  {
    $this->send_isGroupExists($domainId, $groupId);
    return $this->recv_isGroupExists();
  }

  public function send_isGroupExists($domainId, $groupId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_isGroupExists_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'isGroupExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('isGroupExists', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_isGroupExists()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isGroupExists_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_isGroupExists_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("isGroupExists failed: unknown result");
  }

  public function deleteGroup($domainId, $groupId)
  {
    $this->send_deleteGroup($domainId, $groupId);
    return $this->recv_deleteGroup();
  }

  public function send_deleteGroup($domainId, $groupId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteGroup_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'deleteGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('deleteGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_deleteGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("deleteGroup failed: unknown result");
  }

  public function getGroup($domainId, $groupId)
  {
    $this->send_getGroup($domainId, $groupId);
    return $this->recv_getGroup();
  }

  public function send_getGroup($domainId, $groupId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroup_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getGroup failed: unknown result");
  }

  public function getGroups($domainId, $offset, $limit)
  {
    $this->send_getGroups($domainId, $offset, $limit);
    return $this->recv_getGroups();
  }

  public function send_getGroups($domainId, $offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroups_args();
    $args->domainId = $domainId;
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getGroups', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getGroups', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getGroups()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroups_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroups_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    throw new \Exception("getGroups failed: unknown result");
  }

  public function addUsersToGroup($domainId, array $userIds, $groupId)
  {
    $this->send_addUsersToGroup($domainId, $userIds, $groupId);
    return $this->recv_addUsersToGroup();
  }

  public function send_addUsersToGroup($domainId, array $userIds, $groupId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_addUsersToGroup_args();
    $args->domainId = $domainId;
    $args->userIds = $userIds;
    $args->groupId = $groupId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'addUsersToGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('addUsersToGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_addUsersToGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_addUsersToGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_addUsersToGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("addUsersToGroup failed: unknown result");
  }

  public function removeUsersFromGroup($domainId, array $userIds, $groupId)
  {
    $this->send_removeUsersFromGroup($domainId, $userIds, $groupId);
    return $this->recv_removeUsersFromGroup();
  }

  public function send_removeUsersFromGroup($domainId, array $userIds, $groupId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_removeUsersFromGroup_args();
    $args->domainId = $domainId;
    $args->userIds = $userIds;
    $args->groupId = $groupId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'removeUsersFromGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('removeUsersFromGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_removeUsersFromGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_removeUsersFromGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_removeUsersFromGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("removeUsersFromGroup failed: unknown result");
  }

  public function transferGroupOwnership($domainId, $groupId, $newOwnerId)
  {
    $this->send_transferGroupOwnership($domainId, $groupId, $newOwnerId);
    return $this->recv_transferGroupOwnership();
  }

  public function send_transferGroupOwnership($domainId, $groupId, $newOwnerId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_transferGroupOwnership_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $args->newOwnerId = $newOwnerId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'transferGroupOwnership', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('transferGroupOwnership', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_transferGroupOwnership()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_transferGroupOwnership_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_transferGroupOwnership_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("transferGroupOwnership failed: unknown result");
  }

  public function addGroupAdmins($domainId, $groupId, array $adminIds)
  {
    $this->send_addGroupAdmins($domainId, $groupId, $adminIds);
    return $this->recv_addGroupAdmins();
  }

  public function send_addGroupAdmins($domainId, $groupId, array $adminIds)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_addGroupAdmins_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $args->adminIds = $adminIds;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'addGroupAdmins', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('addGroupAdmins', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_addGroupAdmins()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_addGroupAdmins_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_addGroupAdmins_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("addGroupAdmins failed: unknown result");
  }

  public function removeGroupAdmins($domainId, $groupId, array $adminIds)
  {
    $this->send_removeGroupAdmins($domainId, $groupId, $adminIds);
    return $this->recv_removeGroupAdmins();
  }

  public function send_removeGroupAdmins($domainId, $groupId, array $adminIds)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_removeGroupAdmins_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $args->adminIds = $adminIds;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'removeGroupAdmins', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('removeGroupAdmins', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_removeGroupAdmins()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_removeGroupAdmins_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_removeGroupAdmins_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("removeGroupAdmins failed: unknown result");
  }

  public function hasAdminAccess($domainId, $groupId, $adminId)
  {
    $this->send_hasAdminAccess($domainId, $groupId, $adminId);
    return $this->recv_hasAdminAccess();
  }

  public function send_hasAdminAccess($domainId, $groupId, $adminId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_hasAdminAccess_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $args->adminId = $adminId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'hasAdminAccess', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('hasAdminAccess', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_hasAdminAccess()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_hasAdminAccess_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_hasAdminAccess_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("hasAdminAccess failed: unknown result");
  }

  public function hasOwnerAccess($domainId, $groupId, $ownerId)
  {
    $this->send_hasOwnerAccess($domainId, $groupId, $ownerId);
    return $this->recv_hasOwnerAccess();
  }

  public function send_hasOwnerAccess($domainId, $groupId, $ownerId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_hasOwnerAccess_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $args->ownerId = $ownerId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'hasOwnerAccess', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('hasOwnerAccess', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_hasOwnerAccess()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_hasOwnerAccess_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_hasOwnerAccess_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("hasOwnerAccess failed: unknown result");
  }

  public function getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit)
  {
    $this->send_getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit);
    return $this->recv_getGroupMembersOfTypeUser();
  }

  public function send_getGroupMembersOfTypeUser($domainId, $groupId, $offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeUser_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getGroupMembersOfTypeUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getGroupMembersOfTypeUser', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getGroupMembersOfTypeUser()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeUser_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeUser_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getGroupMembersOfTypeUser failed: unknown result");
  }

  public function getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit)
  {
    $this->send_getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit);
    return $this->recv_getGroupMembersOfTypeGroup();
  }

  public function send_getGroupMembersOfTypeGroup($domainId, $groupId, $offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeGroup_args();
    $args->domainId = $domainId;
    $args->groupId = $groupId;
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getGroupMembersOfTypeGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getGroupMembersOfTypeGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getGroupMembersOfTypeGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getGroupMembersOfTypeGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getGroupMembersOfTypeGroup failed: unknown result");
  }

  public function addChildGroupsToParentGroup($domainId, array $childIds, $groupId)
  {
    $this->send_addChildGroupsToParentGroup($domainId, $childIds, $groupId);
    return $this->recv_addChildGroupsToParentGroup();
  }

  public function send_addChildGroupsToParentGroup($domainId, array $childIds, $groupId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_addChildGroupsToParentGroup_args();
    $args->domainId = $domainId;
    $args->childIds = $childIds;
    $args->groupId = $groupId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'addChildGroupsToParentGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('addChildGroupsToParentGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_addChildGroupsToParentGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_addChildGroupsToParentGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_addChildGroupsToParentGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("addChildGroupsToParentGroup failed: unknown result");
  }

  public function removeChildGroupFromParentGroup($domainId, $childId, $groupId)
  {
    $this->send_removeChildGroupFromParentGroup($domainId, $childId, $groupId);
    return $this->recv_removeChildGroupFromParentGroup();
  }

  public function send_removeChildGroupFromParentGroup($domainId, $childId, $groupId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_removeChildGroupFromParentGroup_args();
    $args->domainId = $domainId;
    $args->childId = $childId;
    $args->groupId = $groupId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'removeChildGroupFromParentGroup', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('removeChildGroupFromParentGroup', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_removeChildGroupFromParentGroup()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_removeChildGroupFromParentGroup_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_removeChildGroupFromParentGroup_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("removeChildGroupFromParentGroup failed: unknown result");
  }

  public function getAllMemberGroupsForUser($domainId, $userId)
  {
    $this->send_getAllMemberGroupsForUser($domainId, $userId);
    return $this->recv_getAllMemberGroupsForUser();
  }

  public function send_getAllMemberGroupsForUser($domainId, $userId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getAllMemberGroupsForUser_args();
    $args->domainId = $domainId;
    $args->userId = $userId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getAllMemberGroupsForUser', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getAllMemberGroupsForUser', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getAllMemberGroupsForUser()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getAllMemberGroupsForUser_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getAllMemberGroupsForUser_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getAllMemberGroupsForUser failed: unknown result");
  }

  public function createEntityType(\Airavata\Model\Sharing\EntityType $entityType)
  {
    $this->send_createEntityType($entityType);
    return $this->recv_createEntityType();
  }

  public function send_createEntityType(\Airavata\Model\Sharing\EntityType $entityType)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_createEntityType_args();
    $args->entityType = $entityType;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'createEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('createEntityType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_createEntityType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createEntityType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_createEntityType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    if ($result->dee !== null) {
      throw $result->dee;
    }
    throw new \Exception("createEntityType failed: unknown result");
  }

  public function updateEntityType(\Airavata\Model\Sharing\EntityType $entityType)
  {
    $this->send_updateEntityType($entityType);
    return $this->recv_updateEntityType();
  }

  public function send_updateEntityType(\Airavata\Model\Sharing\EntityType $entityType)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_updateEntityType_args();
    $args->entityType = $entityType;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'updateEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('updateEntityType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_updateEntityType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateEntityType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_updateEntityType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("updateEntityType failed: unknown result");
  }

  public function isEntityTypeExists($domainId, $entityTypeId)
  {
    $this->send_isEntityTypeExists($domainId, $entityTypeId);
    return $this->recv_isEntityTypeExists();
  }

  public function send_isEntityTypeExists($domainId, $entityTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_isEntityTypeExists_args();
    $args->domainId = $domainId;
    $args->entityTypeId = $entityTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'isEntityTypeExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('isEntityTypeExists', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_isEntityTypeExists()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isEntityTypeExists_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_isEntityTypeExists_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("isEntityTypeExists failed: unknown result");
  }

  public function deleteEntityType($domainId, $entityTypeId)
  {
    $this->send_deleteEntityType($domainId, $entityTypeId);
    return $this->recv_deleteEntityType();
  }

  public function send_deleteEntityType($domainId, $entityTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteEntityType_args();
    $args->domainId = $domainId;
    $args->entityTypeId = $entityTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'deleteEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('deleteEntityType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_deleteEntityType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteEntityType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteEntityType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("deleteEntityType failed: unknown result");
  }

  public function getEntityType($domainId, $entityTypeId)
  {
    $this->send_getEntityType($domainId, $entityTypeId);
    return $this->recv_getEntityType();
  }

  public function send_getEntityType($domainId, $entityTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getEntityType_args();
    $args->domainId = $domainId;
    $args->entityTypeId = $entityTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getEntityType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getEntityType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getEntityType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getEntityType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getEntityType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getEntityType failed: unknown result");
  }

  public function getEntityTypes($domainId, $offset, $limit)
  {
    $this->send_getEntityTypes($domainId, $offset, $limit);
    return $this->recv_getEntityTypes();
  }

  public function send_getEntityTypes($domainId, $offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getEntityTypes_args();
    $args->domainId = $domainId;
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getEntityTypes', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getEntityTypes', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getEntityTypes()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getEntityTypes_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getEntityTypes_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getEntityTypes failed: unknown result");
  }

  public function createEntity(\Airavata\Model\Sharing\Entity $entity)
  {
    $this->send_createEntity($entity);
    return $this->recv_createEntity();
  }

  public function send_createEntity(\Airavata\Model\Sharing\Entity $entity)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_createEntity_args();
    $args->entity = $entity;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'createEntity', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('createEntity', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_createEntity()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createEntity_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_createEntity_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("createEntity failed: unknown result");
  }

  public function updateEntity(\Airavata\Model\Sharing\Entity $entity)
  {
    $this->send_updateEntity($entity);
    return $this->recv_updateEntity();
  }

  public function send_updateEntity(\Airavata\Model\Sharing\Entity $entity)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_updateEntity_args();
    $args->entity = $entity;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'updateEntity', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('updateEntity', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_updateEntity()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updateEntity_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_updateEntity_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("updateEntity failed: unknown result");
  }

  public function isEntityExists($domainId, $entityId)
  {
    $this->send_isEntityExists($domainId, $entityId);
    return $this->recv_isEntityExists();
  }

  public function send_isEntityExists($domainId, $entityId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_isEntityExists_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'isEntityExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('isEntityExists', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_isEntityExists()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isEntityExists_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_isEntityExists_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("isEntityExists failed: unknown result");
  }

  public function deleteEntity($domainId, $entityId)
  {
    $this->send_deleteEntity($domainId, $entityId);
    return $this->recv_deleteEntity();
  }

  public function send_deleteEntity($domainId, $entityId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_deleteEntity_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'deleteEntity', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('deleteEntity', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_deleteEntity()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deleteEntity_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_deleteEntity_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("deleteEntity failed: unknown result");
  }

  public function getEntity($domainId, $entityId)
  {
    $this->send_getEntity($domainId, $entityId);
    return $this->recv_getEntity();
  }

  public function send_getEntity($domainId, $entityId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getEntity_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getEntity', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getEntity', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getEntity()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getEntity_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getEntity_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getEntity failed: unknown result");
  }

  public function searchEntities($domainId, $userId, array $filters, $offset, $limit)
  {
    $this->send_searchEntities($domainId, $userId, $filters, $offset, $limit);
    return $this->recv_searchEntities();
  }

  public function send_searchEntities($domainId, $userId, array $filters, $offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_searchEntities_args();
    $args->domainId = $domainId;
    $args->userId = $userId;
    $args->filters = $filters;
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'searchEntities', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('searchEntities', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_searchEntities()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_searchEntities_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_searchEntities_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("searchEntities failed: unknown result");
  }

  public function getListOfSharedUsers($domainId, $entityId, $permissionTypeId)
  {
    $this->send_getListOfSharedUsers($domainId, $entityId, $permissionTypeId);
    return $this->recv_getListOfSharedUsers();
  }

  public function send_getListOfSharedUsers($domainId, $entityId, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getListOfSharedUsers_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getListOfSharedUsers', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getListOfSharedUsers', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getListOfSharedUsers()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getListOfSharedUsers_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getListOfSharedUsers_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getListOfSharedUsers failed: unknown result");
  }

  public function getListOfDirectlySharedUsers($domainId, $entityId, $permissionTypeId)
  {
    $this->send_getListOfDirectlySharedUsers($domainId, $entityId, $permissionTypeId);
    return $this->recv_getListOfDirectlySharedUsers();
  }

  public function send_getListOfDirectlySharedUsers($domainId, $entityId, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getListOfDirectlySharedUsers_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getListOfDirectlySharedUsers', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getListOfDirectlySharedUsers', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getListOfDirectlySharedUsers()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getListOfDirectlySharedUsers_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getListOfDirectlySharedUsers_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getListOfDirectlySharedUsers failed: unknown result");
  }

  public function getListOfSharedGroups($domainId, $entityId, $permissionTypeId)
  {
    $this->send_getListOfSharedGroups($domainId, $entityId, $permissionTypeId);
    return $this->recv_getListOfSharedGroups();
  }

  public function send_getListOfSharedGroups($domainId, $entityId, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getListOfSharedGroups_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getListOfSharedGroups', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getListOfSharedGroups', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getListOfSharedGroups()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getListOfSharedGroups_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getListOfSharedGroups_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getListOfSharedGroups failed: unknown result");
  }

  public function getListOfDirectlySharedGroups($domainId, $entityId, $permissionTypeId)
  {
    $this->send_getListOfDirectlySharedGroups($domainId, $entityId, $permissionTypeId);
    return $this->recv_getListOfDirectlySharedGroups();
  }

  public function send_getListOfDirectlySharedGroups($domainId, $entityId, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getListOfDirectlySharedGroups_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getListOfDirectlySharedGroups', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getListOfDirectlySharedGroups', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getListOfDirectlySharedGroups()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getListOfDirectlySharedGroups_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getListOfDirectlySharedGroups_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getListOfDirectlySharedGroups failed: unknown result");
  }

  public function createPermissionType(\Airavata\Model\Sharing\PermissionType $permissionType)
  {
    $this->send_createPermissionType($permissionType);
    return $this->recv_createPermissionType();
  }

  public function send_createPermissionType(\Airavata\Model\Sharing\PermissionType $permissionType)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_createPermissionType_args();
    $args->permissionType = $permissionType;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'createPermissionType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('createPermissionType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_createPermissionType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_createPermissionType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_createPermissionType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    if ($result->dee !== null) {
      throw $result->dee;
    }
    throw new \Exception("createPermissionType failed: unknown result");
  }

  public function updatePermissionType(\Airavata\Model\Sharing\PermissionType $permissionType)
  {
    $this->send_updatePermissionType($permissionType);
    return $this->recv_updatePermissionType();
  }

  public function send_updatePermissionType(\Airavata\Model\Sharing\PermissionType $permissionType)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_updatePermissionType_args();
    $args->permissionType = $permissionType;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'updatePermissionType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('updatePermissionType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_updatePermissionType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_updatePermissionType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_updatePermissionType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("updatePermissionType failed: unknown result");
  }

  public function isPermissionExists($dimainId, $permissionId)
  {
    $this->send_isPermissionExists($dimainId, $permissionId);
    return $this->recv_isPermissionExists();
  }

  public function send_isPermissionExists($dimainId, $permissionId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_isPermissionExists_args();
    $args->dimainId = $dimainId;
    $args->permissionId = $permissionId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'isPermissionExists', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('isPermissionExists', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_isPermissionExists()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_isPermissionExists_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_isPermissionExists_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("isPermissionExists failed: unknown result");
  }

  public function deletePermissionType($domainId, $permissionTypeId)
  {
    $this->send_deletePermissionType($domainId, $permissionTypeId);
    return $this->recv_deletePermissionType();
  }

  public function send_deletePermissionType($domainId, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_deletePermissionType_args();
    $args->domainId = $domainId;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'deletePermissionType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('deletePermissionType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_deletePermissionType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_deletePermissionType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_deletePermissionType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("deletePermissionType failed: unknown result");
  }

  public function getPermissionType($domainId, $permissionTypeId)
  {
    $this->send_getPermissionType($domainId, $permissionTypeId);
    return $this->recv_getPermissionType();
  }

  public function send_getPermissionType($domainId, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getPermissionType_args();
    $args->domainId = $domainId;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getPermissionType', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getPermissionType', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getPermissionType()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getPermissionType_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getPermissionType_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getPermissionType failed: unknown result");
  }

  public function getPermissionTypes($domainId, $offset, $limit)
  {
    $this->send_getPermissionTypes($domainId, $offset, $limit);
    return $this->recv_getPermissionTypes();
  }

  public function send_getPermissionTypes($domainId, $offset, $limit)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_getPermissionTypes_args();
    $args->domainId = $domainId;
    $args->offset = $offset;
    $args->limit = $limit;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'getPermissionTypes', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('getPermissionTypes', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_getPermissionTypes()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_getPermissionTypes_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_getPermissionTypes_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("getPermissionTypes failed: unknown result");
  }

  public function shareEntityWithUsers($domainId, $entityId, array $userList, $permissionTypeId, $cascadePermission)
  {
    $this->send_shareEntityWithUsers($domainId, $entityId, $userList, $permissionTypeId, $cascadePermission);
    return $this->recv_shareEntityWithUsers();
  }

  public function send_shareEntityWithUsers($domainId, $entityId, array $userList, $permissionTypeId, $cascadePermission)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_shareEntityWithUsers_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->userList = $userList;
    $args->permissionTypeId = $permissionTypeId;
    $args->cascadePermission = $cascadePermission;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'shareEntityWithUsers', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('shareEntityWithUsers', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_shareEntityWithUsers()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_shareEntityWithUsers_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_shareEntityWithUsers_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("shareEntityWithUsers failed: unknown result");
  }

  public function revokeEntitySharingFromUsers($domainId, $entityId, array $userList, $permissionTypeId)
  {
    $this->send_revokeEntitySharingFromUsers($domainId, $entityId, $userList, $permissionTypeId);
    return $this->recv_revokeEntitySharingFromUsers();
  }

  public function send_revokeEntitySharingFromUsers($domainId, $entityId, array $userList, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_revokeEntitySharingFromUsers_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->userList = $userList;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'revokeEntitySharingFromUsers', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('revokeEntitySharingFromUsers', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_revokeEntitySharingFromUsers()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_revokeEntitySharingFromUsers_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_revokeEntitySharingFromUsers_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("revokeEntitySharingFromUsers failed: unknown result");
  }

  public function shareEntityWithGroups($domainId, $entityId, array $groupList, $permissionTypeId, $cascadePermission)
  {
    $this->send_shareEntityWithGroups($domainId, $entityId, $groupList, $permissionTypeId, $cascadePermission);
    return $this->recv_shareEntityWithGroups();
  }

  public function send_shareEntityWithGroups($domainId, $entityId, array $groupList, $permissionTypeId, $cascadePermission)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_shareEntityWithGroups_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->groupList = $groupList;
    $args->permissionTypeId = $permissionTypeId;
    $args->cascadePermission = $cascadePermission;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'shareEntityWithGroups', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('shareEntityWithGroups', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_shareEntityWithGroups()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_shareEntityWithGroups_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_shareEntityWithGroups_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("shareEntityWithGroups failed: unknown result");
  }

  public function revokeEntitySharingFromGroups($domainId, $entityId, array $groupList, $permissionTypeId)
  {
    $this->send_revokeEntitySharingFromGroups($domainId, $entityId, $groupList, $permissionTypeId);
    return $this->recv_revokeEntitySharingFromGroups();
  }

  public function send_revokeEntitySharingFromGroups($domainId, $entityId, array $groupList, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_revokeEntitySharingFromGroups_args();
    $args->domainId = $domainId;
    $args->entityId = $entityId;
    $args->groupList = $groupList;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'revokeEntitySharingFromGroups', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('revokeEntitySharingFromGroups', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_revokeEntitySharingFromGroups()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_revokeEntitySharingFromGroups_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_revokeEntitySharingFromGroups_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("revokeEntitySharingFromGroups failed: unknown result");
  }

  public function userHasAccess($domainId, $userId, $entityId, $permissionTypeId)
  {
    $this->send_userHasAccess($domainId, $userId, $entityId, $permissionTypeId);
    return $this->recv_userHasAccess();
  }

  public function send_userHasAccess($domainId, $userId, $entityId, $permissionTypeId)
  {
    $args = new \Airavata\API\Sharing\SharingRegistryService_userHasAccess_args();
    $args->domainId = $domainId;
    $args->userId = $userId;
    $args->entityId = $entityId;
    $args->permissionTypeId = $permissionTypeId;
    $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary');
    if ($bin_accel)
    {
      thrift_protocol_write_binary($this->output_, 'userHasAccess', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite());
    }
    else
    {
      $this->output_->writeMessageBegin('userHasAccess', TMessageType::CALL, $this->seqid_);
      $args->write($this->output_);
      $this->output_->writeMessageEnd();
      $this->output_->getTransport()->flush();
    }
  }

  public function recv_userHasAccess()
  {
    $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary');
    if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Airavata\API\Sharing\SharingRegistryService_userHasAccess_result', $this->input_->isStrictRead());
    else
    {
      $rseqid = 0;
      $fname = null;
      $mtype = 0;

      $this->input_->readMessageBegin($fname, $mtype, $rseqid);
      if ($mtype == TMessageType::EXCEPTION) {
        $x = new TApplicationException();
        $x->read($this->input_);
        $this->input_->readMessageEnd();
        throw $x;
      }
      $result = new \Airavata\API\Sharing\SharingRegistryService_userHasAccess_result();
      $result->read($this->input_);
      $this->input_->readMessageEnd();
    }
    if ($result->success !== null) {
      return $result->success;
    }
    if ($result->sre !== null) {
      throw $result->sre;
    }
    throw new \Exception("userHasAccess failed: unknown result");
  }

}


// HELPER FUNCTIONS AND STRUCTURES

class SharingRegistryService_createDomain_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Domain
   */
  public $domain = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domain',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\Domain',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domain'])) {
        $this->domain = $vals['domain'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createDomain_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->domain = new \Airavata\Model\Sharing\Domain();
            $xfer += $this->domain->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createDomain_args');
    if ($this->domain !== null) {
      if (!is_object($this->domain)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('domain', TType::STRUCT, 1);
      $xfer += $this->domain->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createDomain_result {
  static $_TSPEC;

  /**
   * @var string
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;
  /**
   * @var \Airavata\Model\Sharing\DuplicateEntryException
   */
  public $dee = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRING,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        2 => array(
          'var' => 'dee',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\DuplicateEntryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
      if (isset($vals['dee'])) {
        $this->dee = $vals['dee'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createDomain_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRUCT) {
            $this->dee = new \Airavata\Model\Sharing\DuplicateEntryException();
            $xfer += $this->dee->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createDomain_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
      $xfer += $output->writeString($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->dee !== null) {
      $xfer += $output->writeFieldBegin('dee', TType::STRUCT, 2);
      $xfer += $this->dee->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateDomain_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Domain
   */
  public $domain = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domain',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\Domain',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domain'])) {
        $this->domain = $vals['domain'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateDomain_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->domain = new \Airavata\Model\Sharing\Domain();
            $xfer += $this->domain->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateDomain_args');
    if ($this->domain !== null) {
      if (!is_object($this->domain)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('domain', TType::STRUCT, 1);
      $xfer += $this->domain->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateDomain_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateDomain_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateDomain_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isDomainExists_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isDomainExists_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isDomainExists_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isDomainExists_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isDomainExists_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isDomainExists_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteDomain_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteDomain_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteDomain_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteDomain_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteDomain_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteDomain_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getDomain_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getDomain_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getDomain_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getDomain_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Domain
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\Domain',
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getDomain_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRUCT) {
            $this->success = new \Airavata\Model\Sharing\Domain();
            $xfer += $this->success->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getDomain_result');
    if ($this->success !== null) {
      if (!is_object($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
      $xfer += $this->success->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getDomains_args {
  static $_TSPEC;

  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        2 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getDomains_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getDomains_args');
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 1);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 2);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getDomains_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Domain[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\Domain',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getDomains_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size0 = 0;
            $_etype3 = 0;
            $xfer += $input->readListBegin($_etype3, $_size0);
            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
            {
              $elem5 = null;
              $elem5 = new \Airavata\Model\Sharing\Domain();
              $xfer += $elem5->read($input);
              $this->success []= $elem5;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getDomains_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter6)
          {
            $xfer += $iter6->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createUser_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\User
   */
  public $user = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'user',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\User',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['user'])) {
        $this->user = $vals['user'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createUser_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->user = new \Airavata\Model\Sharing\User();
            $xfer += $this->user->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createUser_args');
    if ($this->user !== null) {
      if (!is_object($this->user)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('user', TType::STRUCT, 1);
      $xfer += $this->user->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createUser_result {
  static $_TSPEC;

  /**
   * @var string
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;
  /**
   * @var \Airavata\Model\Sharing\DuplicateEntryException
   */
  public $dee = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRING,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        2 => array(
          'var' => 'dee',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\DuplicateEntryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
      if (isset($vals['dee'])) {
        $this->dee = $vals['dee'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createUser_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRUCT) {
            $this->dee = new \Airavata\Model\Sharing\DuplicateEntryException();
            $xfer += $this->dee->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createUser_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
      $xfer += $output->writeString($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->dee !== null) {
      $xfer += $output->writeFieldBegin('dee', TType::STRUCT, 2);
      $xfer += $this->dee->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updatedUser_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\User
   */
  public $user = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'user',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\User',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['user'])) {
        $this->user = $vals['user'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updatedUser_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->user = new \Airavata\Model\Sharing\User();
            $xfer += $this->user->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updatedUser_args');
    if ($this->user !== null) {
      if (!is_object($this->user)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('user', TType::STRUCT, 1);
      $xfer += $this->user->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updatedUser_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updatedUser_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updatedUser_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isUserExists_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $userId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userId'])) {
        $this->userId = $vals['userId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isUserExists_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->userId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isUserExists_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userId !== null) {
      $xfer += $output->writeFieldBegin('userId', TType::STRING, 2);
      $xfer += $output->writeString($this->userId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isUserExists_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isUserExists_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isUserExists_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteUser_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $userId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userId'])) {
        $this->userId = $vals['userId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteUser_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->userId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteUser_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userId !== null) {
      $xfer += $output->writeFieldBegin('userId', TType::STRING, 2);
      $xfer += $output->writeString($this->userId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteUser_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteUser_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteUser_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getUser_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $userId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userId'])) {
        $this->userId = $vals['userId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getUser_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->userId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getUser_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userId !== null) {
      $xfer += $output->writeFieldBegin('userId', TType::STRING, 2);
      $xfer += $output->writeString($this->userId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getUser_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\User
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\User',
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getUser_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRUCT) {
            $this->success = new \Airavata\Model\Sharing\User();
            $xfer += $this->success->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getUser_result');
    if ($this->success !== null) {
      if (!is_object($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
      $xfer += $this->success->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getUsers_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        3 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getUsers_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getUsers_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 2);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 3);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getUsers_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\User[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\User',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getUsers_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size7 = 0;
            $_etype10 = 0;
            $xfer += $input->readListBegin($_etype10, $_size7);
            for ($_i11 = 0; $_i11 < $_size7; ++$_i11)
            {
              $elem12 = null;
              $elem12 = new \Airavata\Model\Sharing\User();
              $xfer += $elem12->read($input);
              $this->success []= $elem12;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getUsers_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter13)
          {
            $xfer += $iter13->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createGroup_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup
   */
  public $group = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'group',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\UserGroup',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['group'])) {
        $this->group = $vals['group'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->group = new \Airavata\Model\Sharing\UserGroup();
            $xfer += $this->group->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createGroup_args');
    if ($this->group !== null) {
      if (!is_object($this->group)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('group', TType::STRUCT, 1);
      $xfer += $this->group->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createGroup_result {
  static $_TSPEC;

  /**
   * @var string
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRING,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createGroup_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
      $xfer += $output->writeString($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateGroup_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup
   */
  public $group = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'group',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\UserGroup',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['group'])) {
        $this->group = $vals['group'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->group = new \Airavata\Model\Sharing\UserGroup();
            $xfer += $this->group->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateGroup_args');
    if ($this->group !== null) {
      if (!is_object($this->group)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('group', TType::STRUCT, 1);
      $xfer += $this->group->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateGroup_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateGroup_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isGroupExists_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isGroupExists_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isGroupExists_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isGroupExists_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isGroupExists_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isGroupExists_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteGroup_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteGroup_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteGroup_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteGroup_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroup_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroup_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroup_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\UserGroup',
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRUCT) {
            $this->success = new \Airavata\Model\Sharing\UserGroup();
            $xfer += $this->success->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroup_result');
    if ($this->success !== null) {
      if (!is_object($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
      $xfer += $this->success->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroups_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        3 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroups_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroups_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 2);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 3);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroups_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup[]
   */
  public $success = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\UserGroup',
            ),
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroups_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size14 = 0;
            $_etype17 = 0;
            $xfer += $input->readListBegin($_etype17, $_size14);
            for ($_i18 = 0; $_i18 < $_size14; ++$_i18)
            {
              $elem19 = null;
              $elem19 = new \Airavata\Model\Sharing\UserGroup();
              $xfer += $elem19->read($input);
              $this->success []= $elem19;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroups_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter20)
          {
            $xfer += $iter20->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_addUsersToGroup_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string[]
   */
  public $userIds = null;
  /**
   * @var string
   */
  public $groupId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userIds',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        3 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userIds'])) {
        $this->userIds = $vals['userIds'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_addUsersToGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::LST) {
            $this->userIds = array();
            $_size21 = 0;
            $_etype24 = 0;
            $xfer += $input->readListBegin($_etype24, $_size21);
            for ($_i25 = 0; $_i25 < $_size21; ++$_i25)
            {
              $elem26 = null;
              $xfer += $input->readString($elem26);
              $this->userIds []= $elem26;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_addUsersToGroup_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userIds !== null) {
      if (!is_array($this->userIds)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('userIds', TType::LST, 2);
      {
        $output->writeListBegin(TType::STRING, count($this->userIds));
        {
          foreach ($this->userIds as $iter27)
          {
            $xfer += $output->writeString($iter27);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 3);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_addUsersToGroup_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_addUsersToGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_addUsersToGroup_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_removeUsersFromGroup_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string[]
   */
  public $userIds = null;
  /**
   * @var string
   */
  public $groupId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userIds',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        3 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userIds'])) {
        $this->userIds = $vals['userIds'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_removeUsersFromGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::LST) {
            $this->userIds = array();
            $_size28 = 0;
            $_etype31 = 0;
            $xfer += $input->readListBegin($_etype31, $_size28);
            for ($_i32 = 0; $_i32 < $_size28; ++$_i32)
            {
              $elem33 = null;
              $xfer += $input->readString($elem33);
              $this->userIds []= $elem33;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_removeUsersFromGroup_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userIds !== null) {
      if (!is_array($this->userIds)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('userIds', TType::LST, 2);
      {
        $output->writeListBegin(TType::STRING, count($this->userIds));
        {
          foreach ($this->userIds as $iter34)
          {
            $xfer += $output->writeString($iter34);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 3);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_removeUsersFromGroup_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_removeUsersFromGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_removeUsersFromGroup_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_transferGroupOwnership_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;
  /**
   * @var string
   */
  public $newOwnerId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'newOwnerId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
      if (isset($vals['newOwnerId'])) {
        $this->newOwnerId = $vals['newOwnerId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_transferGroupOwnership_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->newOwnerId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_transferGroupOwnership_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->newOwnerId !== null) {
      $xfer += $output->writeFieldBegin('newOwnerId', TType::STRING, 3);
      $xfer += $output->writeString($this->newOwnerId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_transferGroupOwnership_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_transferGroupOwnership_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_transferGroupOwnership_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_addGroupAdmins_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;
  /**
   * @var string[]
   */
  public $adminIds = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'adminIds',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
      if (isset($vals['adminIds'])) {
        $this->adminIds = $vals['adminIds'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_addGroupAdmins_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::LST) {
            $this->adminIds = array();
            $_size35 = 0;
            $_etype38 = 0;
            $xfer += $input->readListBegin($_etype38, $_size35);
            for ($_i39 = 0; $_i39 < $_size35; ++$_i39)
            {
              $elem40 = null;
              $xfer += $input->readString($elem40);
              $this->adminIds []= $elem40;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_addGroupAdmins_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->adminIds !== null) {
      if (!is_array($this->adminIds)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('adminIds', TType::LST, 3);
      {
        $output->writeListBegin(TType::STRING, count($this->adminIds));
        {
          foreach ($this->adminIds as $iter41)
          {
            $xfer += $output->writeString($iter41);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_addGroupAdmins_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_addGroupAdmins_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_addGroupAdmins_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_removeGroupAdmins_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;
  /**
   * @var string[]
   */
  public $adminIds = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'adminIds',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
      if (isset($vals['adminIds'])) {
        $this->adminIds = $vals['adminIds'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_removeGroupAdmins_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::LST) {
            $this->adminIds = array();
            $_size42 = 0;
            $_etype45 = 0;
            $xfer += $input->readListBegin($_etype45, $_size42);
            for ($_i46 = 0; $_i46 < $_size42; ++$_i46)
            {
              $elem47 = null;
              $xfer += $input->readString($elem47);
              $this->adminIds []= $elem47;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_removeGroupAdmins_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->adminIds !== null) {
      if (!is_array($this->adminIds)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('adminIds', TType::LST, 3);
      {
        $output->writeListBegin(TType::STRING, count($this->adminIds));
        {
          foreach ($this->adminIds as $iter48)
          {
            $xfer += $output->writeString($iter48);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_removeGroupAdmins_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_removeGroupAdmins_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_removeGroupAdmins_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_hasAdminAccess_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;
  /**
   * @var string
   */
  public $adminId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'adminId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
      if (isset($vals['adminId'])) {
        $this->adminId = $vals['adminId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_hasAdminAccess_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->adminId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_hasAdminAccess_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->adminId !== null) {
      $xfer += $output->writeFieldBegin('adminId', TType::STRING, 3);
      $xfer += $output->writeString($this->adminId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_hasAdminAccess_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_hasAdminAccess_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_hasAdminAccess_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_hasOwnerAccess_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;
  /**
   * @var string
   */
  public $ownerId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'ownerId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
      if (isset($vals['ownerId'])) {
        $this->ownerId = $vals['ownerId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_hasOwnerAccess_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->ownerId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_hasOwnerAccess_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->ownerId !== null) {
      $xfer += $output->writeFieldBegin('ownerId', TType::STRING, 3);
      $xfer += $output->writeString($this->ownerId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_hasOwnerAccess_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_hasOwnerAccess_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_hasOwnerAccess_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroupMembersOfTypeUser_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;
  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        4 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroupMembersOfTypeUser_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroupMembersOfTypeUser_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 3);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 4);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroupMembersOfTypeUser_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\User[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\User',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroupMembersOfTypeUser_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size49 = 0;
            $_etype52 = 0;
            $xfer += $input->readListBegin($_etype52, $_size49);
            for ($_i53 = 0; $_i53 < $_size49; ++$_i53)
            {
              $elem54 = null;
              $elem54 = new \Airavata\Model\Sharing\User();
              $xfer += $elem54->read($input);
              $this->success []= $elem54;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroupMembersOfTypeUser_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter55)
          {
            $xfer += $iter55->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroupMembersOfTypeGroup_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $groupId = null;
  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        4 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroupMembersOfTypeGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroupMembersOfTypeGroup_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 2);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 3);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 4);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getGroupMembersOfTypeGroup_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\UserGroup',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getGroupMembersOfTypeGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size56 = 0;
            $_etype59 = 0;
            $xfer += $input->readListBegin($_etype59, $_size56);
            for ($_i60 = 0; $_i60 < $_size56; ++$_i60)
            {
              $elem61 = null;
              $elem61 = new \Airavata\Model\Sharing\UserGroup();
              $xfer += $elem61->read($input);
              $this->success []= $elem61;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getGroupMembersOfTypeGroup_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter62)
          {
            $xfer += $iter62->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_addChildGroupsToParentGroup_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string[]
   */
  public $childIds = null;
  /**
   * @var string
   */
  public $groupId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'childIds',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        3 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['childIds'])) {
        $this->childIds = $vals['childIds'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_addChildGroupsToParentGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::LST) {
            $this->childIds = array();
            $_size63 = 0;
            $_etype66 = 0;
            $xfer += $input->readListBegin($_etype66, $_size63);
            for ($_i67 = 0; $_i67 < $_size63; ++$_i67)
            {
              $elem68 = null;
              $xfer += $input->readString($elem68);
              $this->childIds []= $elem68;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_addChildGroupsToParentGroup_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->childIds !== null) {
      if (!is_array($this->childIds)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('childIds', TType::LST, 2);
      {
        $output->writeListBegin(TType::STRING, count($this->childIds));
        {
          foreach ($this->childIds as $iter69)
          {
            $xfer += $output->writeString($iter69);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 3);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_addChildGroupsToParentGroup_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_addChildGroupsToParentGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_addChildGroupsToParentGroup_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_removeChildGroupFromParentGroup_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $childId = null;
  /**
   * @var string
   */
  public $groupId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'childId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'groupId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['childId'])) {
        $this->childId = $vals['childId'];
      }
      if (isset($vals['groupId'])) {
        $this->groupId = $vals['groupId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_removeChildGroupFromParentGroup_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->childId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->groupId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_removeChildGroupFromParentGroup_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->childId !== null) {
      $xfer += $output->writeFieldBegin('childId', TType::STRING, 2);
      $xfer += $output->writeString($this->childId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupId !== null) {
      $xfer += $output->writeFieldBegin('groupId', TType::STRING, 3);
      $xfer += $output->writeString($this->groupId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_removeChildGroupFromParentGroup_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_removeChildGroupFromParentGroup_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_removeChildGroupFromParentGroup_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getAllMemberGroupsForUser_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $userId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userId'])) {
        $this->userId = $vals['userId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getAllMemberGroupsForUser_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->userId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getAllMemberGroupsForUser_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userId !== null) {
      $xfer += $output->writeFieldBegin('userId', TType::STRING, 2);
      $xfer += $output->writeString($this->userId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getAllMemberGroupsForUser_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\UserGroup',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getAllMemberGroupsForUser_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size70 = 0;
            $_etype73 = 0;
            $xfer += $input->readListBegin($_etype73, $_size70);
            for ($_i74 = 0; $_i74 < $_size70; ++$_i74)
            {
              $elem75 = null;
              $elem75 = new \Airavata\Model\Sharing\UserGroup();
              $xfer += $elem75->read($input);
              $this->success []= $elem75;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getAllMemberGroupsForUser_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter76)
          {
            $xfer += $iter76->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createEntityType_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\EntityType
   */
  public $entityType = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'entityType',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\EntityType',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['entityType'])) {
        $this->entityType = $vals['entityType'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createEntityType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->entityType = new \Airavata\Model\Sharing\EntityType();
            $xfer += $this->entityType->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createEntityType_args');
    if ($this->entityType !== null) {
      if (!is_object($this->entityType)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('entityType', TType::STRUCT, 1);
      $xfer += $this->entityType->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createEntityType_result {
  static $_TSPEC;

  /**
   * @var string
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;
  /**
   * @var \Airavata\Model\Sharing\DuplicateEntryException
   */
  public $dee = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRING,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        2 => array(
          'var' => 'dee',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\DuplicateEntryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
      if (isset($vals['dee'])) {
        $this->dee = $vals['dee'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createEntityType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRUCT) {
            $this->dee = new \Airavata\Model\Sharing\DuplicateEntryException();
            $xfer += $this->dee->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createEntityType_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
      $xfer += $output->writeString($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->dee !== null) {
      $xfer += $output->writeFieldBegin('dee', TType::STRUCT, 2);
      $xfer += $this->dee->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateEntityType_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\EntityType
   */
  public $entityType = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'entityType',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\EntityType',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['entityType'])) {
        $this->entityType = $vals['entityType'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateEntityType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->entityType = new \Airavata\Model\Sharing\EntityType();
            $xfer += $this->entityType->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateEntityType_args');
    if ($this->entityType !== null) {
      if (!is_object($this->entityType)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('entityType', TType::STRUCT, 1);
      $xfer += $this->entityType->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateEntityType_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateEntityType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateEntityType_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isEntityTypeExists_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityTypeId'])) {
        $this->entityTypeId = $vals['entityTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isEntityTypeExists_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isEntityTypeExists_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityTypeId !== null) {
      $xfer += $output->writeFieldBegin('entityTypeId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isEntityTypeExists_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isEntityTypeExists_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isEntityTypeExists_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteEntityType_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityTypeId'])) {
        $this->entityTypeId = $vals['entityTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteEntityType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteEntityType_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityTypeId !== null) {
      $xfer += $output->writeFieldBegin('entityTypeId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteEntityType_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteEntityType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteEntityType_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getEntityType_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityTypeId'])) {
        $this->entityTypeId = $vals['entityTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getEntityType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getEntityType_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityTypeId !== null) {
      $xfer += $output->writeFieldBegin('entityTypeId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getEntityType_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\EntityType
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\EntityType',
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getEntityType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRUCT) {
            $this->success = new \Airavata\Model\Sharing\EntityType();
            $xfer += $this->success->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getEntityType_result');
    if ($this->success !== null) {
      if (!is_object($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
      $xfer += $this->success->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getEntityTypes_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        3 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getEntityTypes_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getEntityTypes_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 2);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 3);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getEntityTypes_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\EntityType[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\EntityType',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getEntityTypes_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size77 = 0;
            $_etype80 = 0;
            $xfer += $input->readListBegin($_etype80, $_size77);
            for ($_i81 = 0; $_i81 < $_size77; ++$_i81)
            {
              $elem82 = null;
              $elem82 = new \Airavata\Model\Sharing\EntityType();
              $xfer += $elem82->read($input);
              $this->success []= $elem82;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getEntityTypes_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter83)
          {
            $xfer += $iter83->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createEntity_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Entity
   */
  public $entity = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'entity',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\Entity',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['entity'])) {
        $this->entity = $vals['entity'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createEntity_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->entity = new \Airavata\Model\Sharing\Entity();
            $xfer += $this->entity->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createEntity_args');
    if ($this->entity !== null) {
      if (!is_object($this->entity)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('entity', TType::STRUCT, 1);
      $xfer += $this->entity->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createEntity_result {
  static $_TSPEC;

  /**
   * @var string
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRING,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createEntity_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createEntity_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
      $xfer += $output->writeString($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateEntity_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Entity
   */
  public $entity = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'entity',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\Entity',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['entity'])) {
        $this->entity = $vals['entity'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateEntity_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->entity = new \Airavata\Model\Sharing\Entity();
            $xfer += $this->entity->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateEntity_args');
    if ($this->entity !== null) {
      if (!is_object($this->entity)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('entity', TType::STRUCT, 1);
      $xfer += $this->entity->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updateEntity_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updateEntity_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updateEntity_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isEntityExists_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isEntityExists_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isEntityExists_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isEntityExists_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isEntityExists_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isEntityExists_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteEntity_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteEntity_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteEntity_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deleteEntity_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deleteEntity_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deleteEntity_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getEntity_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getEntity_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getEntity_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getEntity_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Entity
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\Entity',
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getEntity_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRUCT) {
            $this->success = new \Airavata\Model\Sharing\Entity();
            $xfer += $this->success->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getEntity_result');
    if ($this->success !== null) {
      if (!is_object($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
      $xfer += $this->success->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_searchEntities_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $userId = null;
  /**
   * @var \Airavata\Model\Sharing\SearchCriteria[]
   */
  public $filters = null;
  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'filters',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\SearchCriteria',
            ),
          ),
        4 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        5 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userId'])) {
        $this->userId = $vals['userId'];
      }
      if (isset($vals['filters'])) {
        $this->filters = $vals['filters'];
      }
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_searchEntities_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->userId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::LST) {
            $this->filters = array();
            $_size84 = 0;
            $_etype87 = 0;
            $xfer += $input->readListBegin($_etype87, $_size84);
            for ($_i88 = 0; $_i88 < $_size84; ++$_i88)
            {
              $elem89 = null;
              $elem89 = new \Airavata\Model\Sharing\SearchCriteria();
              $xfer += $elem89->read($input);
              $this->filters []= $elem89;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 5:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_searchEntities_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userId !== null) {
      $xfer += $output->writeFieldBegin('userId', TType::STRING, 2);
      $xfer += $output->writeString($this->userId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->filters !== null) {
      if (!is_array($this->filters)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('filters', TType::LST, 3);
      {
        $output->writeListBegin(TType::STRUCT, count($this->filters));
        {
          foreach ($this->filters as $iter90)
          {
            $xfer += $iter90->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 4);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 5);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_searchEntities_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\Entity[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\Entity',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_searchEntities_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size91 = 0;
            $_etype94 = 0;
            $xfer += $input->readListBegin($_etype94, $_size91);
            for ($_i95 = 0; $_i95 < $_size91; ++$_i95)
            {
              $elem96 = null;
              $elem96 = new \Airavata\Model\Sharing\Entity();
              $xfer += $elem96->read($input);
              $this->success []= $elem96;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_searchEntities_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter97)
          {
            $xfer += $iter97->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfSharedUsers_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfSharedUsers_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfSharedUsers_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 3);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfSharedUsers_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\User[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\User',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfSharedUsers_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size98 = 0;
            $_etype101 = 0;
            $xfer += $input->readListBegin($_etype101, $_size98);
            for ($_i102 = 0; $_i102 < $_size98; ++$_i102)
            {
              $elem103 = null;
              $elem103 = new \Airavata\Model\Sharing\User();
              $xfer += $elem103->read($input);
              $this->success []= $elem103;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfSharedUsers_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter104)
          {
            $xfer += $iter104->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfDirectlySharedUsers_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfDirectlySharedUsers_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfDirectlySharedUsers_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 3);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfDirectlySharedUsers_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\User[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\User',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfDirectlySharedUsers_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size105 = 0;
            $_etype108 = 0;
            $xfer += $input->readListBegin($_etype108, $_size105);
            for ($_i109 = 0; $_i109 < $_size105; ++$_i109)
            {
              $elem110 = null;
              $elem110 = new \Airavata\Model\Sharing\User();
              $xfer += $elem110->read($input);
              $this->success []= $elem110;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfDirectlySharedUsers_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter111)
          {
            $xfer += $iter111->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfSharedGroups_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfSharedGroups_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfSharedGroups_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 3);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfSharedGroups_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\UserGroup',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfSharedGroups_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size112 = 0;
            $_etype115 = 0;
            $xfer += $input->readListBegin($_etype115, $_size112);
            for ($_i116 = 0; $_i116 < $_size112; ++$_i116)
            {
              $elem117 = null;
              $elem117 = new \Airavata\Model\Sharing\UserGroup();
              $xfer += $elem117->read($input);
              $this->success []= $elem117;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfSharedGroups_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter118)
          {
            $xfer += $iter118->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfDirectlySharedGroups_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfDirectlySharedGroups_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfDirectlySharedGroups_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 3);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getListOfDirectlySharedGroups_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\UserGroup[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\UserGroup',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getListOfDirectlySharedGroups_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size119 = 0;
            $_etype122 = 0;
            $xfer += $input->readListBegin($_etype122, $_size119);
            for ($_i123 = 0; $_i123 < $_size119; ++$_i123)
            {
              $elem124 = null;
              $elem124 = new \Airavata\Model\Sharing\UserGroup();
              $xfer += $elem124->read($input);
              $this->success []= $elem124;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getListOfDirectlySharedGroups_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter125)
          {
            $xfer += $iter125->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createPermissionType_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\PermissionType
   */
  public $permissionType = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'permissionType',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\PermissionType',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['permissionType'])) {
        $this->permissionType = $vals['permissionType'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createPermissionType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->permissionType = new \Airavata\Model\Sharing\PermissionType();
            $xfer += $this->permissionType->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createPermissionType_args');
    if ($this->permissionType !== null) {
      if (!is_object($this->permissionType)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('permissionType', TType::STRUCT, 1);
      $xfer += $this->permissionType->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_createPermissionType_result {
  static $_TSPEC;

  /**
   * @var string
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;
  /**
   * @var \Airavata\Model\Sharing\DuplicateEntryException
   */
  public $dee = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRING,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        2 => array(
          'var' => 'dee',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\DuplicateEntryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
      if (isset($vals['dee'])) {
        $this->dee = $vals['dee'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_createPermissionType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRUCT) {
            $this->dee = new \Airavata\Model\Sharing\DuplicateEntryException();
            $xfer += $this->dee->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_createPermissionType_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::STRING, 0);
      $xfer += $output->writeString($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->dee !== null) {
      $xfer += $output->writeFieldBegin('dee', TType::STRUCT, 2);
      $xfer += $this->dee->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updatePermissionType_args {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\PermissionType
   */
  public $permissionType = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'permissionType',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\PermissionType',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['permissionType'])) {
        $this->permissionType = $vals['permissionType'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updatePermissionType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->permissionType = new \Airavata\Model\Sharing\PermissionType();
            $xfer += $this->permissionType->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updatePermissionType_args');
    if ($this->permissionType !== null) {
      if (!is_object($this->permissionType)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('permissionType', TType::STRUCT, 1);
      $xfer += $this->permissionType->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_updatePermissionType_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_updatePermissionType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_updatePermissionType_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isPermissionExists_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $dimainId = null;
  /**
   * @var string
   */
  public $permissionId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'dimainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'permissionId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['dimainId'])) {
        $this->dimainId = $vals['dimainId'];
      }
      if (isset($vals['permissionId'])) {
        $this->permissionId = $vals['permissionId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isPermissionExists_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->dimainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isPermissionExists_args');
    if ($this->dimainId !== null) {
      $xfer += $output->writeFieldBegin('dimainId', TType::STRING, 1);
      $xfer += $output->writeString($this->dimainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionId !== null) {
      $xfer += $output->writeFieldBegin('permissionId', TType::STRING, 2);
      $xfer += $output->writeString($this->permissionId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_isPermissionExists_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_isPermissionExists_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_isPermissionExists_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deletePermissionType_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deletePermissionType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deletePermissionType_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 2);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_deletePermissionType_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_deletePermissionType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_deletePermissionType_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getPermissionType_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getPermissionType_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getPermissionType_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 2);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getPermissionType_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\PermissionType
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\PermissionType',
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getPermissionType_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::STRUCT) {
            $this->success = new \Airavata\Model\Sharing\PermissionType();
            $xfer += $this->success->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getPermissionType_result');
    if ($this->success !== null) {
      if (!is_object($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::STRUCT, 0);
      $xfer += $this->success->write($output);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getPermissionTypes_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var int
   */
  public $offset = null;
  /**
   * @var int
   */
  public $limit = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'offset',
          'type' => TType::I32,
          ),
        3 => array(
          'var' => 'limit',
          'type' => TType::I32,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['offset'])) {
        $this->offset = $vals['offset'];
      }
      if (isset($vals['limit'])) {
        $this->limit = $vals['limit'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getPermissionTypes_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->offset);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::I32) {
            $xfer += $input->readI32($this->limit);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getPermissionTypes_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->offset !== null) {
      $xfer += $output->writeFieldBegin('offset', TType::I32, 2);
      $xfer += $output->writeI32($this->offset);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->limit !== null) {
      $xfer += $output->writeFieldBegin('limit', TType::I32, 3);
      $xfer += $output->writeI32($this->limit);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_getPermissionTypes_result {
  static $_TSPEC;

  /**
   * @var \Airavata\Model\Sharing\PermissionType[]
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::LST,
          'etype' => TType::STRUCT,
          'elem' => array(
            'type' => TType::STRUCT,
            'class' => '\Airavata\Model\Sharing\PermissionType',
            ),
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_getPermissionTypes_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::LST) {
            $this->success = array();
            $_size126 = 0;
            $_etype129 = 0;
            $xfer += $input->readListBegin($_etype129, $_size126);
            for ($_i130 = 0; $_i130 < $_size126; ++$_i130)
            {
              $elem131 = null;
              $elem131 = new \Airavata\Model\Sharing\PermissionType();
              $xfer += $elem131->read($input);
              $this->success []= $elem131;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_getPermissionTypes_result');
    if ($this->success !== null) {
      if (!is_array($this->success)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('success', TType::LST, 0);
      {
        $output->writeListBegin(TType::STRUCT, count($this->success));
        {
          foreach ($this->success as $iter132)
          {
            $xfer += $iter132->write($output);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_shareEntityWithUsers_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string[]
   */
  public $userList = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;
  /**
   * @var bool
   */
  public $cascadePermission = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'userList',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        4 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        5 => array(
          'var' => 'cascadePermission',
          'type' => TType::BOOL,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['userList'])) {
        $this->userList = $vals['userList'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
      if (isset($vals['cascadePermission'])) {
        $this->cascadePermission = $vals['cascadePermission'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_shareEntityWithUsers_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::LST) {
            $this->userList = array();
            $_size133 = 0;
            $_etype136 = 0;
            $xfer += $input->readListBegin($_etype136, $_size133);
            for ($_i137 = 0; $_i137 < $_size133; ++$_i137)
            {
              $elem138 = null;
              $xfer += $input->readString($elem138);
              $this->userList []= $elem138;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 5:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->cascadePermission);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_shareEntityWithUsers_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userList !== null) {
      if (!is_array($this->userList)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('userList', TType::LST, 3);
      {
        $output->writeListBegin(TType::STRING, count($this->userList));
        {
          foreach ($this->userList as $iter139)
          {
            $xfer += $output->writeString($iter139);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 4);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->cascadePermission !== null) {
      $xfer += $output->writeFieldBegin('cascadePermission', TType::BOOL, 5);
      $xfer += $output->writeBool($this->cascadePermission);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_shareEntityWithUsers_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_shareEntityWithUsers_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_shareEntityWithUsers_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_revokeEntitySharingFromUsers_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string[]
   */
  public $userList = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'userList',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        4 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['userList'])) {
        $this->userList = $vals['userList'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_revokeEntitySharingFromUsers_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::LST) {
            $this->userList = array();
            $_size140 = 0;
            $_etype143 = 0;
            $xfer += $input->readListBegin($_etype143, $_size140);
            for ($_i144 = 0; $_i144 < $_size140; ++$_i144)
            {
              $elem145 = null;
              $xfer += $input->readString($elem145);
              $this->userList []= $elem145;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_revokeEntitySharingFromUsers_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userList !== null) {
      if (!is_array($this->userList)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('userList', TType::LST, 3);
      {
        $output->writeListBegin(TType::STRING, count($this->userList));
        {
          foreach ($this->userList as $iter146)
          {
            $xfer += $output->writeString($iter146);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 4);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_revokeEntitySharingFromUsers_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_revokeEntitySharingFromUsers_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_revokeEntitySharingFromUsers_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_shareEntityWithGroups_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string[]
   */
  public $groupList = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;
  /**
   * @var bool
   */
  public $cascadePermission = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'groupList',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        4 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        5 => array(
          'var' => 'cascadePermission',
          'type' => TType::BOOL,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['groupList'])) {
        $this->groupList = $vals['groupList'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
      if (isset($vals['cascadePermission'])) {
        $this->cascadePermission = $vals['cascadePermission'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_shareEntityWithGroups_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::LST) {
            $this->groupList = array();
            $_size147 = 0;
            $_etype150 = 0;
            $xfer += $input->readListBegin($_etype150, $_size147);
            for ($_i151 = 0; $_i151 < $_size147; ++$_i151)
            {
              $elem152 = null;
              $xfer += $input->readString($elem152);
              $this->groupList []= $elem152;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 5:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->cascadePermission);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_shareEntityWithGroups_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupList !== null) {
      if (!is_array($this->groupList)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('groupList', TType::LST, 3);
      {
        $output->writeListBegin(TType::STRING, count($this->groupList));
        {
          foreach ($this->groupList as $iter153)
          {
            $xfer += $output->writeString($iter153);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 4);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->cascadePermission !== null) {
      $xfer += $output->writeFieldBegin('cascadePermission', TType::BOOL, 5);
      $xfer += $output->writeBool($this->cascadePermission);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_shareEntityWithGroups_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_shareEntityWithGroups_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_shareEntityWithGroups_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_revokeEntitySharingFromGroups_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string[]
   */
  public $groupList = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'groupList',
          'type' => TType::LST,
          'etype' => TType::STRING,
          'elem' => array(
            'type' => TType::STRING,
            ),
          ),
        4 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['groupList'])) {
        $this->groupList = $vals['groupList'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_revokeEntitySharingFromGroups_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::LST) {
            $this->groupList = array();
            $_size154 = 0;
            $_etype157 = 0;
            $xfer += $input->readListBegin($_etype157, $_size154);
            for ($_i158 = 0; $_i158 < $_size154; ++$_i158)
            {
              $elem159 = null;
              $xfer += $input->readString($elem159);
              $this->groupList []= $elem159;
            }
            $xfer += $input->readListEnd();
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_revokeEntitySharingFromGroups_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 2);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->groupList !== null) {
      if (!is_array($this->groupList)) {
        throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
      }
      $xfer += $output->writeFieldBegin('groupList', TType::LST, 3);
      {
        $output->writeListBegin(TType::STRING, count($this->groupList));
        {
          foreach ($this->groupList as $iter160)
          {
            $xfer += $output->writeString($iter160);
          }
        }
        $output->writeListEnd();
      }
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 4);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_revokeEntitySharingFromGroups_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_revokeEntitySharingFromGroups_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_revokeEntitySharingFromGroups_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_userHasAccess_args {
  static $_TSPEC;

  /**
   * @var string
   */
  public $domainId = null;
  /**
   * @var string
   */
  public $userId = null;
  /**
   * @var string
   */
  public $entityId = null;
  /**
   * @var string
   */
  public $permissionTypeId = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        1 => array(
          'var' => 'domainId',
          'type' => TType::STRING,
          ),
        2 => array(
          'var' => 'userId',
          'type' => TType::STRING,
          ),
        3 => array(
          'var' => 'entityId',
          'type' => TType::STRING,
          ),
        4 => array(
          'var' => 'permissionTypeId',
          'type' => TType::STRING,
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['domainId'])) {
        $this->domainId = $vals['domainId'];
      }
      if (isset($vals['userId'])) {
        $this->userId = $vals['userId'];
      }
      if (isset($vals['entityId'])) {
        $this->entityId = $vals['entityId'];
      }
      if (isset($vals['permissionTypeId'])) {
        $this->permissionTypeId = $vals['permissionTypeId'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_userHasAccess_args';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 1:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->domainId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 2:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->userId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 3:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->entityId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 4:
          if ($ftype == TType::STRING) {
            $xfer += $input->readString($this->permissionTypeId);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_userHasAccess_args');
    if ($this->domainId !== null) {
      $xfer += $output->writeFieldBegin('domainId', TType::STRING, 1);
      $xfer += $output->writeString($this->domainId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->userId !== null) {
      $xfer += $output->writeFieldBegin('userId', TType::STRING, 2);
      $xfer += $output->writeString($this->userId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->entityId !== null) {
      $xfer += $output->writeFieldBegin('entityId', TType::STRING, 3);
      $xfer += $output->writeString($this->entityId);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->permissionTypeId !== null) {
      $xfer += $output->writeFieldBegin('permissionTypeId', TType::STRING, 4);
      $xfer += $output->writeString($this->permissionTypeId);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}

class SharingRegistryService_userHasAccess_result {
  static $_TSPEC;

  /**
   * @var bool
   */
  public $success = null;
  /**
   * @var \Airavata\Model\Sharing\SharingRegistryException
   */
  public $sre = null;

  public function __construct($vals=null) {
    if (!isset(self::$_TSPEC)) {
      self::$_TSPEC = array(
        0 => array(
          'var' => 'success',
          'type' => TType::BOOL,
          ),
        1 => array(
          'var' => 'sre',
          'type' => TType::STRUCT,
          'class' => '\Airavata\Model\Sharing\SharingRegistryException',
          ),
        );
    }
    if (is_array($vals)) {
      if (isset($vals['success'])) {
        $this->success = $vals['success'];
      }
      if (isset($vals['sre'])) {
        $this->sre = $vals['sre'];
      }
    }
  }

  public function getName() {
    return 'SharingRegistryService_userHasAccess_result';
  }

  public function read($input)
  {
    $xfer = 0;
    $fname = null;
    $ftype = 0;
    $fid = 0;
    $xfer += $input->readStructBegin($fname);
    while (true)
    {
      $xfer += $input->readFieldBegin($fname, $ftype, $fid);
      if ($ftype == TType::STOP) {
        break;
      }
      switch ($fid)
      {
        case 0:
          if ($ftype == TType::BOOL) {
            $xfer += $input->readBool($this->success);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        case 1:
          if ($ftype == TType::STRUCT) {
            $this->sre = new \Airavata\Model\Sharing\SharingRegistryException();
            $xfer += $this->sre->read($input);
          } else {
            $xfer += $input->skip($ftype);
          }
          break;
        default:
          $xfer += $input->skip($ftype);
          break;
      }
      $xfer += $input->readFieldEnd();
    }
    $xfer += $input->readStructEnd();
    return $xfer;
  }

  public function write($output) {
    $xfer = 0;
    $xfer += $output->writeStructBegin('SharingRegistryService_userHasAccess_result');
    if ($this->success !== null) {
      $xfer += $output->writeFieldBegin('success', TType::BOOL, 0);
      $xfer += $output->writeBool($this->success);
      $xfer += $output->writeFieldEnd();
    }
    if ($this->sre !== null) {
      $xfer += $output->writeFieldBegin('sre', TType::STRUCT, 1);
      $xfer += $this->sre->write($output);
      $xfer += $output->writeFieldEnd();
    }
    $xfer += $output->writeFieldStop();
    $xfer += $output->writeStructEnd();
    return $xfer;
  }

}


