Mercurial > hg > Applications > casawiki
comparison Cassandra/lib/Thrift/Transport.pm @ 0:a2f0a2c135cf
hg init
author | Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 06 Jun 2010 22:00:38 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a2f0a2c135cf |
---|---|
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 require 5.6.0; | |
21 use strict; | |
22 use warnings; | |
23 | |
24 use Thrift; | |
25 | |
26 # | |
27 # Transport exceptions | |
28 # | |
29 package TTransportException; | |
30 use base('Thrift::TException'); | |
31 | |
32 use constant UNKNOWN => 0; | |
33 use constant NOT_OPEN => 1; | |
34 use constant ALREADY_OPEN => 2; | |
35 use constant TIMED_OUT => 3; | |
36 use constant END_OF_FILE => 4; | |
37 | |
38 sub new{ | |
39 my $classname = shift; | |
40 my $self = $classname->SUPER::new(@_); | |
41 | |
42 return bless($self,$classname); | |
43 } | |
44 | |
45 package Thrift::Transport; | |
46 | |
47 # | |
48 # Whether this transport is open. | |
49 # | |
50 # @return boolean true if open | |
51 # | |
52 sub isOpen | |
53 { | |
54 die "abstract"; | |
55 } | |
56 | |
57 # | |
58 # Open the transport for reading/writing | |
59 # | |
60 # @throws TTransportException if cannot open | |
61 # | |
62 sub open | |
63 { | |
64 die "abstract"; | |
65 } | |
66 | |
67 # | |
68 # Close the transport. | |
69 # | |
70 sub close | |
71 { | |
72 die "abstract"; | |
73 } | |
74 | |
75 # | |
76 # Read some data into the array. | |
77 # | |
78 # @param int $len How much to read | |
79 # @return string The data that has been read | |
80 # @throws TTransportException if cannot read any more data | |
81 # | |
82 sub read | |
83 { | |
84 my ($len); | |
85 die("abstract"); | |
86 } | |
87 | |
88 # | |
89 # Guarantees that the full amount of data is read. | |
90 # | |
91 # @return string The data, of exact length | |
92 # @throws TTransportException if cannot read data | |
93 # | |
94 sub readAll | |
95 { | |
96 my $self = shift; | |
97 my $len = shift; | |
98 | |
99 my $data = ''; | |
100 my $got = 0; | |
101 | |
102 while (($got = length($data)) < $len) { | |
103 $data .= $self->read($len - $got); | |
104 } | |
105 | |
106 return $data; | |
107 } | |
108 | |
109 # | |
110 # Writes the given data out. | |
111 # | |
112 # @param string $buf The data to write | |
113 # @throws TTransportException if writing fails | |
114 # | |
115 sub write | |
116 { | |
117 my ($buf); | |
118 die "abstract"; | |
119 } | |
120 | |
121 # | |
122 # Flushes any pending data out of a buffer | |
123 # | |
124 # @throws TTransportException if a writing error occurs | |
125 # | |
126 sub flush {} | |
127 | |
128 | |
129 # | |
130 # TransportFactory creates transport objects from transports | |
131 # | |
132 package Thrift::TransportFactory; | |
133 | |
134 sub new { | |
135 my $classname = shift; | |
136 my $self = {}; | |
137 | |
138 return bless($self,$classname); | |
139 } | |
140 | |
141 # | |
142 # Build a transport from the base transport | |
143 # | |
144 # @return Thrift::Transport transport | |
145 # | |
146 sub getTransport | |
147 { | |
148 my $self = shift; | |
149 my $trans = shift; | |
150 | |
151 return $trans; | |
152 } | |
153 | |
154 | |
155 # | |
156 # ServerTransport base class module | |
157 # | |
158 package Thrift::ServerTransport; | |
159 | |
160 sub listen | |
161 { | |
162 die "abstract"; | |
163 } | |
164 | |
165 sub accept | |
166 { | |
167 die "abstract"; | |
168 } | |
169 | |
170 sub close | |
171 { | |
172 die "abstract"; | |
173 } | |
174 | |
175 | |
176 1; | |
177 |