TeamSpeak 3 PHP Framework  1.1.12
TeamSpeak3_Adapter_FileTransfer Class Reference

Provides low-level methods for file transfer communication with a TeamSpeak 3 Server. More...

Inheritance diagram for TeamSpeak3_Adapter_FileTransfer:
TeamSpeak3_Adapter_Abstract

List of all members.

Public Member Functions

 syn ()
 Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.
 __destruct ()
 The TeamSpeak3_Adapter_FileTransfer destructor.
 upload ($ftkey, $seek, $data)
 Sends the content of a file to the server.
 download ($ftkey, $size, $passthru=FALSE)
 Returns the content of a downloaded file as a TeamSpeak3_Helper_String object.
 __sleep ()
 Commit pending data.
 __wakeup ()
 Reconnects to the remote server.
 getProfiler ()
 Returns the profiler timer used for this connection adapter.
 getTransport ()
 Returns the transport object used for this connection adapter.
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

Protected Member Functions

 init ($ftkey)
 Sends a valid file transfer key to the server to initialize the file transfer.
 passthru ($size)
 Outputs all remaining data on a TeamSpeak 3 file transfer stream using PHP's fpassthru() function.
 initTransport ($options, $transport="TeamSpeak3_Transport_TCP")
 Loads the transport object object used for the connection adapter and passes a given set of options.

Protected Attributes

 $options = null
 $transport = null

Detailed Description

Provides low-level methods for file transfer communication with a TeamSpeak 3 Server.

Definition at line 32 of file FileTransfer.php.


Constructor & Destructor Documentation

The TeamSpeak3_Adapter_FileTransfer destructor.

Returns:
void

Reimplemented from TeamSpeak3_Adapter_Abstract.

Definition at line 56 of file FileTransfer.php.

References TeamSpeak3_Adapter_Abstract\getTransport().

  {
    if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
    {
      $this->getTransport()->disconnect();
    }
  }

Member Function Documentation

Connects the TeamSpeak3_Transport_Abstract object and performs initial actions on the remote server.

Exceptions:
TeamSpeak3_Adapter_Exception
Returns:
void

Reimplemented from TeamSpeak3_Adapter_Abstract.

Definition at line 41 of file FileTransfer.php.

References TeamSpeak3_Helper_Signal\getInstance(), init(), and TeamSpeak3_Adapter_Abstract\initTransport().

  {
    $this->initTransport($this->options);
    $this->transport->setAdapter($this);

    TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));

    TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferConnected", $this);
  }
TeamSpeak3_Adapter_FileTransfer::init ( ftkey) [protected]

Sends a valid file transfer key to the server to initialize the file transfer.

Parameters:
string$ftkey
Exceptions:
TeamSpeak3_Adapter_FileTransfer_Exception
Returns:
void

Definition at line 71 of file FileTransfer.php.

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getProfiler(), and TeamSpeak3_Adapter_Abstract\getTransport().

Referenced by download(), syn(), and upload().

  {
    if(strlen($ftkey) != 32)
    {
      throw new TeamSpeak3_Adapter_FileTransfer_Exception("invalid file transfer key format");
    }

    $this->getProfiler()->start();
    $this->getTransport()->send($ftkey);

    TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferHandshake", $this);
  }
TeamSpeak3_Adapter_FileTransfer::upload ( ftkey,
seek,
data 
)

Sends the content of a file to the server.

Parameters:
string$ftkey
integer$seek
string$data
Exceptions:
TeamSpeak3_Adapter_FileTransfer_Exception
Returns:
void

Definition at line 93 of file FileTransfer.php.

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getProfiler(), TeamSpeak3_Adapter_Abstract\getTransport(), and init().

  {
    $this->init($ftkey);

    $size = strlen($data);
    $seek = intval($seek);
    $pack = 4096;

    TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadStarted", $ftkey, $seek, $size);

    for(;$seek < $size;)
    {
      $rest = $size-$seek;
      $pack = $rest < $pack ? $rest : $pack;
      $buff = substr($data, $seek, $pack);
      $seek = $seek+$pack;

      $this->getTransport()->send($buff);

      TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadProgress", $ftkey, $seek, $size);
    }

    $this->getProfiler()->stop();

    TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadFinished", $ftkey, $seek, $size);

    if($seek < $size)
    {
      throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file upload (" . $seek . " of " . $size . " bytes)");
    }
  }
TeamSpeak3_Adapter_FileTransfer::download ( ftkey,
size,
passthru = FALSE 
)

Returns the content of a downloaded file as a TeamSpeak3_Helper_String object.

Parameters:
string$ftkey
integer$size
boolean$passthru
Exceptions:
TeamSpeak3_Adapter_FileTransfer_Exception
Returns:
TeamSpeak3_Helper_String

Definition at line 134 of file FileTransfer.php.

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Adapter_Abstract\getProfiler(), TeamSpeak3_Adapter_Abstract\getTransport(), init(), and passthru().

  {
    $this->init($ftkey);

    if($passthru)
    {
      return $this->passthru($size);
    }

    $buff = new TeamSpeak3_Helper_String("");
    $size = intval($size);
    $pack = 4096;

    TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadStarted", $ftkey, count($buff), $size);

    for($seek = 0;$seek < $size;)
    {
      $rest = $size-$seek;
      $pack = $rest < $pack ? $rest : $pack;
      $data = $this->getTransport()->read($rest < $pack ? $rest : $pack);
      $seek = $seek+$pack;

      $buff->append($data);

      TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadProgress", $ftkey, count($buff), $size);
    }

    $this->getProfiler()->stop();

    TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadFinished", $ftkey, count($buff), $size);

    if(strlen($buff) != $size)
    {
      throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . count($buff) . " of " . $size . " bytes)");
    }

    return $buff;
  }

Outputs all remaining data on a TeamSpeak 3 file transfer stream using PHP's fpassthru() function.

Parameters:
integer$size
Exceptions:
TeamSpeak3_Adapter_FileTransfer_Exception
Returns:
void

Definition at line 181 of file FileTransfer.php.

References TeamSpeak3_Adapter_Abstract\getTransport().

Referenced by download().

  {
    $buff_size = fpassthru($this->getTransport()->getStream());

    if($buff_size != $size)
    {
      throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . intval($buff_size) . " of " . $size . " bytes)");
    }
  }

Commit pending data.

Returns:
array

Definition at line 85 of file Abstract.php.

  {
    return array("options");
  }

Reconnects to the remote server.

Returns:
void

Definition at line 95 of file Abstract.php.

References TeamSpeak3_Adapter_Abstract\syn().

  {
    $this->syn();
  }

Returns the profiler timer used for this connection adapter.

Returns:
TeamSpeak3_Helper_Profiler_Timer

Definition at line 105 of file Abstract.php.

References TeamSpeak3_Helper_Profiler\get().

Referenced by download(), TeamSpeak3_Adapter_ServerQuery\getQueryRuntime(), init(), TeamSpeak3_Adapter_ServerQuery\request(), and upload().

  {
    return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
  }
TeamSpeak3_Adapter_Abstract::initTransport ( options,
transport = "TeamSpeak3_Transport_TCP" 
) [protected, inherited]

Loads the transport object object used for the connection adapter and passes a given set of options.

Parameters:
array$options
string$transport
Exceptions:
TeamSpeak3_Adapter_Exception
Returns:
void

Definition at line 129 of file Abstract.php.

Referenced by syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), and TeamSpeak3_Adapter_Update\syn().

  {
    if(!is_array($options))
    {
      throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
    }

    $this->transport = new $transport($options);
  }

Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to.

Returns:
string

Definition at line 145 of file Abstract.php.

References TeamSpeak3_Adapter_Abstract\getTransport().

  {
    return $this->getTransport()->getConfig("host", "0.0.0.0");
  }

Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to.

Returns:
string

Definition at line 156 of file Abstract.php.

References TeamSpeak3_Adapter_Abstract\getTransport().

  {
    return $this->getTransport()->getConfig("port", "0");
  }

The documentation for this class was generated from the following file:
 All Classes Files Functions Variables