TeamSpeak 3 PHP Framework  1.1.23
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. More...
 
 __destruct ()
 The TeamSpeak3_Adapter_FileTransfer destructor. More...
 
 upload ($ftkey, $seek, $data)
 Sends the content of a file to the server. More...
 
 download ($ftkey, $size, $passthru=FALSE)
 Returns the content of a downloaded file as a TeamSpeak3_Helper_String object. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getProfiler ()
 Returns the profiler timer used for this connection adapter. More...
 
 getTransport ()
 Returns the transport object used for this connection adapter. More...
 
 getTransportHost ()
 Returns the hostname or IPv4 address the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 
 getTransportPort ()
 Returns the port number of the server the underlying TeamSpeak3_Transport_Abstract object is connected to. More...
 

Protected Member Functions

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

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().

57  {
58  if($this->getTransport() instanceof TeamSpeak3_Transport_Abstract && $this->getTransport()->isConnected())
59  {
60  $this->getTransport()->disconnect();
61  }
62  }

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().

42  {
43  $this->initTransport($this->options);
44  $this->transport->setAdapter($this);
45 
46  TeamSpeak3_Helper_Profiler::init(spl_object_hash($this));
47 
48  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferConnected", $this);
49  }
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().

72  {
73  if(strlen($ftkey) != 32)
74  {
75  throw new TeamSpeak3_Adapter_FileTransfer_Exception("invalid file transfer key format");
76  }
77 
78  $this->getProfiler()->start();
79  $this->getTransport()->send($ftkey);
80 
81  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferHandshake", $this);
82  }
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().

94  {
95  $this->init($ftkey);
96 
97  $size = strlen($data);
98  $seek = intval($seek);
99  $pack = 4096;
100 
101  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadStarted", $ftkey, $seek, $size);
102 
103  for(;$seek < $size;)
104  {
105  $rest = $size-$seek;
106  $pack = $rest < $pack ? $rest : $pack;
107  $buff = substr($data, $seek, $pack);
108  $seek = $seek+$pack;
109 
110  $this->getTransport()->send($buff);
111 
112  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadProgress", $ftkey, $seek, $size);
113  }
114 
115  $this->getProfiler()->stop();
116 
117  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferUploadFinished", $ftkey, $seek, $size);
118 
119  if($seek < $size)
120  {
121  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file upload (" . $seek . " of " . $size . " bytes)");
122  }
123  }
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().

135  {
136  $this->init($ftkey);
137 
138  if($passthru)
139  {
140  return $this->passthru($size);
141  }
142 
143  $buff = new TeamSpeak3_Helper_String("");
144  $size = intval($size);
145  $pack = 4096;
146 
147  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadStarted", $ftkey, count($buff), $size);
148 
149  for($seek = 0;$seek < $size;)
150  {
151  $rest = $size-$seek;
152  $pack = $rest < $pack ? $rest : $pack;
153  $data = $this->getTransport()->read($rest < $pack ? $rest : $pack);
154  $seek = $seek+$pack;
155 
156  $buff->append($data);
157 
158  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadProgress", $ftkey, count($buff), $size);
159  }
160 
161  $this->getProfiler()->stop();
162 
163  TeamSpeak3_Helper_Signal::getInstance()->emit("filetransferDownloadFinished", $ftkey, count($buff), $size);
164 
165  if(strlen($buff) != $size)
166  {
167  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . count($buff) . " of " . $size . " bytes)");
168  }
169 
170  return $buff;
171  }
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().

182  {
183  $buff_size = fpassthru($this->getTransport()->getStream());
184 
185  if($buff_size != $size)
186  {
187  throw new TeamSpeak3_Adapter_FileTransfer_Exception("incomplete file download (" . intval($buff_size) . " of " . $size . " bytes)");
188  }
189  }
TeamSpeak3_Adapter_Abstract::__sleep ( )
inherited

Commit pending data.

Returns
array

Definition at line 85 of file Abstract.php.

86  {
87  return array("options");
88  }
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().

96  {
97  $this->syn();
98  }
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().

106  {
107  return TeamSpeak3_Helper_Profiler::get(spl_object_hash($this));
108  }
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().

130  {
131  if(!is_array($options))
132  {
133  throw new TeamSpeak3_Adapter_Exception("transport parameters must provided in an array");
134  }
135 
136  $this->transport = new $transport($options);
137  }
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().

146  {
147  return $this->getTransport()->getConfig("host", "0.0.0.0");
148  }
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().

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

The documentation for this class was generated from the following file: