local_message 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,27 +12,18 @@ class LocalMessageClient
12
12
  end
13
13
 
14
14
  def register
15
- send("@register #{username} #{listen_port}")
15
+ send_message("@register #{username} #{listen_port}")
16
16
  end
17
17
 
18
- def send(message)
18
+ def send_message(message)
19
19
  socket = TCPSocket.open(server, port)
20
- sleep 1
21
20
  socket.write(message)
22
21
  socket.close
23
- #puts "Waiting for server acknowledgement..."
24
- #listen
25
- end
26
-
27
- def new_listen_port
28
- @listen_port = Random.rand(1000..30_000)
29
22
  end
30
23
 
31
24
  def listen
32
- #puts "Listening on #{listen_port}..."
33
25
  server = TCPServer.open(listen_port)
34
26
  client = server.accept
35
- #puts "Connection open, waiting for message..."
36
27
  message = client.read
37
28
  client.close
38
29
  server.close
@@ -7,53 +7,38 @@ class LocalMessageRouter
7
7
  def initialize(listening_port)
8
8
  @port = listening_port
9
9
  @registered_users = {}
10
- @open_ports = []
11
10
  end
12
11
 
13
12
  def start
14
13
  server = TCPServer.open(port)
15
14
  begin
16
15
 
17
- puts "Listening on port: #{port}..."
18
16
  Thread.start(server.accept) do |client|
19
17
  fam, port, hostname, ip = client.peeraddr
20
- puts "Connection initiated from #{hostname}:#{port}"
21
18
  message = client.read
22
- puts "Message from #{hostname}:#{port}: #{message}"
23
- puts handle(message, port, ip)
24
- puts "Closing connection from #{hostname}:#{port}"
19
+ handle(message, port, ip)
25
20
  client.close
26
21
  end
27
22
 
28
23
  end while true
29
24
  end
30
25
 
26
+ private
27
+
31
28
  def handle(message, port, ip)
32
29
  if register?(message)
33
30
  username, port = strip_username_port(message)
34
- register(username, port.to_i, ip)
35
- if registered?(username)
36
- puts "Registered #{username} => #{ip}:#{port}"
37
- else
38
- puts "Couldn't register #{username}"
39
- end
40
- #send_register_ack(ip, port, username)
31
+ register(username, port, ip)
32
+
41
33
  elsif has_recipient?(message)
42
34
  recipient = strip_recipient(message)
43
35
  sender = username_by_ip(ip)
44
36
  forward_message(sender, recipient, message)
45
- if registered?(recipient)
46
- #send_ack(ip, port, recipient, message)
47
- else
48
- #send_ack(ip, port, recipient, "No such recipient")
49
- end
50
- else
51
- "Message not handled"
52
37
  end
53
38
  end
54
39
 
55
40
  def register?(message)
56
- return true if /@register/.match(message)
41
+ return true if /^@register/.match(message)
57
42
  false
58
43
  end
59
44
 
@@ -65,16 +50,6 @@ class LocalMessageRouter
65
50
  registered_users[username] = LocalMessageUser.new(port, ip)
66
51
  end
67
52
 
68
- def send_register_ack(hostname, port, username)
69
- if registered?(username)
70
- send(hostname, port, "Successfully registered #{username}")
71
- "Successfully registered #{username}"
72
- else
73
- send(hostname, port, "Failed to register #{username}")
74
- "Failed to register #{username}"
75
- end
76
- end
77
-
78
53
  def username_by_ip(ip)
79
54
  registered_users.values.each do |user|
80
55
  return registered_users.key(user) if user.hostname == ip
@@ -83,7 +58,7 @@ class LocalMessageRouter
83
58
 
84
59
  def strip_username_port(message)
85
60
  /@register\s+(.+)\s+(\d+)/.match(message)
86
- [$1, $2]
61
+ [$1, $2.to_i]
87
62
  end
88
63
 
89
64
  def has_recipient?(message)
@@ -96,35 +71,23 @@ class LocalMessageRouter
96
71
  end
97
72
 
98
73
  def strip_message(message)
99
- message.split[1..-1].join(" ")
74
+ message.split(" ", 2)[1]
100
75
  end
101
76
 
102
77
  def forward_message(sender, recipient, message)
103
78
  if registered?(recipient)
104
79
  info = registered_users[recipient]
105
80
  message_with_sender = "@#{sender} #{strip_message(message)}"
106
- puts "Sending message to #{recipient}, host: #{info.hostname} port: #{info.port}"
107
- send(info.hostname, info.port, message_with_sender)
81
+ send_message(info.hostname, info.port, message_with_sender)
108
82
  end
109
83
  end
110
84
 
111
- def port_open?(port)
112
- open_ports.include?(port)
113
- end
114
-
115
- def send(hostname, port, message)
85
+ def send_message(hostname, port, message)
116
86
  Thread.new do
117
- puts "Sending #{message} to #{hostname}:#{port}"
118
87
  socket = TCPSocket.open(hostname, port)
119
- sleep 1
120
88
  socket.write(message)
121
89
  socket.close
122
90
  end
123
91
  end
124
92
 
125
- def send_ack(hostname, port, recipient, message)
126
- send(hostname, port, "Sent #{message} to #{recipient}")
127
- "Sent #{message} to #{hostname}:#{port}"
128
- end
129
-
130
93
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: local_message
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-06 00:00:00.000000000 Z
12
+ date: 2012-11-28 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Routes messages across a local network.
15
15
  email: elliot@sandbochs.com
@@ -21,7 +21,7 @@ files:
21
21
  - lib/local_message/local_message_router.rb
22
22
  - lib/local_message/local_message_client.rb
23
23
  - lib/local_message/local_message_user.rb
24
- homepage: http://www.github.com/sandbochs
24
+ homepage: http://www.github.com/sandbochs/local_message
25
25
  licenses: []
26
26
  post_install_message:
27
27
  rdoc_options: []