Subversion Repositories SmartDukaan

Rev

Rev 30 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
30 ashish 1
# encoding: ascii-8bit
2
# 
3
# Licensed to the Apache Software Foundation (ASF) under one
4
# or more contributor license agreements. See the NOTICE file
5
# distributed with this work for additional information
6
# regarding copyright ownership. The ASF licenses this file
7
# to you under the Apache License, Version 2.0 (the
8
# "License"); you may not use this file except in compliance
9
# with the License. You may obtain a copy of the License at
10
# 
11
#   http://www.apache.org/licenses/LICENSE-2.0
12
# 
13
# Unless required by applicable law or agreed to in writing,
14
# software distributed under the License is distributed on an
15
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
# KIND, either express or implied. See the License for the
17
# specific language governing permissions and limitations
18
# under the License.
19
# 
20
 
21
require 'socket'
22
 
23
module Thrift
24
  class UNIXServerSocket < BaseServerTransport
25
    def initialize(path)
26
      @path = path
27
      @handle = nil
28
    end
29
 
30
    attr_accessor :handle
31
 
32
    def listen
33
      @handle = ::UNIXServer.new(@path)
34
    end
35
 
36
    def accept
37
      unless @handle.nil?
38
        sock = @handle.accept
39
        trans = UNIXSocket.new(nil)
40
        trans.handle = sock
41
        trans
42
      end
43
    end
44
 
45
    def close
46
      if @handle
47
        @handle.close unless @handle.closed?
48
        @handle = nil
49
        # UNIXServer doesn't delete the socket file, so we have to do it ourselves
50
        File.delete(@path)
51
      end
52
    end
53
 
54
    def closed?
55
      @handle.nil? or @handle.closed?
56
    end
57
 
58
    alias to_io handle
59
  end
60
end