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.
- data/.gitignore +27 -0
- data/HISTORY +7 -0
- data/LICENSE +20 -0
- data/README.rdoc +24 -0
- data/Rakefile +42 -0
- data/VERSION +1 -0
- data/bin/olegen.rb +368 -0
- data/features/p2ruby.feature +9 -0
- data/features/step_definitions/p2ruby_steps.rb +0 -0
- data/features/support/env.rb +10 -0
- data/features/support/world.rb +12 -0
- data/lib/extension.rb +19 -0
- data/lib/ole20110223-013209.rb +1677 -0
- data/lib/p2ruby/application.rb +111 -0
- data/lib/p2ruby/base.rb +59 -0
- data/lib/p2ruby/connection.rb +250 -0
- data/lib/p2ruby/data_stream.rb +215 -0
- data/lib/p2ruby/library.rb +24 -0
- data/lib/p2ruby/message.rb +150 -0
- data/lib/p2ruby/message_factory.rb +70 -0
- data/lib/p2ruby/record.rb +104 -0
- data/lib/p2ruby/router.rb +45 -0
- data/lib/p2ruby/table_set.rb +166 -0
- data/lib/p2ruby.rb +156 -0
- data/lib/version.rb +8 -0
- data/lib/win32ole-pr.rb +5540 -0
- data/spec/encoding_spec.rb +15 -0
- data/spec/p2ruby/application_spec.rb +35 -0
- data/spec/p2ruby/connection_spec.rb +293 -0
- data/spec/p2ruby/data_stream_spec.rb +218 -0
- data/spec/p2ruby/library_spec.rb +42 -0
- data/spec/p2ruby/message_factory_spec.rb +69 -0
- data/spec/p2ruby/message_spec.rb +159 -0
- data/spec/p2ruby/record_spec.rb +85 -0
- data/spec/p2ruby/router_spec.rb +54 -0
- data/spec/p2ruby/table_set_spec.rb +132 -0
- data/spec/p2ruby_spec.rb +46 -0
- data/spec/spec_helper.rb +78 -0
- data/tasks/common.rake +18 -0
- data/tasks/doc.rake +14 -0
- data/tasks/gem.rake +40 -0
- data/tasks/git.rake +34 -0
- data/tasks/spec.rake +16 -0
- data/tasks/version.rake +71 -0
- 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'
|