SuricatoNetwork 1.0.0

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.
Files changed (2) hide show
  1. data/lib/suricatonetwork.rb +158 -0
  2. metadata +46 -0
@@ -0,0 +1,158 @@
1
+
2
+
3
+ require 'socket'
4
+ require 'thread'
5
+ require 'timeout'
6
+
7
+
8
+
9
+ module SuricatoNetwork
10
+ class Connection
11
+ def initialize tcp
12
+ @tcp = tcp
13
+ @thread = Thread.new {
14
+
15
+ self.work
16
+
17
+ }
18
+ end
19
+
20
+ def work
21
+ puts "Starting work for #{self.to_s}"
22
+
23
+ loop {
24
+ begin
25
+
26
+ event = nil
27
+ n = nil
28
+ args = nil
29
+
30
+ Timeout.timeout (30) {
31
+ event, n, args = Event.readForm(@tcp)
32
+ }
33
+ Event.getHash[event].new(@tcp,args)
34
+ rescue => e
35
+ puts "Error on #{self.to_s}:"
36
+ puts "\t #{e.to_s}"
37
+ end
38
+ }
39
+
40
+ end
41
+
42
+ def close
43
+ puts "Closing work for #{self.to_s}"
44
+ @tcp.close
45
+ @thread.kill
46
+ end
47
+
48
+ end
49
+
50
+ class Listener
51
+ def initialize port
52
+
53
+ Listener.logo
54
+
55
+ puts "Updating Event Hash:"
56
+ Event.generateHash
57
+ obj = Event.getHash
58
+
59
+ for i in obj.keys
60
+ puts "\t...\t"+"#{obj[i]}"
61
+ end
62
+
63
+ @tcp = TCPServer.new port
64
+ puts "new Network::Listener on #{port} port"
65
+ @thread = Thread.new {
66
+
67
+ self.work
68
+
69
+ }
70
+ end
71
+
72
+ def work
73
+
74
+ loop {
75
+ Connection.new (@tcp.accept)
76
+ }
77
+ end
78
+
79
+ def self.logo
80
+ puts " "
81
+ puts " "
82
+ puts " ,'''''-._"
83
+ puts " SURICATO ; ,. <> `-._ "
84
+ puts " NETWORK ; \\' _,--'"
85
+ puts " 1.0 ; ('"
86
+ puts " ; , ` \\ "
87
+ puts " ;, , \\ "
88
+ puts " ; | |"
89
+ puts " ; |, | |\\ "
90
+ puts " ; | | | \\ "
91
+ puts " |.-\\ ,\\ |\\ |"
92
+ puts " |.- `. `-. | ||"
93
+ puts " :.- `-. \\ ';;"
94
+ puts " .- , \\;;|"
95
+ puts " ; , | ,\\ "
96
+ puts " ; , ; \\ "
97
+ puts " ; , /`. , )"
98
+ puts " __,;, ,' \\ ,|"
99
+ puts " _,--''__,| / \\ :"
100
+ puts " ,'_,-'' | ,/ | :"
101
+ puts " / / | ; ; |"
102
+ puts " | | __,-| |--..__,--| |---.--....___"
103
+ puts "___,-| |----'' / | `._`-. `----"
104
+ puts " \\ \\ `''' ''' --"
105
+ puts " `.`. --'"
106
+ puts " marlon `.`-._ _, ,- __,-"
107
+ puts " henry `-.`."
108
+ puts " --' `;"
109
+
110
+ puts ""
111
+ puts ""
112
+ puts ""
113
+ end
114
+
115
+ end
116
+
117
+ class Event
118
+ def initialize client,form
119
+ @client = client
120
+ @form = form
121
+ puts "Solving #{self}"
122
+ self.solve
123
+ end
124
+
125
+ def solve
126
+ puts "I'm Alive! ... solve is not implemented on #{self}"
127
+ end
128
+
129
+ def self.readForm tcp
130
+ event = tcp.gets.to_s.chomp
131
+ nargs = tcp.gets.to_i
132
+ args = []
133
+ nargs.times do |x|
134
+ args << tcp.gets
135
+ end
136
+
137
+ return event,nargs,args
138
+ end
139
+
140
+ def self.generateHash
141
+ @@hash = Hash.new
142
+ obj = ObjectSpace.each_object(Class).select { |klass| klass < self }
143
+
144
+ for i in obj
145
+ @@hash[i.to_s] = i
146
+ end
147
+ end
148
+
149
+ def self.getHash
150
+ return @@hash
151
+ end
152
+
153
+ end
154
+
155
+
156
+ end
157
+
158
+
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: SuricatoNetwork
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Marlon Henry Schweigert
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2016-05-26 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Network Event System
15
+ email: fleyhe0@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/suricatonetwork.rb
21
+ homepage: http://fleyhe.com
22
+ licenses:
23
+ - GPL 3.0
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 1.8.23
43
+ signing_key:
44
+ specification_version: 3
45
+ summary: Network Event System
46
+ test_files: []