Sha256: 93e153b39a05d7ab7b348752551dd0f5b66af6dc691191e15560f02cb15b56f5

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

require 'thread'

NodeInformation=Struct.new(:address,:port,:protocol,:nodeHash)

class NodeInformation
  def to_s
    "[#{protocol}://#{address}:#{port} #{nodeHash.inspect}]"
  end
  
  def <=>(i)
    r=(self.nodeHash<=>i.nodeHash)
    return r if r!=0
    r=(self.address<=>i.address)
    return r if r!=0
    r=(self.port<=>i.port)
    return r if r!=0
    r=(self.protocol<=>i.protocol)
    return r if r!=0
    0
  end
end

class AbstractSendConnection
  def initialize(baseSocket)
    @baseSocket=baseSocket
  end
  def method_missing(*m)
    
  end
  
  
  private
  def send(message)
    @baseSocket.send(message)
  end
end

#class AbstractReceiveConnection
#  def run
#    @thread=Thread.new{
#      
#    }
#  end
#end

class AbstractNetNode
  include DRbUndumped
  attr_reader :id
  attr_accessor :hook
  
  def initialize(port,app,protocol,hash)
    @id=NodeInformation.new(address,port,protocol,hash)
    @app=app
    @hook=nil
  end
  
  def log(*s)
    if @app
      @app.log(*s)
    else
      puts s.map{|x|x.to_s}.join(" ")
    end
  end
  
  def port
    @id.port
  end
  def protocol
    @id.protocol    
  end
  def address
    # TODO
    "127.0.0.1"
  end
  
  def setHook(&b)
    @hook=b
  end
  
  def method_missing(*s)
    return @hook.call(*s) if @hook
    super
  end
  
  def node
    @id    
  end
  
  def sendTo(nodeId,*s)
  end
  def sendToAll(*s)
  end
  
  def connect(nodeId)
  end
  
  def close(nodeId)
  end
  
  def nodes
    []    
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appswarm-0.0.1 apps/network_node/abstract_node.rb