p2ruby 0.1.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 (45) hide show
  1. data/.gitignore +27 -0
  2. data/HISTORY +7 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +24 -0
  5. data/Rakefile +42 -0
  6. data/VERSION +1 -0
  7. data/bin/olegen.rb +368 -0
  8. data/features/p2ruby.feature +9 -0
  9. data/features/step_definitions/p2ruby_steps.rb +0 -0
  10. data/features/support/env.rb +10 -0
  11. data/features/support/world.rb +12 -0
  12. data/lib/extension.rb +19 -0
  13. data/lib/ole20110223-013209.rb +1677 -0
  14. data/lib/p2ruby/application.rb +111 -0
  15. data/lib/p2ruby/base.rb +59 -0
  16. data/lib/p2ruby/connection.rb +250 -0
  17. data/lib/p2ruby/data_stream.rb +215 -0
  18. data/lib/p2ruby/library.rb +24 -0
  19. data/lib/p2ruby/message.rb +150 -0
  20. data/lib/p2ruby/message_factory.rb +70 -0
  21. data/lib/p2ruby/record.rb +104 -0
  22. data/lib/p2ruby/router.rb +45 -0
  23. data/lib/p2ruby/table_set.rb +166 -0
  24. data/lib/p2ruby.rb +156 -0
  25. data/lib/version.rb +8 -0
  26. data/lib/win32ole-pr.rb +5540 -0
  27. data/spec/encoding_spec.rb +15 -0
  28. data/spec/p2ruby/application_spec.rb +35 -0
  29. data/spec/p2ruby/connection_spec.rb +293 -0
  30. data/spec/p2ruby/data_stream_spec.rb +218 -0
  31. data/spec/p2ruby/library_spec.rb +42 -0
  32. data/spec/p2ruby/message_factory_spec.rb +69 -0
  33. data/spec/p2ruby/message_spec.rb +159 -0
  34. data/spec/p2ruby/record_spec.rb +85 -0
  35. data/spec/p2ruby/router_spec.rb +54 -0
  36. data/spec/p2ruby/table_set_spec.rb +132 -0
  37. data/spec/p2ruby_spec.rb +46 -0
  38. data/spec/spec_helper.rb +78 -0
  39. data/tasks/common.rake +18 -0
  40. data/tasks/doc.rake +14 -0
  41. data/tasks/gem.rake +40 -0
  42. data/tasks/git.rake +34 -0
  43. data/tasks/spec.rake +16 -0
  44. data/tasks/version.rake +71 -0
  45. metadata +149 -0
data/lib/p2ruby.rb ADDED
@@ -0,0 +1,156 @@
1
+ require 'version'
2
+ require 'win32ole'
3
+ require 'win32ole/property'
4
+ #require 'win32ole-pr'
5
+
6
+ require 'rubygems'
7
+ require 'bundler/setup'
8
+ Bundler.require(:default)
9
+
10
+ # Namespace for loading P2ClientGate constants and helper methods
11
+ module P2
12
+ # enum TConnectionStatus � ��������� ����������/�������. �������� ��������� ��������:
13
+ # � ���������� � �������� ��� �� �����������.
14
+ CS_CONNECTION_DISCONNECTED = 1
15
+ # - ���������� � �������� �����������.
16
+ CS_CONNECTION_CONNECTED = 2
17
+ # - ������� �������� ������ ����������, ����������
18
+ # ������ �������� ������ ����� ��������� ��������� ����������.
19
+ CS_CONNECTION_INVALID = 4
20
+ # � ���������� �������� ������������� �������� ��������� ���������.
21
+ CS_CONNECTION_BUSY = 8
22
+ # � ������ �������, �� �� ����������� � ����. ������ �� ������� ��������� ���������
23
+ # ����������, ����� �� �����, ��������� ������ ��������� ����������, ��� ����
24
+ # ��������� ���������� ����� ����������������� ����� ����� ����� ������.
25
+ CS_ROUTER_DISCONNECTED = 65536
26
+ # � ������ ������� ������������������ ���������� (��� � ������), �������� ����������
27
+ # ��������� ����������, �� �� ���� ��������� ���������� ��� �� �����������.
28
+ CS_ROUTER_RECONNECTING = 131072
29
+ # � ������ ��������� �� ������� ���� ���� ��������� ����������, ������������������
30
+ # ���������� ������������.
31
+ CS_ROUTER_CONNECTED = 262144
32
+ # � �� ������� ���� ���� �� �������� �������� ������������������ ����������. � ����
33
+ # ������ ������������������ ���������� ���������� ����������������. ��� �����������
34
+ # ������ ���������� �������� ���������������� ����� ������� Logout � Login.
35
+ CS_ROUTER_LOGINFAILED = 524288
36
+ # � �� �������� ���������� ������� ������ �� ���� ���������� �� ������ ����������
37
+ # ����������, �� ������������������ ���������� ������������. ������ ������ �� �����
38
+ # �������� ���������� ��������� ����������. ��� ����������� ������
39
+ # ���������� �������� ���������������� ����� ������� Logout � Login.
40
+ CS_ROUTER_NOCONNECT = 1048576
41
+
42
+ CS_MESSAGES = {CS_CONNECTION_DISCONNECTED => 'Connection Disconnected',
43
+ CS_CONNECTION_CONNECTED => 'Connection Connected',
44
+ CS_CONNECTION_INVALID => 'Connection Invalid',
45
+ CS_CONNECTION_BUSY => 'Connection Busy',
46
+ CS_ROUTER_DISCONNECTED => 'Router Disconnected',
47
+ CS_ROUTER_RECONNECTING => 'Router Reconnecting',
48
+ CS_ROUTER_CONNECTED => 'Router Connected',
49
+ CS_ROUTER_LOGINFAILED => 'Router Login Failed',
50
+ CS_ROUTER_NOCONNECT => 'Router No Connect'}
51
+
52
+ # enum TRequestType � ��� ������ ����������. ��� ������ ���������� �������� � ������
53
+ # ��������� ������ (�������/������), � ����� ����� �������� ��������� �� �������
54
+ # ������� � ��������� �� �������. �������� ��������� ��������:
55
+ # � ������ ���������� �� ��������� �� ������� ���������� � ������ �������.
56
+ RT_LOCAL = 0
57
+ # � ������������ ��������� ������ ���� ������ �� ������� ���������� � ������ �������.
58
+ # ����� ��������� ���� ������ �� ������� ����� �����������.
59
+ RT_COMBINED_SNAPSHOT = 1
60
+ # ? ������������ ��������� ������ ���� ������ �� ������� ���������� � ������ �������.
61
+ # ����� ��������� ���� ������ �� ������� ����� ��������� � ����� ������-����������.
62
+ RT_COMBINED_DYNAMIC = 2
63
+ # ? ������ ���������� �� ������� ���������� � ������ �������. ������������ ��� ��������
64
+ # ����������, � ������� �� �� ������.
65
+ RT_REMOTE_SNAPSHOT = 3
66
+ # � ����, �������������� ����� ������� �� �� ������� ������, ����������, ��� ���������.
67
+ # ��� ����������, ������������ � �� ��������, ���� ������ �������� ������ ��������
68
+ # ������ ������. ���� ���� ������ ��������������� ��������� � ����� ��
69
+ # ������ 0,1,2,3,8 ����� ��������� ��������.
70
+ RT_REMOVE_DELETED = 4
71
+ # ? ����� �������� �������� ������ � ������ ������ �����. ��� ���� ���������
72
+ # ������������� � �������� ������������, ������� � ���� ������ �������������
73
+ # ������������ ������ ������� � ������� ������. ��������� ������������� � ���������
74
+ # ������ ����������� ������, ��������, ������, � ������� �������� ������.
75
+ RT_REMOTE_ONLINE = 8
76
+
77
+ # enum TDataStreamState � ��������� ������ ����������. �������� ��������� ���������:
78
+ # ? 0 � ����� ������.
79
+ DS_STATE_CLOSE = 0
80
+ # ? 1 � ����� � ��������� ��������� �������� �� ��������� �� ������� ����������.
81
+ DS_STATE_LOCAL_SNAPSHOT = 1
82
+ # ? 2 � ����� � ��������� ��������� �������� �� ������� ����������.
83
+ DS_STATE_REMOTE_SNAPSHOT = 2
84
+ # ? 3 � ����� � ��������� ��������� ������-������ �� ������� ����������.
85
+ DS_STATE_ONLINE = 3
86
+ # ? 4 � ����� ������ ����� ��������� ���� ��������� ������.
87
+ DS_STATE_CLOSE_COMPLETE = 4
88
+ # ? 5 � ����� ���������� � ������ ����� �������� ��� ������ ������. ��������, ��������,
89
+ # � ������ ��������� ���� ������� ��� ��������� ������ ����� ����� ��.
90
+ DS_STATE_REOPEN = 5
91
+ # ? 6 (DS_STATE_ERROR) � ������.
92
+ DS_STATE_ERROR = 6
93
+
94
+ DS_MESSAGES = {
95
+ DS_STATE_CLOSE => "Data Stream Closed",
96
+ DS_STATE_LOCAL_SNAPSHOT => "Data Stream in Local Snapshot",
97
+ DS_STATE_REMOTE_SNAPSHOT => "Data Stream in Remote Snapshot",
98
+ DS_STATE_ONLINE => "Data Stream Online",
99
+ DS_STATE_CLOSE_COMPLETE => "Data Stream Completed and Closed",
100
+ DS_STATE_REOPEN => "Data Stream Reopen",
101
+ DS_STATE_ERROR => "Data Stream Error"}
102
+
103
+ # Error codes
104
+ P2ERR_OK = P2MQ_ERRORCLASS_OK = P2ERR_COMMON_BEGIN = 0x0000
105
+ P2MQ_ERRORCLASS_IS_USELESS = 0x0001
106
+
107
+ P2ERR_INI_BEGIN = 0x4000
108
+ P2ERR_INI_ALREADY_STARTED = P2ERR_INI_BEGIN
109
+ P2ERR_INI_FILE_NOT_FOUND = P2ERR_INI_BEGIN + 4
110
+
111
+ # Extracts P2 error code from WIN32OLERuntimeError HRESULT error code
112
+ def self.p2_error exception
113
+ match = exception.message.match /HRESULT error code:0x....(\d{4})/
114
+ code = match[1].to_i(16) if match
115
+ end
116
+
117
+ # Extracts P2 error code from WIN32OLERuntimeError HRESULT error code
118
+ def self.com_error exception
119
+ match = exception.message.match /HRESULT error code:0x(\d{4})/
120
+ code = match[1].to_i(16) if match
121
+ end
122
+
123
+ # Any P2-specific Error
124
+ class Error < StandardError
125
+ end
126
+
127
+ # Allows extended manipulation of all P2-specific exceptions (Error aspect)
128
+ def error *args
129
+ if args.first.is_a? Exception
130
+ raise args.first
131
+ else
132
+ raise P2::Error.new *args
133
+ end
134
+ end
135
+
136
+ # Mainly to enable P2#error both in instance and class methods
137
+ def self.included(host)
138
+ host.extend self
139
+ end
140
+ end
141
+
142
+ # Aliases for P2
143
+ P2Ruby = P2
144
+ P2ClientGate = P2
145
+
146
+ require 'extension'
147
+ require 'p2ruby/router'
148
+ require 'p2ruby/library'
149
+ require 'p2ruby/base'
150
+ require 'p2ruby/application'
151
+ require 'p2ruby/connection'
152
+ require 'p2ruby/message_factory'
153
+ require 'p2ruby/message'
154
+ require 'p2ruby/data_stream'
155
+ require 'p2ruby/record'
156
+ require 'p2ruby/table_set'
data/lib/version.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'pathname'
2
+
3
+ module P2
4
+
5
+ VERSION_FILE = Pathname.new(__FILE__).dirname + '../VERSION' # :nodoc:
6
+ VERSION = VERSION_FILE.exist? ? VERSION_FILE.read.strip : nil
7
+
8
+ end