1<?php
2
3/**
4 * Copyright (c) 2006- Facebook
5 * Distributed under the Thrift Software License
6 *
7 * See accompanying file LICENSE or visit the Thrift site at:
8 * http://developers.facebook.com/thrift/
9 *
10 * @package thrift.transport
11 * @author Mark Slee <mcslee@facebook.com>
12 */
13
14/**
15 * Transport exceptions
16 */
17class TTransportException extends TException {
18
19  const UNKNOWN = 0;
20  const NOT_OPEN = 1;
21  const ALREADY_OPEN = 2;
22  const TIMED_OUT = 3;
23  const END_OF_FILE = 4;
24
25  function __construct($message=null, $code=0) {
26    parent::__construct($message, $code);
27  }
28}
29
30/**
31 * Base interface for a transport agent.
32 *
33 * @package thrift.transport
34 * @author Mark Slee <mcslee@facebook.com>
35 */
36abstract class TTransport {
37
38  /**
39   * Whether this transport is open.
40   *
41   * @return boolean true if open
42   */
43  public abstract function isOpen();
44
45  /**
46   * Open the transport for reading/writing
47   *
48   * @throws TTransportException if cannot open
49   */
50  public abstract function open();
51
52  /**
53   * Close the transport.
54   */
55  public abstract function close();
56
57  /**
58   * Read some data into the array.
59   *
60   * @param int    $len How much to read
61   * @return string The data that has been read
62   * @throws TTransportException if cannot read any more data
63   */
64  public abstract function read($len);
65
66  /**
67   * Guarantees that the full amount of data is read.
68   *
69   * @return string The data, of exact length
70   * @throws TTransportException if cannot read data
71   */
72  public function readAll($len) {
73    // return $this->read($len);
74
75    $data = '';
76    $got = 0;
77    while (($got = strlen($data)) < $len) {
78      $data .= $this->read($len - $got);
79    }
80    return $data;
81  }
82
83  /**
84   * Writes the given data out.
85   *
86   * @param string $buf  The data to write
87   * @throws TTransportException if writing fails
88   */
89  public abstract function write($buf);
90
91  /**
92   * Flushes any pending data out of a buffer
93   *
94   * @throws TTransportException if a writing error occurs
95   */
96  public function flush() {}
97}
98
99?>
100