TeamSpeak 3 PHP Framework  1.1.16
Copyright © Planet TeamSpeak. All rights reserved.
 All Classes Namespaces Files Functions Variables Pages
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:

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

TeamSpeak3_Adapter_FileTransfer::__destruct ( )

The TeamSpeak3_Adapter_FileTransfer destructor.

Returns
void

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

TeamSpeak3_Adapter_FileTransfer::syn ( )

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

Exceptions
TeamSpeak3_Adapter_Exception
Returns
void

Definition at line 41 of file FileTransfer.php.

References TeamSpeak3_Helper_Signal\getInstance(), TeamSpeak3_Helper_Profiler\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(), 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;
}
TeamSpeak3_Adapter_FileTransfer::passthru (   $size)
protected

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)");
}
}
TeamSpeak3_Adapter_Abstract::__sleep ( )
inherited

Commit pending data.

Returns
array

Definition at line 85 of file Abstract.php.

{
return array("options");
}
TeamSpeak3_Adapter_Abstract::__wakeup ( )
inherited

Reconnects to the remote server.

Returns
void

Definition at line 95 of file Abstract.php.

References TeamSpeak3_Adapter_Abstract\syn().

{
$this->syn();
}
TeamSpeak3_Adapter_Abstract::getProfiler ( )
inherited

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" 
)
protectedinherited

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);
}
TeamSpeak3_Adapter_Abstract::getTransportHost ( )
inherited

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");
}
TeamSpeak3_Adapter_Abstract::getTransportPort ( )
inherited

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: