orientdb-binary 0.6.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 (59) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +2 -0
  3. data/Gemfile +5 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +64 -0
  7. data/lib/orientdb_binary.rb +25 -0
  8. data/lib/orientdb_binary/base.rb +40 -0
  9. data/lib/orientdb_binary/config.rb +5 -0
  10. data/lib/orientdb_binary/connection.rb +17 -0
  11. data/lib/orientdb_binary/database.rb +24 -0
  12. data/lib/orientdb_binary/database_operations/base_operations.rb +70 -0
  13. data/lib/orientdb_binary/database_operations/data_cluster.rb +116 -0
  14. data/lib/orientdb_binary/database_operations/data_segment.rb +31 -0
  15. data/lib/orientdb_binary/database_operations/query.rb +58 -0
  16. data/lib/orientdb_binary/database_operations/record.rb +105 -0
  17. data/lib/orientdb_binary/database_operations/transaction.rb +8 -0
  18. data/lib/orientdb_binary/operation_types.rb +51 -0
  19. data/lib/orientdb_binary/parser/deserializer.rb +161 -0
  20. data/lib/orientdb_binary/parser/serializer.rb +83 -0
  21. data/lib/orientdb_binary/protocols/base.rb +42 -0
  22. data/lib/orientdb_binary/protocols/bindata_primitives.rb +46 -0
  23. data/lib/orientdb_binary/protocols/command.rb +166 -0
  24. data/lib/orientdb_binary/protocols/config_get.rb +22 -0
  25. data/lib/orientdb_binary/protocols/config_list.rb +24 -0
  26. data/lib/orientdb_binary/protocols/config_set.rb +22 -0
  27. data/lib/orientdb_binary/protocols/connect.rb +26 -0
  28. data/lib/orientdb_binary/protocols/datacluster_add.rb +26 -0
  29. data/lib/orientdb_binary/protocols/datacluster_count.rb +26 -0
  30. data/lib/orientdb_binary/protocols/datacluster_datarange.rb +23 -0
  31. data/lib/orientdb_binary/protocols/datacluster_drop.rb +22 -0
  32. data/lib/orientdb_binary/protocols/datacluster_lh_cluster_is_used.rb +20 -0
  33. data/lib/orientdb_binary/protocols/datasegment_add.rb +24 -0
  34. data/lib/orientdb_binary/protocols/datasegment_drop.rb +23 -0
  35. data/lib/orientdb_binary/protocols/db_close.rb +16 -0
  36. data/lib/orientdb_binary/protocols/db_countrecords.rb +20 -0
  37. data/lib/orientdb_binary/protocols/db_create.rb +23 -0
  38. data/lib/orientdb_binary/protocols/db_drop.rb +22 -0
  39. data/lib/orientdb_binary/protocols/db_exist.rb +23 -0
  40. data/lib/orientdb_binary/protocols/db_freeze.rb +21 -0
  41. data/lib/orientdb_binary/protocols/db_list.rb +26 -0
  42. data/lib/orientdb_binary/protocols/db_open.rb +43 -0
  43. data/lib/orientdb_binary/protocols/db_release.rb +21 -0
  44. data/lib/orientdb_binary/protocols/db_reload.rb +26 -0
  45. data/lib/orientdb_binary/protocols/db_size.rb +20 -0
  46. data/lib/orientdb_binary/protocols/errors.rb +28 -0
  47. data/lib/orientdb_binary/protocols/record_create.rb +35 -0
  48. data/lib/orientdb_binary/protocols/record_delete.rb +25 -0
  49. data/lib/orientdb_binary/protocols/record_load.rb +65 -0
  50. data/lib/orientdb_binary/protocols/record_update.rb +27 -0
  51. data/lib/orientdb_binary/protocols/shutdown.rb +21 -0
  52. data/lib/orientdb_binary/server.rb +71 -0
  53. data/orientdb-binary.gemspec +26 -0
  54. data/test/database/test_database.rb +193 -0
  55. data/test/database/test_deserializer.rb +140 -0
  56. data/test/database/test_serializer.rb +55 -0
  57. data/test/server/test_server.rb +73 -0
  58. data/test/test_helper.rb +9 -0
  59. metadata +162 -0
@@ -0,0 +1,20 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DataclusterLhClusterIsUsed < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DATACLUSTER_LH_CLUSTER_IS_USED
10
+ int32 :session
11
+ end
12
+
13
+ class DataclusterLhClusterIsUsedAnswer < BinData::Record
14
+ endian :big
15
+
16
+ int32 :session
17
+ bit4 :succeed
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DatasegmentAdd < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DATASEGMENT_ADD
10
+ int32 :session
11
+
12
+ protocol_string :name
13
+ protocol_string :location
14
+
15
+ end
16
+
17
+ class DatasegmentAddAnswer < BinData::Record
18
+ endian :big
19
+
20
+ int32 :session
21
+ int32 :segment_id
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DatasegmentDrop < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DATASEGMENT_DROP
10
+ int32 :session
11
+
12
+ protocol_string :name
13
+
14
+ end
15
+
16
+ class DatasegmentDropAnswer < BinData::Record
17
+ endian :big
18
+
19
+ int32 :session
20
+ bit4 :succeed
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,16 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbClose < BinData::Record
5
+
6
+ endian :big
7
+
8
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_CLOSE
9
+ int32 :session
10
+
11
+ def process(socket)
12
+ write(socket)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbCountRecords < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_COUNTRECORDS
10
+ int32 :session
11
+ end
12
+
13
+ class DbCountRecordsAnswer < BinData::Record
14
+ endian :big
15
+
16
+ int32 :session
17
+ int64 :count_records
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbCreate < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_CREATE
10
+ int32 :session
11
+
12
+ protocol_string :name
13
+ protocol_string :type
14
+ protocol_string :storage
15
+ end
16
+
17
+ class DbCreateAnswer < BinData::Record
18
+ endian :big
19
+
20
+ skip length: 4
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbDrop < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_DROP
10
+ int32 :session
11
+
12
+ protocol_string :name
13
+ protocol_string :storage
14
+ end
15
+
16
+ class DbDropAnswer < BinData::Record
17
+ endian :big
18
+
19
+ skip length: 4
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbExist < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_EXIST
10
+ int32 :session
11
+
12
+ protocol_string :database
13
+ protocol_string :server_storage_type, value: 'memory'
14
+ end
15
+
16
+ class DbExistAnswer < BinData::Record
17
+ endian :big
18
+
19
+ skip length: 4
20
+ int8 :exists
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+ class DbFreeze < BinData::Record
4
+ include OrientdbBinary::Protocols::Base
5
+
6
+ endian :big
7
+
8
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_FREEZE
9
+ int32 :session
10
+
11
+ protocol_string :name
12
+ protocol_string :storage
13
+ end
14
+
15
+ class DbFreezeAnswer < BinData::Record
16
+ endian :big
17
+
18
+ int32 :session
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbList < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_LIST
10
+ int32 :session
11
+ end
12
+
13
+ class DbListAnswer < BinData::Record
14
+ endian :big
15
+
16
+ int32 :session
17
+ protocol_string :list
18
+
19
+ def process
20
+ OrientdbBinary::Parser::Deserializer.new().deserialize(list)
21
+ end
22
+ end
23
+
24
+
25
+ end
26
+ end
@@ -0,0 +1,43 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbOpen < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_OPEN
10
+ int32 :session, value: OrientdbBinary::OperationTypes::NEW_SESSION
11
+
12
+ protocol_string :driver_name, value: OrientdbBinary::NAME
13
+ protocol_string :driver_version, value: OrientdbBinary::VERSION
14
+ int16 :protocol, value: OrientdbBinary::PROTOCOL_VERSION
15
+ protocol_string :client_id
16
+ protocol_string :db
17
+ protocol_string :storage
18
+ protocol_string :user
19
+ protocol_string :password
20
+ end
21
+
22
+ class DbOpenAnswer < BinData::Record
23
+ endian :big
24
+
25
+ skip length: 4
26
+ int32 :session
27
+ int16 :num_of_clusters
28
+ array :clusters, initial_length: :num_of_clusters do
29
+ protocol_string :cluster_name
30
+ int16 :cluster_id
31
+ protocol_string :cluster_type
32
+ int16 :cluster_data_segment_id
33
+ end
34
+ int32 :cluster_config_bytes
35
+ skip length: :cluster_config_bytes, onlyif: :has_cluster_config?
36
+ protocol_string :orientdb_release
37
+
38
+ def has_cluster_config?
39
+ cluster_config_bytes > -1
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,21 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+ class DbRelease < BinData::Record
4
+ include OrientdbBinary::Protocols::Base
5
+
6
+ endian :big
7
+
8
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_RELEASE
9
+ int32 :session
10
+
11
+ protocol_string :name
12
+ protocol_string :storage
13
+ end
14
+
15
+ class DbReleaseAnswer < BinData::Record
16
+ endian :big
17
+
18
+ int32 :session
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,26 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbReload < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_RELOAD
10
+ int32 :session
11
+ end
12
+
13
+ class DbReloadAnswer < BinData::Record
14
+ endian :big
15
+
16
+ int32 :session
17
+ int16 :num_of_clusters
18
+ array :clusters, initial_length: :num_of_clusters do
19
+ protocol_string :cluster_name
20
+ int16 :cluster_id
21
+ protocol_string :cluster_type
22
+ int16 :cluster_data_segment_id
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,20 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class DbSize < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_DB_SIZE
10
+ int32 :session
11
+ end
12
+
13
+ class DbSizeAnswer < BinData::Record
14
+ endian :big
15
+
16
+ int32 :session
17
+ int64 :db_size
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,28 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+ class Errors < BinData::Record
4
+ endian :big
5
+
6
+ int32 :session
7
+ array :exceptions, read_until: -> { element[:is_error] < 1 } do
8
+ int8 :is_error
9
+ protocol_string :exception_class, onlyif: -> { is_error == 1 }
10
+ protocol_string :exception_message, onlyif: -> { is_error == 1 }
11
+ end
12
+
13
+ int32 :len
14
+ skip length: :len
15
+ end
16
+ end
17
+
18
+ class ProtocolError < StandardError
19
+ attr_reader :session, :exception_class
20
+
21
+ def initialize(session, *exceptions)
22
+ @session
23
+ @exception_class = exceptions[0] && exceptions[0][:exception_class]
24
+
25
+ super exceptions.map { |exp| [ exp[:exception_class], exp[:exception_message] ].reject { |s| s.nil? }.join(': ') }.join("\n")
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,35 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class RecordCreate < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_RECORD_CREATE
10
+ int32 :session
11
+
12
+ int32 :datasegment_id
13
+ int16 :cluster_id
14
+ protocol_string :record_content
15
+ int8 :record_type
16
+ int8 :mode
17
+ end
18
+
19
+ class RecordCreateAnswer < BinData::Record
20
+ endian :big
21
+
22
+ int32 :session
23
+ int64 :cluster_position
24
+ int32 :record_version
25
+
26
+ def process(options)
27
+ return {
28
+ :@rid => "##{options[:cluster_id]}:#{cluster_position}",
29
+ :@version => record_version,
30
+ :@type => options[:record_type]
31
+ }
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,25 @@
1
+ module OrientdbBinary
2
+ module Protocols
3
+
4
+ class RecordDelete < BinData::Record
5
+ include OrientdbBinary::Protocols::Base
6
+
7
+ endian :big
8
+
9
+ int8 :operation, value: OrientdbBinary::OperationTypes::REQUEST_RECORD_DELETE
10
+ int32 :session
11
+
12
+ int16 :cluster_id
13
+ int64 :cluster_position
14
+ int32 :record_version
15
+ int8 :mode
16
+ end
17
+
18
+ class RecordDeleteAnswer < BinData::Record
19
+ endian :big
20
+
21
+ int32 :session
22
+ int8 :payload_status
23
+ end
24
+ end
25
+ end