]>
Commit | Line | Data |
---|---|---|
f67539c2 TL |
1 | # |
2 | # Licensed to the Apache Software Foundation (ASF) under one | |
3 | # or more contributor license agreements. See the NOTICE file | |
4 | # distributed with this work for additional information | |
5 | # regarding copyright ownership. The ASF licenses this file | |
6 | # to you under the Apache License, Version 2.0 (the | |
7 | # "License"); you may not use this file except in compliance | |
8 | # with the License. You may obtain a copy of the License at | |
9 | # | |
10 | # http://www.apache.org/licenses/LICENSE-2.0 | |
11 | # | |
12 | # Unless required by applicable law or agreed to in writing, | |
13 | # software distributed under the License is distributed on an | |
14 | # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
15 | # KIND, either express or implied. See the License for the | |
16 | # specific language governing permissions and limitations | |
17 | # under the License. | |
18 | # | |
19 | ||
20 | use 5.10.0; | |
21 | use strict; | |
22 | use warnings; | |
23 | ||
24 | use Thrift; | |
25 | use Thrift::Exception; | |
26 | ||
27 | # | |
28 | # Transport exceptions | |
29 | # | |
30 | package Thrift::TTransportException; | |
31 | use base('Thrift::TException'); | |
32 | use version 0.77; our $VERSION = version->declare("$Thrift::VERSION"); | |
33 | ||
34 | use constant UNKNOWN => 0; | |
35 | use constant NOT_OPEN => 1; | |
36 | use constant ALREADY_OPEN => 2; | |
37 | use constant TIMED_OUT => 3; | |
38 | use constant END_OF_FILE => 4; | |
39 | ||
40 | sub new { | |
41 | my $classname = shift; | |
42 | my $self = $classname->SUPER::new(@_); | |
43 | ||
44 | return bless($self,$classname); | |
45 | } | |
46 | ||
47 | package Thrift::Transport; | |
48 | use version 0.77; our $VERSION = version->declare("$Thrift::VERSION"); | |
49 | ||
50 | # | |
51 | # Whether this transport is open. | |
52 | # | |
53 | # @return boolean true if open | |
54 | # | |
55 | sub isOpen | |
56 | { | |
57 | die 'abstract'; | |
58 | } | |
59 | ||
60 | # | |
61 | # Open the transport for reading/writing | |
62 | # | |
63 | # @throws TTransportException if cannot open | |
64 | # | |
65 | sub open | |
66 | { | |
67 | die 'abstract'; | |
68 | } | |
69 | ||
70 | # | |
71 | # Close the transport. | |
72 | # | |
73 | sub close | |
74 | { | |
75 | die 'abstract'; | |
76 | } | |
77 | ||
78 | # | |
79 | # Read some data into the array. | |
80 | # | |
81 | # @param int $len How much to read | |
82 | # @return string The data that has been read | |
83 | # @throws TTransportException if cannot read any more data | |
84 | # | |
85 | sub read | |
86 | { | |
87 | die 'abstract'; | |
88 | } | |
89 | ||
90 | # | |
91 | # Guarantees that the full amount of data is read. | |
92 | # | |
93 | # @return string The data, of exact length | |
94 | # @throws TTransportException if cannot read data | |
95 | # | |
96 | sub readAll | |
97 | { | |
98 | my $self = shift; | |
99 | my $len = shift; | |
100 | ||
101 | my $data = ''; | |
102 | my $got = 0; | |
103 | ||
104 | while (($got = length($data)) < $len) { | |
105 | $data .= $self->read($len - $got); | |
106 | } | |
107 | ||
108 | return $data; | |
109 | } | |
110 | ||
111 | # | |
112 | # Writes the given data out. | |
113 | # | |
114 | # @param string $buf The data to write | |
115 | # @throws TTransportException if writing fails | |
116 | # | |
117 | sub write | |
118 | { | |
119 | die 'abstract'; | |
120 | } | |
121 | ||
122 | # | |
123 | # Flushes any pending data out of a buffer | |
124 | # | |
125 | # @throws TTransportException if a writing error occurs | |
126 | # | |
127 | sub flush {} | |
128 | ||
129 | ||
130 | # | |
131 | # TransportFactory creates transport objects from transports | |
132 | # | |
133 | package Thrift::TransportFactory; | |
134 | use version 0.77; our $VERSION = version->declare("$Thrift::VERSION"); | |
135 | ||
136 | sub new { | |
137 | my $classname = shift; | |
138 | my $self = {}; | |
139 | ||
140 | return bless($self,$classname); | |
141 | } | |
142 | ||
143 | # | |
144 | # Build a transport from the base transport | |
145 | # | |
146 | # @return Thrift::Transport transport | |
147 | # | |
148 | sub getTransport | |
149 | { | |
150 | my $self = shift; | |
151 | my $trans = shift; | |
152 | ||
153 | return $trans; | |
154 | } | |
155 | ||
156 | ||
157 | # | |
158 | # ServerTransport base class module | |
159 | # | |
160 | package Thrift::ServerTransport; | |
161 | use version 0.77; our $VERSION = version->declare("$Thrift::VERSION"); | |
162 | ||
163 | sub listen | |
164 | { | |
165 | die 'abstract'; | |
166 | } | |
167 | ||
168 | sub accept | |
169 | { | |
170 | die 'abstract'; | |
171 | } | |
172 | ||
173 | sub close | |
174 | { | |
175 | die 'abstract'; | |
176 | } | |
177 | ||
178 | ||
179 | 1; | |
180 |