# encoding: ascii-8bit
# 
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
# 
#   http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# 

require 'socket'

module Thrift
  class UNIXSocket < Socket
    def initialize(path, timeout=nil)
      @path = path
      @timeout = timeout
      @desc = @path # for read()'s error
      @handle = nil
    end

    def open
      begin
        @handle = ::UNIXSocket.new(@path)
      rescue StandardError
        raise TransportException.new(TransportException::NOT_OPEN, "Could not open UNIX socket at #{@path}")
      end
    end
  end
end