From e96146b7bb347b41db98bf2d5d030ad6a1ffda83 Mon Sep 17 00:00:00 2001 From: hyperion51 Date: Tue, 24 Mar 2020 14:36:22 +0000 Subject: [PATCH] Out with MagicOnion, in with LiteNetLib Removed MagicOnion Added LiteNetLib Created client and server abstractions Fixed serialization bugs --- .../.idea/contentModel.xml | 469 +- .idea/.idea.Economy/.idea/contentModel.xml | 444 +- Aetheria-Economy.sln | 18 - Assembly-CSharp-Editor.csproj | 18 - Assembly-CSharp-firstpass.csproj | 18 - Assembly-CSharp.csproj | 22 +- Assets/Plugins/RethinkDb.Driver.Linq.dll | 3 - Assets/Plugins/RethinkDb.Driver.Linq.dll.meta | 100 - Assets/Plugins/RethinkDb.Driver.dll | 3 - Assets/Plugins/RethinkDb.Driver.dll.meta | 100 - Assets/Scenes/ChatScene.unity | 3131 ------ Assets/Scripts/ChatComponent.cs | 223 - Assets/Scripts/CultClient.cs | 69 + ...onseContext.cs.meta => CultClient.cs.meta} | 2 +- Assets/Scripts/Editor/DatabaseView.cs | 42 +- .../Scripts/Generated/MagicOnion.Generated.cs | 397 - .../Generated/MessagePack.Generated.cs | 223 - Assets/Scripts/InitialSettings.cs | 3 +- .../Client/IResponseContext.cs | 22 - .../ClientStreamingResult.cs | 132 - .../ClientStreamingResult.cs.meta | 11 - .../AsyncUnaryResultMethodBuilder.cs | 80 - .../AsyncUnaryResultMethodBuilder.cs.meta | 11 - .../DuplexStreamingResult.cs | 95 - .../DuplexStreamingResult.cs.meta | 11 - .../GenerateDefineDebugAttribute.cs | 19 - .../GenerateDefineDebugAttribute.cs.meta | 11 - .../NIH/MagicOnion.Abstractions/IService.cs | 21 - .../MagicOnion.Abstractions/IService.cs.meta | 11 - .../MagicOnion.Abstractions/IStreamingHub.cs | 15 - .../IStreamingHub.cs.meta | 11 - .../IgnoreAttribute.cs | 16 - .../IgnoreAttribute.cs.meta | 11 - .../MagicOnion.Abstractions.asmdef | 14 - .../MagicOnion.Abstractions.asmdef.meta | 7 - .../MagicOnion.Abstractions/Server/Hubs.meta | 8 - .../Server/Hubs/MethodIdAttribute.cs | 17 - .../Server/Hubs/MethodIdAttribute.cs.meta | 11 - .../ServerStreamingResult.cs | 80 - .../ServerStreamingResult.cs.meta | 11 - .../MagicOnion.Abstractions/UnaryResult.cs | 163 - .../UnaryResult.cs.meta | 11 - Assets/Scripts/NIH/MagicOnion.Unity.meta | 8 - .../NIH/MagicOnion.Unity/ChannelExtensions.cs | 19 - .../ChannelExtensions.cs.meta | 11 - .../MagicOnion.Unity/MagicOnion.Unity.asmdef | 15 - .../MagicOnion.Unity.asmdef.meta | 7 - .../NIH/MagicOnion.Unity/UnityDebugLogger.cs | 157 - .../MagicOnion.Unity/UnityDebugLogger.cs.meta | 12 - Assets/Scripts/NIH/MagicOnion.meta | 8 - Assets/Scripts/NIH/MagicOnion/AsyncLock.cs | 45 - .../Scripts/NIH/MagicOnion/AsyncLock.cs.meta | 11 - .../MagicOnion/AsyncStreamReaderExtensions.cs | 35 - .../AsyncStreamReaderExtensions.cs.meta | 11 - Assets/Scripts/NIH/MagicOnion/Client.meta | 8 - .../NIH/MagicOnion/Client/ClientFilter.cs | 213 - .../MagicOnion/Client/ClientFilter.cs.meta | 11 - .../MagicOnion/Client/DynamicClientBuilder.cs | 628 -- .../Client/DynamicClientBuilder.cs.meta | 11 - .../Client/InterceptInvokeHelper.cs | 158 - .../Client/InterceptInvokeHelper.cs.meta | 11 - .../NIH/MagicOnion/Client/MagicOnionClient.cs | 79 - .../Client/MagicOnionClient.cs.meta | 11 - .../MagicOnion/Client/MagicOnionClientBase.cs | 130 - .../Client/MagicOnionClientBase.cs.meta | 11 - .../MagicOnion/Client/StreamingHubClient.cs | 50 - .../Client/StreamingHubClient.cs.meta | 11 - .../Client/StreamingHubClientBase.cs | 332 - .../Client/StreamingHubClientBase.cs.meta | 11 - .../Client/StreamingHubClientBuilder.cs | 584 -- .../Client/StreamingHubClientBuilder.cs.meta | 11 - .../NIH/MagicOnion/DynamicArgumentTuple.cs | 2917 ------ .../MagicOnion/DynamicArgumentTuple.cs.meta | 11 - .../Scripts/NIH/MagicOnion/MagicOnion.asmdef | 15 - .../NIH/MagicOnion/MagicOnion.asmdef.meta | 7 - .../NIH/MagicOnion/MagicOnionMarshallers.cs | 207 - .../MagicOnion/MagicOnionMarshallers.cs.meta | 11 - .../NIH/MagicOnion/MetadataExtensions.cs | 62 - .../NIH/MagicOnion/MetadataExtensions.cs.meta | 11 - .../NIH/MagicOnion/ReturnStatusException.cs | 22 - .../MagicOnion/ReturnStatusException.cs.meta | 11 - Assets/Scripts/NIH/MagicOnion/Server.meta | 8 - .../Scripts/NIH/MagicOnion/Server/Hubs.meta | 8 - .../Server/Hubs/BroadcasterHelper.cs | 94 - .../Server/Hubs/BroadcasterHelper.cs.meta | 11 - .../MagicOnion/UnsafeDirectBlitResolver.cs | 207 - .../UnsafeDirectBlitResolver.cs.meta | 11 - .../MagicOnion/Utils/ArrayPoolBufferWriter.cs | 100 - .../Utils/ArrayPoolBufferWriter.cs.meta | 11 - .../NIH/MagicOnion/Utils/AsyncLocalShim.cs | 109 - .../MagicOnion/Utils/AsyncLocalShim.cs.meta | 11 - .../NIH/MagicOnion/Utils/DynamicAssembly.cs | 98 - .../MagicOnion/Utils/DynamicAssembly.cs.meta | 11 - .../Scripts/NIH/MagicOnion/Utils/FNV1A32.cs | 27 - .../NIH/MagicOnion/Utils/FNV1A32.cs.meta | 11 - .../MagicOnion/Utils/ILGeneratorExtensions.cs | 170 - .../Utils/ILGeneratorExtensions.cs.meta | 11 - .../MagicOnion/Utils/ReflectionExtensions.cs | 20 - .../Utils/ReflectionExtensions.cs.meta | 11 - .../Utils/ReservedWhenAllPromise.cs | 185 - .../Utils/ReservedWhenAllPromise.cs.meta | 11 - .../Utils/TaskCompletionSourceEx.cs | 24 - .../Utils/TaskCompletionSourceEx.cs.meta | 11 - Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs | 15 - .../NIH/MagicOnion/Utils/TaskEx.cs.meta | 11 - .../MagicOnion/Utils/UniqueHashDictionary.cs | 158 - .../Utils/UniqueHashDictionary.cs.meta | 11 - .../Scripts/ServerShared/ActionCollection.cs | 28 + .../ActionCollection.cs.meta} | 2 +- Assets/Scripts/ServerShared/DatabaseCache.cs | 14 +- Assets/Scripts/ServerShared/DatabaseItems.cs | 11 +- Assets/Scripts/ServerShared/Extensions.cs | 5 + Assets/Scripts/ServerShared/Hubs.meta | 8 - Assets/Scripts/ServerShared/Hubs/IChatHub.cs | 25 - .../ServerShared/Hubs/IChatHub.cs.meta | 11 - .../ServerShared/Hubs/IChatHubReceiver.cs | 16 - .../Hubs/IChatHubReceiver.cs.meta | 11 - Assets/Scripts/ServerShared/JsonConverters.cs | 2 - .../ServerShared/MessagePackObjects.meta | 8 - .../MessagePackObjects/Requests.cs | 17 - .../MessagePackObjects/Requests.cs.meta | 11 - .../MessagePackObjects/Responses.cs | 17 - .../MessagePackObjects/Responses.cs.meta | 11 - Assets/Scripts/ServerShared/Messages.cs | 78 + .../Messages.cs.meta} | 2 +- .../JsonKnownTypes/JsonKnownTypesConverter.cs | 2 + .../NIH/LiteNetLib.meta} | 2 +- .../NIH/LiteNetLib/BaseChannel.cs | 31 + .../NIH/LiteNetLib/BaseChannel.cs.meta} | 2 +- .../NIH/LiteNetLib/ConnectionRequest.cs | 146 + .../NIH/LiteNetLib/ConnectionRequest.cs.meta | 11 + .../NIH/LiteNetLib/INetEventListener.cs | 222 + .../NIH/LiteNetLib/INetEventListener.cs.meta | 11 + .../NIH/LiteNetLib/Layers.meta} | 2 +- .../NIH/LiteNetLib/Layers/Crc32cLayer.cs | 36 + .../NIH/LiteNetLib/Layers/Crc32cLayer.cs.meta | 11 + .../NIH/LiteNetLib/Layers/PacketLayerBase.cs | 15 + .../LiteNetLib/Layers/PacketLayerBase.cs.meta | 11 + .../NIH/LiteNetLib/Layers/XorEncryptLayer.cs | 59 + .../LiteNetLib/Layers/XorEncryptLayer.cs.meta | 11 + .../NIH/LiteNetLib/LiteNetLib.csproj | 30 + .../NIH/LiteNetLib/LiteNetLib.csproj.meta} | 2 +- .../NIH/LiteNetLib/NatPunchModule.cs | 239 + .../NIH/LiteNetLib/NatPunchModule.cs.meta | 11 + .../NIH/LiteNetLib/NetConstants.cs | 72 + .../NIH/LiteNetLib/NetConstants.cs.meta | 11 + .../ServerShared/NIH/LiteNetLib/NetDebug.cs | 78 + .../NIH/LiteNetLib/NetDebug.cs.meta | 11 + .../NIH/LiteNetLib/NetExceptions.cs | 33 + .../NIH/LiteNetLib/NetExceptions.cs.meta | 11 + .../ServerShared/NIH/LiteNetLib/NetManager.cs | 1588 +++ .../NIH/LiteNetLib/NetManager.cs.meta | 11 + .../ServerShared/NIH/LiteNetLib/NetPacket.cs | 243 + .../NIH/LiteNetLib/NetPacket.cs.meta | 11 + .../NIH/LiteNetLib/NetPacketPool.cs | 86 + .../NIH/LiteNetLib/NetPacketPool.cs.meta | 11 + .../ServerShared/NIH/LiteNetLib/NetPeer.cs | 1131 +++ .../NIH/LiteNetLib/NetPeer.cs.meta | 11 + .../ServerShared/NIH/LiteNetLib/NetSocket.cs | 339 + .../NIH/LiteNetLib/NetSocket.cs.meta | 11 + .../NIH/LiteNetLib/NetStatistics.cs | 39 + .../NIH/LiteNetLib/NetStatistics.cs.meta | 11 + .../ServerShared/NIH/LiteNetLib/NetUtils.cs | 197 + .../NIH/LiteNetLib/NetUtils.cs.meta | 11 + .../NIH/LiteNetLib/ReliableChannel.cs | 310 + .../NIH/LiteNetLib/ReliableChannel.cs.meta | 11 + .../NIH/LiteNetLib/SequencedChannel.cs | 93 + .../NIH/LiteNetLib/SequencedChannel.cs.meta | 11 + .../NIH/LiteNetLib}/Utils.meta | 2 +- .../NIH/LiteNetLib/Utils/CRC32C.cs | 102 + .../NIH/LiteNetLib/Utils/CRC32C.cs.meta | 11 + .../NIH/LiteNetLib/Utils/FastBitConverter.cs | 118 + .../LiteNetLib/Utils/FastBitConverter.cs.meta | 11 + .../NIH/LiteNetLib/Utils/INetSerializable.cs | 8 + .../LiteNetLib/Utils/INetSerializable.cs.meta | 11 + .../NIH/LiteNetLib/Utils/NetDataReader.cs | 707 ++ .../LiteNetLib/Utils/NetDataReader.cs.meta | 11 + .../NIH/LiteNetLib/Utils/NetDataWriter.cs | 415 + .../LiteNetLib/Utils/NetDataWriter.cs.meta | 11 + .../LiteNetLib/Utils/NetPacketProcessor.cs | 314 + .../Utils/NetPacketProcessor.cs.meta | 11 + .../NIH/LiteNetLib/Utils/NetSerializer.cs | 601 ++ .../LiteNetLib/Utils/NetSerializer.cs.meta | 11 + .../NIH/LiteNetLib/Utils/NtpPacket.cs | 428 + .../NIH/LiteNetLib/Utils/NtpPacket.cs.meta | 11 + .../NIH/LiteNetLib/Utils/NtpRequest.cs | 142 + .../NIH/LiteNetLib/Utils/NtpRequest.cs.meta | 11 + .../NIH/RethinkDb.Driver.Linq.meta} | 2 +- .../RethinkDb.Driver.Linq/Attributes.meta} | 2 +- .../Attributes/PrimaryIndexAttribute.cs | 9 + .../Attributes/PrimaryIndexAttribute.cs.meta | 11 + .../Attributes/SecondaryIndexAttribute.cs | 8 + .../SecondaryIndexAttribute.cs.meta | 11 + .../RethinkDb.Driver.Linq/LinqExtensions.cs | 26 + .../LinqExtensions.cs.meta | 11 + .../MemberNameResolver.cs | 49 + .../MemberNameResolver.cs.meta | 11 + .../RethinkDb.Driver.Linq.csproj | 42 + .../RethinkDb.Driver.Linq.csproj.meta | 7 + .../RethinkDb.Driver.Linq.ruleset | 6 + .../RethinkDb.Driver.Linq.ruleset.meta | 7 + .../RethinkDb.Driver.Linq/RethinkDbGroup.cs | 23 + .../RethinkDbGroup.cs.meta | 11 + .../RethinkDbQueryModelVisitor.cs | 190 + .../RethinkDbQueryModelVisitor.cs.meta | 11 + .../RethinkQueryExecutor.cs | 132 + .../RethinkQueryExecutor.cs.meta | 11 + .../RethinkDb.Driver.Linq/RethinkQueryable.cs | 22 + .../RethinkQueryable.cs.meta | 11 + .../SelectionProjector.cs | 26 + .../SelectionProjector.cs.meta | 11 + .../WhereClauseParsers.meta | 8 + .../WhereClauseParsers/BaseIndexParser.cs | 40 + .../BaseIndexParser.cs.meta | 11 + .../WhereClauseParsers/DefaultParser.cs | 32 + .../WhereClauseParsers/DefaultParser.cs.meta | 11 + .../WhereClauseParsers/ExprHelper.cs | 60 + .../WhereClauseParsers/ExprHelper.cs.meta | 11 + .../WhereClauseParsers/ExpressionVisitor.cs | 111 + .../ExpressionVisitor.cs.meta | 11 + .../WhereClauseParsers/GroupItemsParser.cs | 49 + .../GroupItemsParser.cs.meta | 11 + .../WhereClauseParsers/IWhereClauseParser.cs | 13 + .../IWhereClauseParser.cs.meta | 11 + .../WhereClauseParsers/PrimaryIndexParser.cs | 18 + .../PrimaryIndexParser.cs.meta | 11 + .../SecondaryIndexParser.cs | 26 + .../SecondaryIndexParser.cs.meta | 11 + .../WhereClauseParsers/SubQueryVisitor.meta | 8 + .../SubQueryVisitor/AllSubQueryVisitor.cs | 19 + .../AllSubQueryVisitor.cs.meta | 11 + .../SubQueryVisitor/AnySubQueryVisitor.cs | 11 + .../AnySubQueryVisitor.cs.meta | 11 + .../BaseFilterableSubQueryVisitor.cs | 23 + .../BaseFilterableSubQueryVisitor.cs.meta | 11 + .../SubQueryVisitor/BaseSubQueryVisitor.cs | 33 + .../BaseSubQueryVisitor.cs.meta | 11 + .../ContainsSubQueryVisitor.cs | 22 + .../ContainsSubQueryVisitor.cs.meta | 11 + .../SubQueryVisitor/CountSubQueryVisitor.cs | 11 + .../CountSubQueryVisitor.cs.meta | 11 + .../SubQueryVisitor/FirstSubQueryVisitor.cs | 24 + .../FirstSubQueryVisitor.cs.meta | 11 + .../SubQueryVisitor/ISubQueryVisitor.cs | 11 + .../SubQueryVisitor/ISubQueryVisitor.cs.meta | 11 + .../ServerShared/NIH/RethinkDb.Driver.meta | 8 + .../NIH/RethinkDb.Driver/Ast.meta | 8 + .../RethinkDb.Driver/Ast/ExtensionHelper.cs | 31 + .../Ast/ExtensionHelper.cs.meta | 11 + .../NIH/RethinkDb.Driver/Ast/Poco.cs | 45 + .../NIH/RethinkDb.Driver/Ast/Poco.cs.meta | 11 + .../RethinkDb.Driver/Ast/PropertyHelper.cs | 515 + .../Ast/PropertyHelper.cs.meta | 11 + .../NIH/RethinkDb.Driver/Ast/Query.cs | 80 + .../NIH/RethinkDb.Driver/Ast/Query.cs.meta | 11 + .../NIH/RethinkDb.Driver/Ast/ReqlAst.cs | 450 + .../NIH/RethinkDb.Driver/Ast/ReqlAst.cs.meta | 11 + .../NIH/RethinkDb.Driver/Ast/ReqlExpr.cs | 194 + .../NIH/RethinkDb.Driver/Ast/ReqlExpr.cs.meta | 11 + .../NIH/RethinkDb.Driver/Ast/ReqlRaw.cs | 116 + .../NIH/RethinkDb.Driver/Ast/ReqlRaw.cs.meta | 11 + .../NIH/RethinkDb.Driver/Ast/TopLevel.cs | 52 + .../NIH/RethinkDb.Driver/Ast/TopLevel.cs.meta | 11 + .../NIH/RethinkDb.Driver/Ast/Util.cs | 142 + .../NIH/RethinkDb.Driver/Ast/Util.cs.meta | 11 + .../NIH/RethinkDb.Driver/ErrorBuilder.cs | 95 + .../NIH/RethinkDb.Driver/ErrorBuilder.cs.meta | 11 + .../NIH/RethinkDb.Driver/Extras.meta | 8 + .../NIH/RethinkDb.Driver/Extras/Dao.meta | 8 + .../RethinkDb.Driver/Extras/Dao/Document.cs | 31 + .../Extras/Dao/Document.cs.meta | 11 + .../NIH/RethinkDb.Driver/Extras/Dao/IDao.cs | 84 + .../RethinkDb.Driver/Extras/Dao/IDao.cs.meta | 11 + .../RethinkDb.Driver/Extras/Dao/RethinkDao.cs | 209 + .../Extras/Dao/RethinkDao.cs.meta | 11 + .../NIH/RethinkDb.Driver}/Generated.meta | 2 +- .../NIH/RethinkDb.Driver/Generated/Ast.meta | 8 + .../NIH/RethinkDb.Driver/Generated/Ast/Add.cs | 101 + .../Generated/Ast/Add.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/And.cs | 104 + .../Generated/Ast/And.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Append.cs | 95 + .../Generated/Ast/Append.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/April.cs | 77 + .../Generated/Ast/April.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Args.cs | 107 + .../Generated/Ast/Args.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Asc.cs | 77 + .../Generated/Ast/Asc.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/August.cs | 77 + .../Generated/Ast/August.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Avg.cs | 110 + .../Generated/Ast/Avg.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Between.cs | 138 + .../Generated/Ast/Between.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Binary.cs | 113 + .../Generated/Ast/Binary.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Bracket.cs | 95 + .../Generated/Ast/Bracket.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Branch.cs | 107 + .../Generated/Ast/Branch.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Ceil.cs | 104 + .../Generated/Ast/Ceil.cs.meta | 11 + .../Generated/Ast/ChangeAt.cs | 95 + .../Generated/Ast/ChangeAt.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Changes.cs | 201 + .../Generated/Ast/Changes.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Circle.cs | 153 + .../Generated/Ast/Circle.cs.meta | 11 + .../Generated/Ast/CoerceTo.cs | 101 + .../Generated/Ast/CoerceTo.cs.meta | 11 + .../Generated/Ast/ConcatMap.cs | 101 + .../Generated/Ast/ConcatMap.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Config.cs | 95 + .../Generated/Ast/Config.cs.meta | 11 + .../Generated/Ast/Contains.cs | 104 + .../Generated/Ast/Contains.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Count.cs | 95 + .../Generated/Ast/Count.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Date.cs | 101 + .../Generated/Ast/Date.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Datum.cs | 93 + .../Generated/Ast/Datum.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Day.cs | 101 + .../Generated/Ast/Day.cs.meta | 11 + .../Generated/Ast/DayOfWeek.cs | 95 + .../Generated/Ast/DayOfWeek.cs.meta | 11 + .../Generated/Ast/DayOfYear.cs | 101 + .../Generated/Ast/DayOfYear.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Db.cs | 302 + .../RethinkDb.Driver/Generated/Ast/Db.cs.meta | 11 + .../Generated/Ast/DbCreate.cs | 137 + .../Generated/Ast/DbCreate.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/DbDrop.cs | 137 + .../Generated/Ast/DbDrop.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/DbList.cs | 95 + .../Generated/Ast/DbList.cs.meta | 11 + .../Generated/Ast/December.cs | 77 + .../Generated/Ast/December.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Default.cs | 116 + .../Generated/Ast/Default.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Delete.cs | 144 + .../Generated/Ast/Delete.cs.meta | 11 + .../Generated/Ast/DeleteAt.cs | 101 + .../Generated/Ast/DeleteAt.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Desc.cs | 77 + .../Generated/Ast/Desc.cs.meta | 11 + .../Generated/Ast/Difference.cs | 101 + .../Generated/Ast/Difference.cs.meta | 11 + .../Generated/Ast/Distance.cs | 147 + .../Generated/Ast/Distance.cs.meta | 11 + .../Generated/Ast/Distinct.cs | 138 + .../Generated/Ast/Distinct.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Div.cs | 95 + .../Generated/Ast/Div.cs.meta | 11 + .../Generated/Ast/Downcase.cs | 107 + .../Generated/Ast/Downcase.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/During.cs | 144 + .../Generated/Ast/During.cs.meta | 11 + .../Generated/Ast/EpochTime.cs | 98 + .../Generated/Ast/EpochTime.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Eq.cs | 95 + .../RethinkDb.Driver/Generated/Ast/Eq.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/EqJoin.cs | 126 + .../Generated/Ast/EqJoin.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Error.cs | 107 + .../Generated/Ast/Error.cs.meta | 11 + .../Generated/Ast/February.cs | 77 + .../Generated/Ast/February.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Fill.cs | 131 + .../Generated/Ast/Fill.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Filter.cs | 135 + .../Generated/Ast/Filter.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Floor.cs | 104 + .../Generated/Ast/Floor.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Fold.cs | 144 + .../Generated/Ast/Fold.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/ForEach.cs | 101 + .../Generated/Ast/ForEach.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Friday.cs | 77 + .../Generated/Ast/Friday.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Func.cs | 278 + .../Generated/Ast/Func.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Funcall.cs | 114 + .../Generated/Ast/Funcall.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Ge.cs | 95 + .../RethinkDb.Driver/Generated/Ast/Ge.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Geojson.cs | 119 + .../Generated/Ast/Geojson.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Get.cs | 95 + .../Generated/Ast/Get.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/GetAll.cs | 132 + .../Generated/Ast/GetAll.cs.meta | 11 + .../Generated/Ast/GetField.cs | 98 + .../Generated/Ast/GetField.cs.meta | 11 + .../Generated/Ast/GetIntersecting.cs | 135 + .../Generated/Ast/GetIntersecting.cs.meta | 11 + .../Generated/Ast/GetNearest.cs | 153 + .../Generated/Ast/GetNearest.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Grant.cs | 125 + .../Generated/Ast/Grant.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Group.cs | 192 + .../Generated/Ast/Group.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Gt.cs | 95 + .../RethinkDb.Driver/Generated/Ast/Gt.cs.meta | 11 + .../Generated/Ast/HasFields.cs | 95 + .../Generated/Ast/HasFields.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Hours.cs | 101 + .../Generated/Ast/Hours.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Http.cs | 189 + .../Generated/Ast/Http.cs.meta | 11 + .../Generated/Ast/InTimezone.cs | 95 + .../Generated/Ast/InTimezone.cs.meta | 11 + .../Generated/Ast/Includes.cs | 107 + .../Generated/Ast/Includes.cs.meta | 11 + .../Generated/Ast/IndexCreate.cs | 135 + .../Generated/Ast/IndexCreate.cs.meta | 11 + .../Generated/Ast/IndexDrop.cs | 95 + .../Generated/Ast/IndexDrop.cs.meta | 11 + .../Generated/Ast/IndexList.cs | 95 + .../Generated/Ast/IndexList.cs.meta | 11 + .../Generated/Ast/IndexRename.cs | 132 + .../Generated/Ast/IndexRename.cs.meta | 11 + .../Generated/Ast/IndexStatus.cs | 98 + .../Generated/Ast/IndexStatus.cs.meta | 11 + .../Generated/Ast/IndexWait.cs | 98 + .../Generated/Ast/IndexWait.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Info.cs | 95 + .../Generated/Ast/Info.cs.meta | 11 + .../Generated/Ast/InnerJoin.cs | 101 + .../Generated/Ast/InnerJoin.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Insert.cs | 162 + .../Generated/Ast/Insert.cs.meta | 11 + .../Generated/Ast/InsertAt.cs | 95 + .../Generated/Ast/InsertAt.cs.meta | 11 + .../Generated/Ast/Intersects.cs | 107 + .../Generated/Ast/Intersects.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/IsEmpty.cs | 95 + .../Generated/Ast/IsEmpty.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Iso8601.cs | 146 + .../Generated/Ast/Iso8601.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/January.cs | 77 + .../Generated/Ast/January.cs.meta | 11 + .../Generated/Ast/Javascript.cs | 114 + .../Generated/Ast/Javascript.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Json.cs | 95 + .../Generated/Ast/Json.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/July.cs | 77 + .../Generated/Ast/July.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/June.cs | 77 + .../Generated/Ast/June.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Keys.cs | 107 + .../Generated/Ast/Keys.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Le.cs | 95 + .../RethinkDb.Driver/Generated/Ast/Le.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Limit.cs | 95 + .../Generated/Ast/Limit.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Line.cs | 116 + .../Generated/Ast/Line.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Literal.cs | 125 + .../Generated/Ast/Literal.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Lt.cs | 95 + .../RethinkDb.Driver/Generated/Ast/Lt.cs.meta | 11 + .../Generated/Ast/MakeArray.cs | 77 + .../Generated/Ast/MakeArray.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/MakeObj.cs | 102 + .../Generated/Ast/MakeObj.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Map.cs | 107 + .../Generated/Ast/Map.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/March.cs | 77 + .../Generated/Ast/March.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Match.cs | 125 + .../Generated/Ast/Match.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Max.cs | 132 + .../Generated/Ast/Max.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Maxval.cs | 77 + .../Generated/Ast/Maxval.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/May.cs | 77 + .../Generated/Ast/May.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Merge.cs | 104 + .../Generated/Ast/Merge.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Min.cs | 132 + .../Generated/Ast/Min.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Minutes.cs | 101 + .../Generated/Ast/Minutes.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Minval.cs | 77 + .../Generated/Ast/Minval.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Mod.cs | 95 + .../Generated/Ast/Mod.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Monday.cs | 77 + .../Generated/Ast/Monday.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Month.cs | 101 + .../Generated/Ast/Month.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Mul.cs | 95 + .../Generated/Ast/Mul.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Ne.cs | 95 + .../RethinkDb.Driver/Generated/Ast/Ne.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Not.cs | 101 + .../Generated/Ast/Not.cs.meta | 11 + .../Generated/Ast/November.cs | 77 + .../Generated/Ast/November.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Now.cs | 104 + .../Generated/Ast/Now.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Nth.cs | 98 + .../Generated/Ast/Nth.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/October.cs | 77 + .../Generated/Ast/October.cs.meta | 11 + .../Generated/Ast/OffsetsOf.cs | 95 + .../Generated/Ast/OffsetsOf.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Or.cs | 104 + .../RethinkDb.Driver/Generated/Ast/Or.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/OrderBy.cs | 138 + .../Generated/Ast/OrderBy.cs.meta | 11 + .../Generated/Ast/OuterJoin.cs | 104 + .../Generated/Ast/OuterJoin.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Pluck.cs | 101 + .../Generated/Ast/Pluck.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Point.cs | 107 + .../Generated/Ast/Point.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Polygon.cs | 131 + .../Generated/Ast/Polygon.cs.meta | 11 + .../Generated/Ast/PolygonSub.cs | 131 + .../Generated/Ast/PolygonSub.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Prepend.cs | 95 + .../Generated/Ast/Prepend.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Random.cs | 132 + .../Generated/Ast/Random.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Range.cs | 101 + .../Generated/Ast/Range.cs.meta | 11 + .../Generated/Ast/Rebalance.cs | 95 + .../Generated/Ast/Rebalance.cs.meta | 11 + .../Generated/Ast/Reconfigure.cs | 156 + .../Generated/Ast/Reconfigure.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Reduce.cs | 110 + .../Generated/Ast/Reduce.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Replace.cs | 168 + .../Generated/Ast/Replace.cs.meta | 11 + .../Generated/Ast/ReqlExpr.cs | 8562 +++++++++++++++++ .../Generated/Ast/ReqlExpr.cs.meta | 11 + .../Generated/Ast/ReqlObject.cs | 110 + .../Generated/Ast/ReqlObject.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Round.cs | 104 + .../Generated/Ast/Round.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Sample.cs | 95 + .../Generated/Ast/Sample.cs.meta | 11 + .../Generated/Ast/Saturday.cs | 77 + .../Generated/Ast/Saturday.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Seconds.cs | 101 + .../Generated/Ast/Seconds.cs.meta | 11 + .../Generated/Ast/September.cs | 77 + .../Generated/Ast/September.cs.meta | 11 + .../Generated/Ast/SetDifference.cs | 98 + .../Generated/Ast/SetDifference.cs.meta | 11 + .../Generated/Ast/SetInsert.cs | 95 + .../Generated/Ast/SetInsert.cs.meta | 11 + .../Generated/Ast/SetIntersection.cs | 98 + .../Generated/Ast/SetIntersection.cs.meta | 11 + .../Generated/Ast/SetUnion.cs | 95 + .../Generated/Ast/SetUnion.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Skip.cs | 95 + .../Generated/Ast/Skip.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Slice.cs | 135 + .../Generated/Ast/Slice.cs.meta | 11 + .../Generated/Ast/SpliceAt.cs | 95 + .../Generated/Ast/SpliceAt.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Split.cs | 119 + .../Generated/Ast/Split.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Status.cs | 95 + .../Generated/Ast/Status.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Sub.cs | 95 + .../Generated/Ast/Sub.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Sum.cs | 110 + .../Generated/Ast/Sum.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Sunday.cs | 77 + .../Generated/Ast/Sunday.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Sync.cs | 107 + .../Generated/Ast/Sync.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Table.cs | 567 ++ .../Generated/Ast/Table.cs.meta | 11 + .../Generated/Ast/TableCreate.cs | 231 + .../Generated/Ast/TableCreate.cs.meta | 11 + .../Generated/Ast/TableDrop.cs | 173 + .../Generated/Ast/TableDrop.cs.meta | 11 + .../Generated/Ast/TableList.cs | 95 + .../Generated/Ast/TableList.cs.meta | 11 + .../Generated/Ast/Thursday.cs | 77 + .../Generated/Ast/Thursday.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Time.cs | 95 + .../Generated/Ast/Time.cs.meta | 11 + .../Generated/Ast/TimeOfDay.cs | 101 + .../Generated/Ast/TimeOfDay.cs.meta | 11 + .../Generated/Ast/Timezone.cs | 101 + .../Generated/Ast/Timezone.cs.meta | 11 + .../Generated/Ast/ToEpochTime.cs | 95 + .../Generated/Ast/ToEpochTime.cs.meta | 11 + .../Generated/Ast/ToGeojson.cs | 110 + .../Generated/Ast/ToGeojson.cs.meta | 11 + .../Generated/Ast/ToIso8601.cs | 101 + .../Generated/Ast/ToIso8601.cs.meta | 11 + .../Generated/Ast/ToJsonString.cs | 101 + .../Generated/Ast/ToJsonString.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Tuesday.cs | 77 + .../Generated/Ast/Tuesday.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/TypeOf.cs | 101 + .../Generated/Ast/TypeOf.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Ungroup.cs | 116 + .../Generated/Ast/Ungroup.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Union.cs | 132 + .../Generated/Ast/Union.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Upcase.cs | 107 + .../Generated/Ast/Upcase.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Update.cs | 147 + .../Generated/Ast/Update.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Uuid.cs | 101 + .../Generated/Ast/Uuid.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Values.cs | 107 + .../Generated/Ast/Values.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Var.cs | 77 + .../Generated/Ast/Var.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Wait.cs | 141 + .../Generated/Ast/Wait.cs.meta | 11 + .../Generated/Ast/Wednesday.cs | 77 + .../Generated/Ast/Wednesday.cs.meta | 11 + .../Generated/Ast/WithFields.cs | 134 + .../Generated/Ast/WithFields.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Without.cs | 101 + .../Generated/Ast/Without.cs.meta | 11 + .../RethinkDb.Driver/Generated/Ast/Year.cs | 101 + .../Generated/Ast/Year.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Ast/Zip.cs | 98 + .../Generated/Ast/Zip.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Model.meta | 8 + .../Generated/Model/AuthType.cs | 21 + .../Generated/Model/AuthType.cs.meta | 11 + .../RethinkDb.Driver/Generated/Model/Bound.cs | 21 + .../Generated/Model/Bound.cs.meta | 11 + .../Generated/Model/Conflict.cs | 22 + .../Generated/Model/Conflict.cs.meta | 11 + .../Generated/Model/Durability.cs | 21 + .../Generated/Model/Durability.cs.meta | 11 + .../Generated/Model/EmergencyRepair.cs | 21 + .../Generated/Model/EmergencyRepair.cs.meta | 11 + .../Generated/Model/Format.cs | 21 + .../Generated/Model/Format.cs.meta | 11 + .../Generated/Model/GeoSystem.cs | 21 + .../Generated/Model/GeoSystem.cs.meta | 11 + .../Generated/Model/HttpMethod.cs | 25 + .../Generated/Model/HttpMethod.cs.meta | 11 + .../Generated/Model/IdentifierFormat.cs | 21 + .../Generated/Model/IdentifierFormat.cs.meta | 11 + .../Generated/Model/ReadMode.cs | 22 + .../Generated/Model/ReadMode.cs.meta | 11 + .../Generated/Model/ReqlFunction0.cs | 19 + .../Generated/Model/ReqlFunction0.cs.meta | 11 + .../Generated/Model/ReqlFunction1.cs | 19 + .../Generated/Model/ReqlFunction1.cs.meta | 11 + .../Generated/Model/ReqlFunction2.cs | 19 + .../Generated/Model/ReqlFunction2.cs.meta | 11 + .../Generated/Model/ReqlFunction3.cs | 19 + .../Generated/Model/ReqlFunction3.cs.meta | 11 + .../Generated/Model/ReqlFunction4.cs | 19 + .../Generated/Model/ReqlFunction4.cs.meta | 11 + .../Generated/Model/ResultFormat.cs | 24 + .../Generated/Model/ResultFormat.cs.meta | 11 + .../Generated/Model/Status.cs | 23 + .../Generated/Model/Status.cs.meta | 11 + .../Generated/Model/TopLevel.cs | 5804 +++++++++++ .../Generated/Model/TopLevel.cs.meta | 11 + .../RethinkDb.Driver/Generated/Model/Unit.cs | 24 + .../Generated/Model/Unit.cs.meta | 11 + .../NIH/RethinkDb.Driver/Generated/Proto.meta | 8 + .../Generated/Proto/DatumType.cs | 23 + .../Generated/Proto/DatumType.cs.meta | 11 + .../Generated/Proto/ErrorType.cs | 24 + .../Generated/Proto/ErrorType.cs.meta | 11 + .../Generated/Proto/FrameType.cs | 18 + .../Generated/Proto/FrameType.cs.meta | 11 + .../Generated/Proto/Protocol.cs | 18 + .../Generated/Proto/Protocol.cs.meta | 11 + .../Generated/Proto/QueryType.cs | 21 + .../Generated/Proto/QueryType.cs.meta | 11 + .../Generated/Proto/ResponseNote.cs | 38 + .../Generated/Proto/ResponseNote.cs.meta | 11 + .../Generated/Proto/ResponseType.cs | 39 + .../Generated/Proto/ResponseType.cs.meta | 11 + .../Generated/Proto/TermType.cs | 194 + .../Generated/Proto/TermType.cs.meta | 11 + .../Generated/Proto/Version.cs | 21 + .../Generated/Proto/Version.cs.meta | 11 + .../Generated/ReqlAuthError.cs | 35 + .../Generated/ReqlAuthError.cs.meta | 11 + .../Generated/ReqlAvailabilityError.cs | 35 + .../Generated/ReqlAvailabilityError.cs.meta | 11 + .../Generated/ReqlClientError.cs | 35 + .../Generated/ReqlClientError.cs.meta | 11 + .../Generated/ReqlCompileError.cs | 35 + .../Generated/ReqlCompileError.cs.meta | 11 + .../Generated/ReqlDriverCompileError.cs | 35 + .../Generated/ReqlDriverCompileError.cs.meta | 11 + .../Generated/ReqlDriverError.cs | 35 + .../Generated/ReqlDriverError.cs.meta | 11 + .../RethinkDb.Driver/Generated/ReqlError.cs | 37 + .../Generated/ReqlError.cs.meta | 11 + .../Generated/ReqlInternalError.cs | 35 + .../Generated/ReqlInternalError.cs.meta | 11 + .../Generated/ReqlNonExistenceError.cs | 35 + .../Generated/ReqlNonExistenceError.cs.meta | 11 + .../Generated/ReqlOpFailedError.cs | 35 + .../Generated/ReqlOpFailedError.cs.meta | 11 + .../Generated/ReqlOpIndeterminateError.cs | 35 + .../ReqlOpIndeterminateError.cs.meta | 11 + .../Generated/ReqlPermissionError.cs | 35 + .../Generated/ReqlPermissionError.cs.meta | 11 + .../Generated/ReqlQueryLogicError.cs | 35 + .../Generated/ReqlQueryLogicError.cs.meta | 11 + .../Generated/ReqlResourceLimitError.cs | 35 + .../Generated/ReqlResourceLimitError.cs.meta | 11 + .../Generated/ReqlRuntimeError.cs | 35 + .../Generated/ReqlRuntimeError.cs.meta | 11 + .../Generated/ReqlServerCompileError.cs | 35 + .../Generated/ReqlServerCompileError.cs.meta | 11 + .../Generated/ReqlUserError.cs | 35 + .../Generated/ReqlUserError.cs.meta | 11 + .../ServerShared/NIH/RethinkDb.Driver/Log.cs | 116 + .../NIH/RethinkDb.Driver/Log.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model.meta | 8 + .../NIH/RethinkDb.Driver/Model/Arguments.cs | 77 + .../RethinkDb.Driver/Model/Arguments.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/Backtrace.cs | 25 + .../RethinkDb.Driver/Model/Backtrace.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/Change[T].cs | 107 + .../RethinkDb.Driver/Model/Change[T].cs.meta | 11 + .../Model/ExtensionsForResult.cs | 153 + .../Model/ExtensionsForResult.cs.meta | 11 + .../RethinkDb.Driver/Model/GroupedResult.cs | 69 + .../Model/GroupedResult.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/MapObject.cs | 49 + .../RethinkDb.Driver/Model/MapObject.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/OptArgs.cs | 101 + .../RethinkDb.Driver/Model/OptArgs.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/PathSpec.cs | 41 + .../RethinkDb.Driver/Model/PathSpec.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/Profile.cs | 25 + .../RethinkDb.Driver/Model/Profile.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/ReqlLambda.cs | 9 + .../RethinkDb.Driver/Model/ReqlLambda.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/Result.cs | 102 + .../NIH/RethinkDb.Driver/Model/Result.cs.meta | 11 + .../NIH/RethinkDb.Driver/Model/Server.cs | 37 + .../NIH/RethinkDb.Driver/Model/Server.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net.meta | 8 + .../NIH/RethinkDb.Driver/Net/Awaiter.cs | 12 + .../NIH/RethinkDb.Driver/Net/Awaiter.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/Clustering.meta | 8 + .../Net/Clustering/ConnectionPool.cs | 587 ++ .../Net/Clustering/ConnectionPool.cs.meta | 11 + .../Net/Clustering/EpsilonGreedy.cs | 416 + .../Net/Clustering/EpsilonGreedy.cs.meta | 11 + .../Net/Clustering/EpsilonValueCalculator.cs | 144 + .../Clustering/EpsilonValueCalculator.cs.meta | 11 + .../Net/Clustering/ExceptionIs.cs | 13 + .../Net/Clustering/ExceptionIs.cs.meta | 11 + .../Net/Clustering/HostEntry.cs | 65 + .../Net/Clustering/HostEntry.cs.meta | 11 + .../Net/Clustering/HostPool.cs | 82 + .../Net/Clustering/HostPool.cs.meta | 11 + .../Net/Clustering/IPoolingStrategy.cs | 12 + .../Net/Clustering/IPoolingStrategy.cs.meta | 11 + .../Net/Clustering/RoundRobinHostPool.cs | 158 + .../Net/Clustering/RoundRobinHostPool.cs.meta | 11 + .../RethinkDb.Driver/Net/Clustering/Seed.cs | 30 + .../Net/Clustering/Seed.cs.meta | 11 + .../RethinkDb.Driver/Net/Clustering/Server.cs | 28 + .../Net/Clustering/Server.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/Connection.cs | 726 ++ .../RethinkDb.Driver/Net/Connection.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/Converter.cs | 174 + .../RethinkDb.Driver/Net/Converter.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/Crypto.cs | 114 + .../NIH/RethinkDb.Driver/Net/Crypto.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/Cursor.cs | 340 + .../NIH/RethinkDb.Driver/Net/Cursor.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/FormatOptions.cs | 52 + .../Net/FormatOptions.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/Handshake.cs | 305 + .../RethinkDb.Driver/Net/Handshake.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/IConnection.cs | 45 + .../RethinkDb.Driver/Net/IConnection.cs.meta | 11 + .../Net/IConnectionBuilder.cs | 20 + .../Net/IConnectionBuilder.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/ICursor.cs | 10 + .../NIH/RethinkDb.Driver/Net/ICursor.cs.meta | 11 + .../RethinkDb.Driver/Net/IncrementalSHA256.cs | 71 + .../Net/IncrementalSHA256.cs.meta | 11 + .../RethinkDb.Driver/Net/JsonConverters.meta | 8 + .../ExtensionsForJsonConverters.cs | 25 + .../ExtensionsForJsonConverters.cs.meta | 11 + .../Net/JsonConverters/ReqlBinaryConverter.cs | 61 + .../ReqlBinaryConverter.cs.meta | 11 + .../JsonConverters/ReqlDateTimeConverter.cs | 143 + .../ReqlDateTimeConverter.cs.meta | 11 + .../Net/JsonConverters/ReqlExprConverter.cs | 33 + .../JsonConverters/ReqlExprConverter.cs.meta | 11 + .../JsonConverters/ReqlGroupingConverter.cs | 97 + .../ReqlGroupingConverter.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/Response.cs | 138 + .../NIH/RethinkDb.Driver/Net/Response.cs.meta | 11 + .../RethinkDb.Driver/Net/ScramAttributes.cs | 153 + .../Net/ScramAttributes.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/SecureRandom.cs | 20 + .../RethinkDb.Driver/Net/SecureRandom.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/SocketWrapper.cs | 396 + .../Net/SocketWrapper.cs.meta | 11 + .../NIH/RethinkDb.Driver/Net/SslContext.cs | 43 + .../RethinkDb.Driver/Net/SslContext.cs.meta | 11 + .../NIH/RethinkDb.Driver/ReqlAssertFailure.cs | 21 + .../ReqlAssertFailure.cs.meta | 11 + .../NIH/RethinkDb.Driver/RethinkDB.cs | 35 + .../NIH/RethinkDb.Driver/RethinkDB.cs.meta | 11 + .../RethinkDb.Driver/RethinkDBConstants.cs | 44 + .../RethinkDBConstants.cs.meta | 11 + .../RethinkDb.Driver/RethinkDb.Driver.csproj | 43 + .../RethinkDb.Driver.csproj.meta | 7 + .../RethinkDb.Driver/RethinkDb.Driver.ruleset | 6 + .../RethinkDb.Driver.ruleset.meta | 7 + .../NIH/RethinkDb.Driver/Utils.meta | 8 + .../RethinkDb.Driver/Utils/CancellableTask.cs | 38 + .../Utils/CancellableTask.cs.meta | 11 + .../Utils/ExtensionsForEvent.cs | 26 + .../Utils/ExtensionsForEvent.cs.meta | 11 + .../Utils/ExtensionsForString.cs | 23 + .../Utils/ExtensionsForString.cs.meta | 11 + .../Utils/ExtensionsForTcpClient.cs | 16 + .../Utils/ExtensionsForTcpClient.cs.meta | 11 + .../Utils/ExtensionsForType.cs | 28 + .../Utils/ExtensionsForType.cs.meta | 11 + .../NIH/RethinkDb.Driver/Utils/QueryHelper.cs | 32 + .../Utils/QueryHelper.cs.meta | 11 + .../RethinkDb.Driver/Utils/StringHelper.cs | 15 + .../Utils/StringHelper.cs.meta | 11 + .../NIH/RethinkDb.Driver/Utils/TaskHelper.cs | 72 + .../RethinkDb.Driver/Utils/TaskHelper.cs.meta | 11 + Assets/Scripts/ServerShared/Services.meta | 8 - .../ServerShared/Services/IChatService.cs | 14 - .../Services/IChatService.cs.meta | 11 - Economy.Server/ChatHub.cs | 62 - Economy.Server/ChatService.cs | 22 - Economy.Server/Economy.Server.csproj | 5 +- Economy.Server/Program.cs | 10 - Economy.Server/Server.cs | 246 + .../netcoreapp3.1/Economy.Server.assets.cache | Bin 66238 -> 25739 bytes ...onomy.Server.csprojAssemblyReference.cache | Bin 424 -> 2224 bytes .../obj/Economy.Server.csproj.nuget.cache | 2 +- .../Economy.Server.csproj.nuget.dgspec.json | 29 +- .../obj/Economy.Server.csproj.nuget.g.targets | 3 + Economy.Server/obj/project.assets.json | 3843 +------- Economy.Server/obj/project.packagespec.json | 12 +- Economy.Shared.Unity.csproj | 360 +- Economy.Shared/Economy.Shared.csproj | 19 +- .../Economy.Shared.assets.cache | Bin 18114 -> 26223 bytes ...onomy.Shared.csprojAssemblyReference.cache | Bin 1644 -> 14799 bytes .../Debug/netstandard2.0/Economy.Shared.dll | 4 +- .../obj/Economy.Shared.csproj.nuget.cache | 2 +- .../Economy.Shared.csproj.nuget.dgspec.json | 17 +- .../obj/Economy.Shared.csproj.nuget.g.props | 1 - Economy.Shared/obj/project.assets.json | 746 +- Economy.Shared/obj/project.packagespec.json | 17 +- MessagePack.csproj | 6 - README.md | 2 +- 869 files changed, 58916 insertions(+), 16327 deletions(-) delete mode 100644 Assets/Plugins/RethinkDb.Driver.Linq.dll delete mode 100644 Assets/Plugins/RethinkDb.Driver.Linq.dll.meta delete mode 100644 Assets/Plugins/RethinkDb.Driver.dll delete mode 100644 Assets/Plugins/RethinkDb.Driver.dll.meta delete mode 100644 Assets/Scenes/ChatScene.unity delete mode 100644 Assets/Scripts/ChatComponent.cs create mode 100644 Assets/Scripts/CultClient.cs rename Assets/Scripts/{NIH/MagicOnion.Abstractions/Client/IResponseContext.cs.meta => CultClient.cs.meta} (83%) delete mode 100644 Assets/Scripts/Generated/MagicOnion.Generated.cs delete mode 100644 Assets/Scripts/Generated/MessagePack.Generated.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/Client/IResponseContext.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Unity.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef delete mode 100644 Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/AsyncLock.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/AsyncLock.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef delete mode 100644 Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Server.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Server/Hubs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs.meta delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs delete mode 100644 Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs.meta create mode 100644 Assets/Scripts/ServerShared/ActionCollection.cs rename Assets/Scripts/{ChatComponent.cs.meta => ServerShared/ActionCollection.cs.meta} (83%) delete mode 100644 Assets/Scripts/ServerShared/Hubs.meta delete mode 100644 Assets/Scripts/ServerShared/Hubs/IChatHub.cs delete mode 100644 Assets/Scripts/ServerShared/Hubs/IChatHub.cs.meta delete mode 100644 Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs delete mode 100644 Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs.meta delete mode 100644 Assets/Scripts/ServerShared/MessagePackObjects.meta delete mode 100644 Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs delete mode 100644 Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs.meta delete mode 100644 Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs delete mode 100644 Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs.meta create mode 100644 Assets/Scripts/ServerShared/Messages.cs rename Assets/Scripts/{Generated/MagicOnion.Generated.cs.meta => ServerShared/Messages.cs.meta} (83%) rename Assets/Scripts/{NIH/MagicOnion.Abstractions/Server.meta => ServerShared/NIH/LiteNetLib.meta} (77%) create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/BaseChannel.cs rename Assets/Scripts/{Generated/MessagePack.Generated.cs.meta => ServerShared/NIH/LiteNetLib/BaseChannel.cs.meta} (83%) create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs.meta rename Assets/Scripts/{NIH/MagicOnion.Abstractions.meta => ServerShared/NIH/LiteNetLib/Layers.meta} (77%) create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj rename Assets/{Scenes/ChatScene.unity.meta => Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj.meta} (74%) create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs.meta rename Assets/Scripts/{NIH/MagicOnion => ServerShared/NIH/LiteNetLib}/Utils.meta (77%) create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs create mode 100644 Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs.meta rename Assets/Scripts/{NIH/MagicOnion.Abstractions/Client.meta => ServerShared/NIH/RethinkDb.Driver.Linq.meta} (77%) rename Assets/Scripts/{NIH/MagicOnion.Abstractions/CompilerServices.meta => ServerShared/NIH/RethinkDb.Driver.Linq/Attributes.meta} (77%) create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs.meta rename Assets/Scripts/{ => ServerShared/NIH/RethinkDb.Driver}/Generated.meta (77%) create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs.meta create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs create mode 100644 Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs.meta delete mode 100644 Assets/Scripts/ServerShared/Services.meta delete mode 100644 Assets/Scripts/ServerShared/Services/IChatService.cs delete mode 100644 Assets/Scripts/ServerShared/Services/IChatService.cs.meta delete mode 100644 Economy.Server/ChatHub.cs delete mode 100644 Economy.Server/ChatService.cs create mode 100644 Economy.Server/Server.cs diff --git a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml index d495e0df2..4d718b4f3 100644 --- a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml +++ b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml @@ -46,7 +46,7 @@ - + @@ -55,10 +55,6 @@ - - - - @@ -107,70 +103,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -725,6 +657,7 @@ + @@ -733,10 +666,6 @@ - - - - @@ -750,10 +679,7 @@ - - - - + @@ -773,11 +699,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - @@ -797,9 +1103,6 @@ - - - diff --git a/.idea/.idea.Economy/.idea/contentModel.xml b/.idea/.idea.Economy/.idea/contentModel.xml index fafc9eee4..62f3f6f2d 100644 --- a/.idea/.idea.Economy/.idea/contentModel.xml +++ b/.idea/.idea.Economy/.idea/contentModel.xml @@ -4,6 +4,7 @@ + @@ -11,46 +12,430 @@ - - - + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - @@ -60,6 +445,7 @@ + diff --git a/Aetheria-Economy.sln b/Aetheria-Economy.sln index 521a8a2bb..0e57f1069 100644 --- a/Aetheria-Economy.sln +++ b/Aetheria-Economy.sln @@ -6,12 +6,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Economy.Shared.Unity", "Eco EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MessagePack", "MessagePack.csproj", "{21EF11C5-27DC-3D88-B027-9A4B6F36BAE4}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagicOnion", "MagicOnion.csproj", "{8646472B-6F4E-DCCA-A987-99E48366FF7F}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagicOnion.Abstractions", "MagicOnion.Abstractions.csproj", "{7A90811F-E771-FAB4-C8B5-EA6DF36C4D19}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MagicOnion.Unity", "MagicOnion.Unity.csproj", "{B83AC090-25E2-7BA3-4612-A18BBB80B3E6}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-firstpass", "Assembly-CSharp-firstpass.csproj", "{7D8742A4-0DFC-5667-0A98-3CA4312F9253}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{E389FCA7-CA14-82FB-7D67-C13788BEE74A}" @@ -34,18 +28,6 @@ Global {21EF11C5-27DC-3D88-B027-9A4B6F36BAE4}.Debug|Any CPU.Build.0 = Debug|Any CPU {21EF11C5-27DC-3D88-B027-9A4B6F36BAE4}.Release|Any CPU.ActiveCfg = Release|Any CPU {21EF11C5-27DC-3D88-B027-9A4B6F36BAE4}.Release|Any CPU.Build.0 = Release|Any CPU - {8646472B-6F4E-DCCA-A987-99E48366FF7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {8646472B-6F4E-DCCA-A987-99E48366FF7F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {8646472B-6F4E-DCCA-A987-99E48366FF7F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {8646472B-6F4E-DCCA-A987-99E48366FF7F}.Release|Any CPU.Build.0 = Release|Any CPU - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19}.Release|Any CPU.ActiveCfg = Release|Any CPU - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19}.Release|Any CPU.Build.0 = Release|Any CPU - {B83AC090-25E2-7BA3-4612-A18BBB80B3E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {B83AC090-25E2-7BA3-4612-A18BBB80B3E6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B83AC090-25E2-7BA3-4612-A18BBB80B3E6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {B83AC090-25E2-7BA3-4612-A18BBB80B3E6}.Release|Any CPU.Build.0 = Release|Any CPU {7D8742A4-0DFC-5667-0A98-3CA4312F9253}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7D8742A4-0DFC-5667-0A98-3CA4312F9253}.Debug|Any CPU.Build.0 = Debug|Any CPU {7D8742A4-0DFC-5667-0A98-3CA4312F9253}.Release|Any CPU.ActiveCfg = Release|Any CPU diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj index 6342c40c2..fb60db496 100644 --- a/Assembly-CSharp-Editor.csproj +++ b/Assembly-CSharp-Editor.csproj @@ -401,12 +401,6 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.dll - - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.Linq.dll - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Newtonsoft.Json.dll @@ -784,18 +778,6 @@ {A62B36C2-E9DE-B992-0779-F5FCF5968986} Economy.Shared.Unity - - {8646472B-6F4E-DCCA-A987-99E48366FF7F} - MagicOnion - - - {B83AC090-25E2-7BA3-4612-A18BBB80B3E6} - MagicOnion.Unity - - - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19} - MagicOnion.Abstractions - {21EF11C5-27DC-3D88-B027-9A4B6F36BAE4} MessagePack diff --git a/Assembly-CSharp-firstpass.csproj b/Assembly-CSharp-firstpass.csproj index 4e30e7cb6..92ccdf5e7 100644 --- a/Assembly-CSharp-firstpass.csproj +++ b/Assembly-CSharp-firstpass.csproj @@ -312,12 +312,6 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.dll - - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.Linq.dll - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Newtonsoft.Json.dll @@ -687,18 +681,6 @@ {A62B36C2-E9DE-B992-0779-F5FCF5968986} Economy.Shared.Unity - - {8646472B-6F4E-DCCA-A987-99E48366FF7F} - MagicOnion - - - {B83AC090-25E2-7BA3-4612-A18BBB80B3E6} - MagicOnion.Unity - - - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19} - MagicOnion.Abstractions - {21EF11C5-27DC-3D88-B027-9A4B6F36BAE4} MessagePack diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 68efbfe95..f531b3981 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -60,10 +60,8 @@ - + - - @@ -647,12 +645,6 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.dll - - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.Linq.dll - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Newtonsoft.Json.dll @@ -1026,18 +1018,6 @@ {A62B36C2-E9DE-B992-0779-F5FCF5968986} Economy.Shared.Unity - - {8646472B-6F4E-DCCA-A987-99E48366FF7F} - MagicOnion - - - {B83AC090-25E2-7BA3-4612-A18BBB80B3E6} - MagicOnion.Unity - - - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19} - MagicOnion.Abstractions - {21EF11C5-27DC-3D88-B027-9A4B6F36BAE4} MessagePack diff --git a/Assets/Plugins/RethinkDb.Driver.Linq.dll b/Assets/Plugins/RethinkDb.Driver.Linq.dll deleted file mode 100644 index ec43c0af0..000000000 --- a/Assets/Plugins/RethinkDb.Driver.Linq.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cebd3a5fcc639f8504ba49a4b1fc39985994d2f890e015646fb62160c2f4ce98 -size 28160 diff --git a/Assets/Plugins/RethinkDb.Driver.Linq.dll.meta b/Assets/Plugins/RethinkDb.Driver.Linq.dll.meta deleted file mode 100644 index a50f51627..000000000 --- a/Assets/Plugins/RethinkDb.Driver.Linq.dll.meta +++ /dev/null @@ -1,100 +0,0 @@ -fileFormatVersion: 2 -guid: a4834ab237984c34989bbc2898518295 -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 0 - platformData: - - first: - '': Any - second: - enabled: 0 - settings: - Exclude Editor: 0 - Exclude Linux: 0 - Exclude Linux64: 0 - Exclude LinuxUniversal: 0 - Exclude OSXUniversal: 0 - Exclude WebGL: 0 - Exclude Win: 0 - Exclude Win64: 0 - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - CPU: AnyCPU - DefaultValueInitialized: true - OS: AnyOS - - first: - Facebook: Win - second: - enabled: 0 - settings: - CPU: AnyCPU - - first: - Facebook: Win64 - second: - enabled: 0 - settings: - CPU: AnyCPU - - first: - Standalone: Linux - second: - enabled: 1 - settings: - CPU: x86 - - first: - Standalone: Linux64 - second: - enabled: 1 - settings: - CPU: x86_64 - - first: - Standalone: LinuxUniversal - second: - enabled: 1 - settings: {} - - first: - Standalone: OSXUniversal - second: - enabled: 1 - settings: - CPU: AnyCPU - - first: - Standalone: Win - second: - enabled: 1 - settings: - CPU: AnyCPU - - first: - Standalone: Win64 - second: - enabled: 1 - settings: - CPU: AnyCPU - - first: - WebGL: WebGL - second: - enabled: 1 - settings: {} - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Plugins/RethinkDb.Driver.dll b/Assets/Plugins/RethinkDb.Driver.dll deleted file mode 100644 index 68320ea17..000000000 --- a/Assets/Plugins/RethinkDb.Driver.dll +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0ba624fc1f6b580caff77b8e4ed677fccfef67744ca4b643582e3bf439ecc315 -size 269312 diff --git a/Assets/Plugins/RethinkDb.Driver.dll.meta b/Assets/Plugins/RethinkDb.Driver.dll.meta deleted file mode 100644 index 305d20e92..000000000 --- a/Assets/Plugins/RethinkDb.Driver.dll.meta +++ /dev/null @@ -1,100 +0,0 @@ -fileFormatVersion: 2 -guid: 800dfc6b8095d9f48975a03adc1d51fb -PluginImporter: - externalObjects: {} - serializedVersion: 2 - iconMap: {} - executionOrder: {} - defineConstraints: [] - isPreloaded: 0 - isOverridable: 0 - isExplicitlyReferenced: 0 - validateReferences: 0 - platformData: - - first: - '': Any - second: - enabled: 0 - settings: - Exclude Editor: 0 - Exclude Linux: 0 - Exclude Linux64: 0 - Exclude LinuxUniversal: 0 - Exclude OSXUniversal: 0 - Exclude WebGL: 0 - Exclude Win: 0 - Exclude Win64: 0 - - first: - Any: - second: - enabled: 1 - settings: {} - - first: - Editor: Editor - second: - enabled: 1 - settings: - CPU: AnyCPU - DefaultValueInitialized: true - OS: AnyOS - - first: - Facebook: Win - second: - enabled: 0 - settings: - CPU: AnyCPU - - first: - Facebook: Win64 - second: - enabled: 0 - settings: - CPU: AnyCPU - - first: - Standalone: Linux - second: - enabled: 1 - settings: - CPU: x86 - - first: - Standalone: Linux64 - second: - enabled: 1 - settings: - CPU: x86_64 - - first: - Standalone: LinuxUniversal - second: - enabled: 1 - settings: {} - - first: - Standalone: OSXUniversal - second: - enabled: 1 - settings: - CPU: AnyCPU - - first: - Standalone: Win - second: - enabled: 1 - settings: - CPU: AnyCPU - - first: - Standalone: Win64 - second: - enabled: 1 - settings: - CPU: AnyCPU - - first: - WebGL: WebGL - second: - enabled: 1 - settings: {} - - first: - Windows Store Apps: WindowsStoreApps - second: - enabled: 0 - settings: - CPU: AnyCPU - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scenes/ChatScene.unity b/Assets/Scenes/ChatScene.unity deleted file mode 100644 index 09c11735c..000000000 --- a/Assets/Scenes/ChatScene.unity +++ /dev/null @@ -1,3131 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 500 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 2 - m_PVRDenoiserTypeDirect: 0 - m_PVRDenoiserTypeIndirect: 0 - m_PVRDenoiserTypeAO: 0 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 0 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_ExportTrainingData: 0 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &164639239 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 164639240} - - component: {fileID: 164639242} - - component: {fileID: 164639241} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &164639240 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 164639239} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1634534318} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &164639241 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 164639239} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.38679248, g: 0.38679248, b: 0.38679248, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &164639242 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 164639239} - m_CullTransparentMesh: 0 ---- !u!1 &190778106 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 190778107} - - component: {fileID: 190778110} - - component: {fileID: 190778109} - - component: {fileID: 190778108} - m_Layer: 5 - m_Name: SendReportButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &190778107 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 190778106} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 525475477} - m_Father: {fileID: 1309622324} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &190778108 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 190778106} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 190778109} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1634534319} - m_MethodName: SendReport - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &190778109 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 190778106} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.5943396, g: 0.5747152, b: 0.5747152, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &190778110 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 190778106} - m_CullTransparentMesh: 0 ---- !u!1 &237511814 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 237511817} - - component: {fileID: 237511816} - - component: {fileID: 237511815} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &237511815 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 237511814} - m_Enabled: 1 ---- !u!20 &237511816 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 237511814} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &237511817 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 237511814} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &247055287 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 247055288} - - component: {fileID: 247055290} - - component: {fileID: 247055289} - m_Layer: 5 - m_Name: Line - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &247055288 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 247055287} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1634534318} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.082} - m_AnchorMax: {x: 1, y: 0.086} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &247055289 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 247055287} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &247055290 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 247055287} - m_CullTransparentMesh: 0 ---- !u!1 &330057072 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 330057073} - - component: {fileID: 330057076} - - component: {fileID: 330057075} - - component: {fileID: 330057074} - m_Layer: 5 - m_Name: InputField - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &330057073 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330057072} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1337382646} - - {fileID: 1329709669} - m_Father: {fileID: 1634534318} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.17, y: 0.22} - m_AnchorMax: {x: 0.83, y: 0.28} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &330057074 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330057072} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 330057075} - m_TextComponent: {fileID: 1329709670} - m_Placeholder: {fileID: 1337382647} - m_ContentType: 0 - m_InputType: 0 - m_AsteriskChar: 42 - m_KeyboardType: 0 - m_LineType: 0 - m_HideMobileInput: 0 - m_CharacterValidation: 0 - m_CharacterLimit: 0 - m_OnEndEdit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null - m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_CustomCaretColor: 0 - m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} - m_Text: - m_CaretBlinkRate: 0.85 - m_CaretWidth: 1 - m_ReadOnly: 0 ---- !u!114 &330057075 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330057072} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &330057076 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330057072} - m_CullTransparentMesh: 0 ---- !u!1 &525475476 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 525475477} - - component: {fileID: 525475479} - - component: {fileID: 525475478} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &525475477 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 525475476} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 190778107} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &525475478 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 525475476} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Send Report ---- !u!222 &525475479 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 525475476} - m_CullTransparentMesh: 0 ---- !u!1 &557907330 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 557907331} - - component: {fileID: 557907332} - - component: {fileID: 557907334} - m_Layer: 5 - m_Name: Buttons - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &557907331 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 557907330} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1487425764} - - {fileID: 1383832575} - m_Father: {fileID: 1634534318} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.12, y: 0.15} - m_AnchorMax: {x: 0.88, y: 0.2} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &557907332 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 557907330} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 4 - m_Spacing: 30 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 ---- !u!222 &557907334 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 557907330} - m_CullTransparentMesh: 0 ---- !u!1 &574419691 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 574419692} - - component: {fileID: 574419694} - - component: {fileID: 574419693} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &574419692 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 574419691} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1096149280} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &574419693 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 574419691} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Disconnect Test ---- !u!222 &574419694 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 574419691} - m_CullTransparentMesh: 0 ---- !u!1 &609138041 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 609138042} - - component: {fileID: 609138044} - - component: {fileID: 609138043} - m_Layer: 5 - m_Name: Placeholder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &609138042 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 609138041} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1671399962} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &609138043 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 609138041} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 30 - m_FontStyle: 2 - m_BestFit: 1 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Please enter report text... ---- !u!222 &609138044 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 609138041} - m_CullTransparentMesh: 0 ---- !u!1 &632675411 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 632675412} - - component: {fileID: 632675414} - - component: {fileID: 632675413} - m_Layer: 5 - m_Name: Buttons - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &632675412 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 632675411} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1096149280} - - {fileID: 2120537442} - - {fileID: 1868729446} - m_Father: {fileID: 1634534318} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.12, y: 0.1} - m_AnchorMax: {x: 0.88, y: 0.135} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &632675413 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 632675411} - m_CullTransparentMesh: 0 ---- !u!114 &632675414 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 632675411} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 4 - m_Spacing: 30 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 ---- !u!1 &771375552 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 771375553} - - component: {fileID: 771375555} - - component: {fileID: 771375554} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &771375553 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771375552} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1487425764} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &771375554 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771375552} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Enter the room ---- !u!222 &771375555 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771375552} - m_CullTransparentMesh: 0 ---- !u!1 &817501237 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 817501238} - - component: {fileID: 817501240} - - component: {fileID: 817501239} - m_Layer: 5 - m_Name: Handle - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &817501238 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 817501237} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 963732563} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &817501239 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 817501237} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &817501240 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 817501237} - m_CullTransparentMesh: 0 ---- !u!1 &927062024 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 927062025} - - component: {fileID: 927062027} - - component: {fileID: 927062028} - - component: {fileID: 927062026} - m_Layer: 5 - m_Name: ScrollPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &927062025 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 927062024} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1978894556} - - {fileID: 1799772182} - m_Father: {fileID: 1634534318} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.1, y: 0.3} - m_AnchorMax: {x: 0.9, y: 0.95} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &927062026 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 927062024} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &927062027 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 927062024} - m_CullTransparentMesh: 0 ---- !u!114 &927062028 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 927062024} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1367256648, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Content: {fileID: 1522127878} - m_Horizontal: 0 - m_Vertical: 1 - m_MovementType: 1 - m_Elasticity: 0.1 - m_Inertia: 1 - m_DecelerationRate: 0.135 - m_ScrollSensitivity: 1 - m_Viewport: {fileID: 1978894556} - m_HorizontalScrollbar: {fileID: 0} - m_VerticalScrollbar: {fileID: 1799772183} - m_HorizontalScrollbarVisibility: 0 - m_VerticalScrollbarVisibility: 1 - m_HorizontalScrollbarSpacing: 0 - m_VerticalScrollbarSpacing: 0 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!1 &963732562 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 963732563} - m_Layer: 5 - m_Name: Sliding Area - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &963732563 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 963732562} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 817501238} - m_Father: {fileID: 1799772182} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -20, y: -20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!1 &1040922706 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1040922707} - - component: {fileID: 1040922709} - - component: {fileID: 1040922708} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1040922707 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1040922706} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1868729446} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1040922708 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1040922706} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Generate Exception(hub) ---- !u!222 &1040922709 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1040922706} - m_CullTransparentMesh: 0 ---- !u!1 &1096149279 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1096149280} - - component: {fileID: 1096149283} - - component: {fileID: 1096149282} - - component: {fileID: 1096149281} - m_Layer: 5 - m_Name: DisconnectButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1096149280 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1096149279} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 574419692} - m_Father: {fileID: 632675412} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1096149281 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1096149279} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1096149282} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1634534319} - m_MethodName: DisconnectServer - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &1096149282 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1096149279} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.69753474, g: 0.70003784, b: 0.7075472, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &1096149283 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1096149279} - m_CullTransparentMesh: 0 ---- !u!1 &1309622323 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1309622324} - - component: {fileID: 1309622326} - - component: {fileID: 1309622325} - m_Layer: 5 - m_Name: Report - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1309622324 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1309622323} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1671399962} - - {fileID: 190778107} - m_Father: {fileID: 1634534318} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.08, y: 0.02} - m_AnchorMax: {x: 0.92, y: 0.07} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1309622325 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1309622323} - m_CullTransparentMesh: 0 ---- !u!114 &1309622326 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1309622323} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -405508275, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 4 - m_Spacing: 30 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 1 - m_ChildControlHeight: 1 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 ---- !u!1 &1329709668 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1329709669} - - component: {fileID: 1329709671} - - component: {fileID: 1329709670} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1329709669 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1329709668} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 330057073} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1329709670 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1329709668} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 30 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 3 - m_MaxSize: 40 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 0 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: ---- !u!222 &1329709671 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1329709668} - m_CullTransparentMesh: 0 ---- !u!1 &1337382645 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1337382646} - - component: {fileID: 1337382648} - - component: {fileID: 1337382647} - m_Layer: 5 - m_Name: Placeholder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1337382646 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1337382645} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 330057073} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1337382647 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1337382645} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 30 - m_FontStyle: 2 - m_BestFit: 1 - m_MinSize: 1 - m_MaxSize: 40 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Enter text... ---- !u!222 &1337382648 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1337382645} - m_CullTransparentMesh: 0 ---- !u!1 &1383832574 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1383832575} - - component: {fileID: 1383832578} - - component: {fileID: 1383832577} - - component: {fileID: 1383832576} - m_Layer: 5 - m_Name: AddCommentButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1383832575 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1383832574} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1420340486} - m_Father: {fileID: 557907331} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1383832576 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1383832574} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1383832577} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1634534319} - m_MethodName: SendMessage - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &1383832577 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1383832574} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.33521715, g: 0.764151, b: 0.5044038, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &1383832578 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1383832574} - m_CullTransparentMesh: 0 ---- !u!1 &1409526054 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1409526057} - - component: {fileID: 1409526056} - - component: {fileID: 1409526055} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1409526055 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409526054} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &1409526056 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409526054} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &1409526057 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1409526054} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1420340485 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1420340486} - - component: {fileID: 1420340488} - - component: {fileID: 1420340487} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1420340486 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420340485} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1383832575} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1420340487 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420340485} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Enter a comment ---- !u!222 &1420340488 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420340485} - m_CullTransparentMesh: 0 ---- !u!1 &1434588224 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1434588225} - - component: {fileID: 1434588227} - - component: {fileID: 1434588226} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1434588225 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1434588224} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 2120537442} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1434588226 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1434588224} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 0 - m_LineSpacing: 1 - m_Text: Generate Exception(unary) ---- !u!222 &1434588227 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1434588224} - m_CullTransparentMesh: 0 ---- !u!1 &1487425763 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1487425764} - - component: {fileID: 1487425767} - - component: {fileID: 1487425766} - - component: {fileID: 1487425765} - m_Layer: 5 - m_Name: JoinAndLeaveRoomButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1487425764 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1487425763} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 771375553} - m_Father: {fileID: 557907331} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1487425765 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1487425763} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1487425766} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1634534319} - m_MethodName: JoinOrLeave - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &1487425766 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1487425763} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.3137255, g: 0.5686275, b: 0.627451, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &1487425767 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1487425763} - m_CullTransparentMesh: 0 ---- !u!1 &1522127877 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1522127878} - - component: {fileID: 1522127881} - - component: {fileID: 1522127880} - - component: {fileID: 1522127879} - m_Layer: 5 - m_Name: ChatText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1522127878 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522127877} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1978894556} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.02, y: 0.02} - m_AnchorMax: {x: 0.98, y: 0.98} - m_AnchoredPosition: {x: 0, y: 5.530014} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 1} ---- !u!114 &1522127879 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522127877} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1741964061, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 0 - m_VerticalFit: 2 ---- !u!114 &1522127880 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522127877} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 0 - m_MaxSize: 40 - m_Alignment: 0 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 0 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Sample Text ---- !u!222 &1522127881 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1522127877} - m_CullTransparentMesh: 0 ---- !u!1 &1634534314 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1634534318} - - component: {fileID: 1634534317} - - component: {fileID: 1634534316} - - component: {fileID: 1634534315} - - component: {fileID: 1634534319} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1634534315 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1634534314} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &1634534316 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1634534314} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 900, y: 1600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 ---- !u!223 &1634534317 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1634534314} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &1634534318 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1634534314} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_Children: - - {fileID: 164639240} - - {fileID: 927062025} - - {fileID: 330057073} - - {fileID: 557907331} - - {fileID: 632675412} - - {fileID: 247055288} - - {fileID: 1309622324} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!114 &1634534319 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1634534314} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7ea9e77872213814ea60ab05d1064578, type: 3} - m_Name: - m_EditorClassIdentifier: - ChatText: {fileID: 1522127880} - JoinOrLeaveButton: {fileID: 1487425765} - JoinOrLeaveButtonText: {fileID: 771375554} - SendMessageButton: {fileID: 1383832576} - Input: {fileID: 330057074} - ReportInput: {fileID: 1671399963} - SendReportButton: {fileID: 190778108} - DisconnectButon: {fileID: 1096149281} - ExceptionButton: {fileID: 1868729447} - UnaryExceptionButton: {fileID: 2120537443} ---- !u!1 &1671399961 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1671399962} - - component: {fileID: 1671399965} - - component: {fileID: 1671399964} - - component: {fileID: 1671399963} - m_Layer: 5 - m_Name: ReportInputField - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1671399962 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1671399961} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 609138042} - - {fileID: 1901126666} - m_Father: {fileID: 1309622324} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1671399963 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1671399961} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 575553740, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1671399964} - m_TextComponent: {fileID: 1901126667} - m_Placeholder: {fileID: 609138043} - m_ContentType: 0 - m_InputType: 0 - m_AsteriskChar: 42 - m_KeyboardType: 0 - m_LineType: 0 - m_HideMobileInput: 0 - m_CharacterValidation: 0 - m_CharacterLimit: 0 - m_OnEndEdit: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null - m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_CustomCaretColor: 0 - m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} - m_Text: - m_CaretBlinkRate: 0.85 - m_CaretWidth: 1 - m_ReadOnly: 0 ---- !u!114 &1671399964 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1671399961} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &1671399965 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1671399961} - m_CullTransparentMesh: 0 ---- !u!1 &1799772181 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1799772182} - - component: {fileID: 1799772185} - - component: {fileID: 1799772184} - - component: {fileID: 1799772183} - m_Layer: 5 - m_Name: Scrollbar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1799772182 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1799772181} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 963732563} - m_Father: {fileID: 927062025} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 1, y: 0.02} - m_AnchorMax: {x: 1, y: 0.98} - m_AnchoredPosition: {x: -20, y: 0} - m_SizeDelta: {x: 20, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1799772183 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1799772181} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -2061169968, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 817501239} - m_HandleRect: {fileID: 817501238} - m_Direction: 3 - m_Value: 1 - m_Size: 1 - m_NumberOfSteps: 0 - m_OnValueChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &1799772184 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1799772181} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &1799772185 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1799772181} - m_CullTransparentMesh: 0 ---- !u!1 &1868729445 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1868729446} - - component: {fileID: 1868729449} - - component: {fileID: 1868729448} - - component: {fileID: 1868729447} - m_Layer: 5 - m_Name: ExceptiontButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1868729446 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1868729445} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1040922707} - m_Father: {fileID: 632675412} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1868729447 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1868729445} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1868729448} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1634534319} - m_MethodName: GenerateException - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &1868729448 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1868729445} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.7647059, g: 0.33333337, b: 0.3651321, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &1868729449 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1868729445} - m_CullTransparentMesh: 0 ---- !u!1 &1901126665 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1901126666} - - component: {fileID: 1901126668} - - component: {fileID: 1901126667} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1901126666 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1901126665} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1671399962} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.5} - m_SizeDelta: {x: -20, y: -13} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1901126667 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1901126665} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 30 - m_FontStyle: 0 - m_BestFit: 1 - m_MinSize: 3 - m_MaxSize: 40 - m_Alignment: 3 - m_AlignByGeometry: 0 - m_RichText: 0 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: ---- !u!222 &1901126668 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1901126665} - m_CullTransparentMesh: 0 ---- !u!1 &1978894555 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1978894556} - - component: {fileID: 1978894558} - - component: {fileID: 1978894559} - m_Layer: 5 - m_Name: Viewport - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1978894556 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1978894555} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1522127878} - m_Father: {fileID: 927062025} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1978894558 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1978894555} - m_CullTransparentMesh: 0 ---- !u!114 &1978894559 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1978894555} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -146154839, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &2120537441 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2120537442} - - component: {fileID: 2120537445} - - component: {fileID: 2120537444} - - component: {fileID: 2120537443} - m_Layer: 5 - m_Name: UnaryExceptiontButton - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &2120537442 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2120537441} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1434588225} - m_Father: {fileID: 632675412} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &2120537443 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2120537441} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1392445389, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.11764706, g: 0.11764706, b: 0.11764706, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Highlighted - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 2120537444} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1634534319} - m_MethodName: UnaryGenerateException - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 - m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, - Culture=neutral, PublicKeyToken=null ---- !u!114 &2120537444 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2120537441} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0.7647059, g: 0.33333337, b: 0.3651321, a: 1} - m_RaycastTarget: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, - Version=1.0.0.0, Culture=neutral, PublicKeyToken=null - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &2120537445 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2120537441} - m_CullTransparentMesh: 0 diff --git a/Assets/Scripts/ChatComponent.cs b/Assets/Scripts/ChatComponent.cs deleted file mode 100644 index cce2fa9ed..000000000 --- a/Assets/Scripts/ChatComponent.cs +++ /dev/null @@ -1,223 +0,0 @@ -using ChatApp.Shared.Hubs; -using ChatApp.Shared.MessagePackObjects; -using ChatApp.Shared.Services; -using Grpc.Core; -using MagicOnion.Client; -using System.IO; -using System.Threading.Tasks; -using UnityEngine; -using UnityEngine.UI; - -namespace Assets.Scripts -{ - public class ChatComponent : MonoBehaviour, IChatHubReceiver - { - private Channel channel; - private IChatHub streamingClient; - private IChatService client; - - private bool isJoin; - private bool isSelfDisConnected; - - public Text ChatText; - - public Button JoinOrLeaveButton; - - public Text JoinOrLeaveButtonText; - - public Button SendMessageButton; - - public InputField Input; - - public InputField ReportInput; - - public Button SendReportButton; - - public Button DisconnectButon; - public Button ExceptionButton; - public Button UnaryExceptionButton; - - - void Start() - { - this.InitializeClient(); - this.InitializeUi(); - } - - - async void OnDestroy() - { - // Clean up Hub and channel - await this.streamingClient.DisposeAsync(); - await this.channel.ShutdownAsync(); - } - - - private void InitializeClient() - { - // Initialize the Hub - this.channel = new Channel("localhost", 12345, ChannelCredentials.Insecure); - // for SSL/TLS connection - //var serverCred = new SslCredentials(File.ReadAllText(Path.Combine(Application.streamingAssetsPath, "server.crt"))); - //this.channel = new Channel("test.example.com", 12345, serverCred); - this.streamingClient = StreamingHubClient.Connect(this.channel, this); - this.RegisterDisconnectEvent(streamingClient); - this.client = MagicOnionClient.Create(this.channel); - } - - - private void InitializeUi() - { - this.isJoin = false; - - this.SendMessageButton.interactable = false; - this.ChatText.text = string.Empty; - this.Input.text = string.Empty; - this.Input.placeholder.GetComponent().text = "Please enter your name."; - this.JoinOrLeaveButtonText.text = "Enter the room"; - this.ExceptionButton.interactable = false; - } - - - private async void RegisterDisconnectEvent(IChatHub streamingClient) - { - try - { - // you can wait disconnected event - await streamingClient.WaitForDisconnect(); - } - finally - { - // try-to-reconnect? logging event? close? etc... - Debug.Log("disconnected server."); - - if (this.isSelfDisConnected) - { - // there is no particular meaning - await Task.Delay(2000); - - // reconnect - this.ReconnectServer(); - } - } - } - - - public async void DisconnectServer() - { - this.isSelfDisConnected = true; - - this.JoinOrLeaveButton.interactable = false; - this.SendMessageButton.interactable = false; - this.SendReportButton.interactable = false; - this.DisconnectButon.interactable = false; - this.ExceptionButton.interactable = false; - this.UnaryExceptionButton.interactable = false; - - if (this.isJoin) - this.JoinOrLeave(); - - await this.streamingClient.DisposeAsync(); - } - - - private void ReconnectServer() - { - this.streamingClient = StreamingHubClient.Connect(this.channel, this); - this.RegisterDisconnectEvent(streamingClient); - Debug.Log("Reconnected server."); - - this.JoinOrLeaveButton.interactable = true; - this.SendMessageButton.interactable = false; - this.SendReportButton.interactable = true; - this.DisconnectButon.interactable = true; - this.ExceptionButton.interactable = true; - this.UnaryExceptionButton.interactable = true; - - this.isSelfDisConnected = false; - } - - - #region Client -> Server (Streaming) - public async void JoinOrLeave() - { - if (this.isJoin) - { - await this.streamingClient.LeaveAsync(); - - this.InitializeUi(); - } - else - { - var request = new JoinRequest { RoomName = "SampleRoom", UserName = this.Input.text }; - await this.streamingClient.JoinAsync(request); - - this.isJoin = true; - this.SendMessageButton.interactable = true; - this.JoinOrLeaveButtonText.text = "Leave the room"; - this.Input.text = string.Empty; - this.Input.placeholder.GetComponent().text = "Please enter a comment."; - this.ExceptionButton.interactable = true; - } - } - - - public async void SendMessage() - { - if (!this.isJoin) - return; - - await this.streamingClient.SendMessageAsync(this.Input.text); - - this.Input.text = string.Empty; - } - - public async void GenerateException() - { - // hub - if (!this.isJoin) return; - await this.streamingClient.GenerateException("client exception(streaminghub)!"); - } - - public void SampleMethod() - { - throw new System.NotImplementedException(); - } - #endregion - - - #region Server -> Client (Streaming) - public void OnJoin(string name) - { - this.ChatText.text += $"\n{name} entered the room."; - } - - - public void OnLeave(string name) - { - this.ChatText.text += $"\n{name} left the room."; - } - - public void OnSendMessage(MessageResponse message) - { - this.ChatText.text += $"\n{message.UserName}:{message.Message}"; - } - #endregion - - - #region Client -> Server (Unary) - public async void SendReport() - { - await this.client.SendReportAsync(this.ReportInput.text); - - this.ReportInput.text = string.Empty; - } - - public async void UnaryGenerateException() - { - // unary - await this.client.GenerateException("client exception(unary)!"); - } - #endregion - } -} diff --git a/Assets/Scripts/CultClient.cs b/Assets/Scripts/CultClient.cs new file mode 100644 index 000000000..10e6b9425 --- /dev/null +++ b/Assets/Scripts/CultClient.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using LiteNetLib; +using MessagePack; +using UniRx; +using UnityEngine; + +public static class CultClient { + public static Action Logger = s => + MainThreadDispatcher.Post(_=>Debug.Log(s),null); + + public static NetManager Client; + private static NetPeer _peer; + private static Dictionary _messageCallbacks = new Dictionary(); + + public static void Send(T m) where T : Message + { + Logger($"Sending message {MessagePackSerializer.SerializeToJson(m as Message)}"); + _peer.Send(m as Message); + } + + public static void ClearMessageListeners() + { + _messageCallbacks.Clear(); + } + + public static void AddMessageListener(Action callback) where T : Message + { + if (!_messageCallbacks.ContainsKey(typeof(T))) + _messageCallbacks[typeof(T)] = new ActionCollection(); + ((ActionCollection)_messageCallbacks[typeof(T)]).Add(callback); + } + + public static void Connect(string host = "localhost", int port = 3075) + { + EventBasedNetListener listener = new EventBasedNetListener(); + Client = new NetManager(listener) + { +// UnsyncedEvents = true, +// MergeEnabled = true, +// NatPunchEnabled = true + }; + Client.Start(3074); + _peer = Client.Connect(host, port, "aetheria-cc65a44d"); + Observable.EveryUpdate().Subscribe(_ => Client.PollEvents()); + listener.NetworkErrorEvent += (point, code) => Logger($"{point.Address}: Error {code}"); + listener.NetworkReceiveEvent += (peer, reader, method) => + { + Logger($"Received message: {MessagePackSerializer.ConvertToJson(new ReadOnlyMemory(reader.RawData))}"); + var message = MessagePackSerializer.Deserialize(reader.RawData); + var type = message.GetType(); + if (_messageCallbacks.ContainsKey(type)) + typeof(ActionCollection<>).MakeGenericType(new[] {type}).GetMethod("Invoke").Invoke(_messageCallbacks[type], new object[] {message}); + }; + listener.PeerConnectedEvent += peer => + { + Logger($"Peer {peer.EndPoint.Address}:{peer.EndPoint.Port} connected."); + _peer = peer; +// onConnect(); + }; + listener.PeerDisconnectedEvent += (peer, info) => + { + Logger($"Peer {peer.EndPoint.Address}:{peer.EndPoint.Port} disconnected: {info.Reason}."); + _peer = null; + }; +// listener.NetworkLatencyUpdateEvent += (peer, latency) => Logger($"Ping received: {latency} ms"); + } +} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/Client/IResponseContext.cs.meta b/Assets/Scripts/CultClient.cs.meta similarity index 83% rename from Assets/Scripts/NIH/MagicOnion.Abstractions/Client/IResponseContext.cs.meta rename to Assets/Scripts/CultClient.cs.meta index 2d1c1af57..457feec9e 100644 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/Client/IResponseContext.cs.meta +++ b/Assets/Scripts/CultClient.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d1954ea03abc7c34fba72fdd2cd9a8bf +guid: 7e7103131b037e44095bb2e8a7c0b28a MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Editor/DatabaseView.cs b/Assets/Scripts/Editor/DatabaseView.cs index 159645ef0..5b9d2d5d2 100644 --- a/Assets/Scripts/Editor/DatabaseView.cs +++ b/Assets/Scripts/Editor/DatabaseView.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Threading.Tasks; +using Newtonsoft.Json; using RethinkDb.Driver; using RethinkDb.Driver.Net; using UniRx; @@ -79,7 +80,18 @@ public class DatabaseListView : EditorWindow void OnEnable() { // Add Unity.Mathematics serialization support to RethinkDB Driver - Converter.Serializer.Converters.Add(new MathJsonConverter()); + //Converter.Serializer.Converters.Add(new MathJsonConverter()); + JsonConvert.DefaultSettings = () => new JsonSerializerSettings + { + Converters = new List + { + new MathJsonConverter(), + Converter.DateTimeConverter, + Converter.BinaryConverter, + Converter.GroupingConverter, + Converter.PocoExprConverter + } + }; // Create database cache _databaseCache = new DatabaseCache(); @@ -144,16 +156,22 @@ public class DatabaseListView : EditorWindow Debug.Log("Connected to RethinkDB"); // When entries are changed locally, push the changes to RethinkDB - _databaseCache.OnDataUpdateLocal += entry => + _databaseCache.OnDataUpdateLocal += async entry => { - Debug.Log($"Uploading entry to RethinkDB: {entry.ID}"); - R.Db("Aetheria").Table("Items").Replace(entry).RunAsync(_connection); + var result = await R.Db("Aetheria").Table("Items").Update(entry).RunAsync(_connection); + Debug.Log($"Uploaded entry to RethinkDB: {entry.ID} result: {result}"); + }; + + _databaseCache.OnDataInsertLocal += async entry => + { + var result = await R.Db("Aetheria").Table("Items").Insert(entry).RunAsync(_connection); + Debug.Log($"Inserted entry to RethinkDB: {entry.ID} result: {result}"); }; - _databaseCache.OnDataDeleteLocal += entry => + _databaseCache.OnDataDeleteLocal += async entry => { - Debug.Log($"Deleting entry from RethinkDB: {entry.ID}"); - R.Db("Aetheria").Table("Items").Get(entry).Delete().RunAsync(_connection); + var result = await R.Db("Aetheria").Table("Items").Get(entry.ID).Delete().RunAsync(_connection); + Debug.Log($"Deleted entry from RethinkDB: {entry.ID} result: {result}"); }; // Get all item data from RethinkDB @@ -176,9 +194,13 @@ public class DatabaseListView : EditorWindow while (await result.MoveNextAsync()) { var change = result.Current; - var entry = change.NewValue; - Debug.Log($"Received change to entry from RethinkDB: {entry.ID}"); - _databaseCache.Add(entry, true); + if(change.OldValue == null) + Debug.Log($"Received change from RethinkDB (Entry Created): {change.NewValue.ID}"); + else if(change.NewValue == null) + Debug.Log($"Received change from RethinkDB (Entry Deleted): {change.OldValue.ID}"); + else + Debug.Log($"Received change from RethinkDB: {change.NewValue.ID}"); + _databaseCache.Add(change.NewValue, true); } }).WrapErrors(); } diff --git a/Assets/Scripts/Generated/MagicOnion.Generated.cs b/Assets/Scripts/Generated/MagicOnion.Generated.cs deleted file mode 100644 index 47b505860..000000000 --- a/Assets/Scripts/Generated/MagicOnion.Generated.cs +++ /dev/null @@ -1,397 +0,0 @@ -// -#pragma warning disable 618 -#pragma warning disable 612 -#pragma warning disable 414 -#pragma warning disable 219 -#pragma warning disable 168 - -namespace MagicOnion -{ - using global::System; - using global::System.Collections.Generic; - using global::System.Linq; - using global::MagicOnion; - using global::MagicOnion.Client; - - public static partial class MagicOnionInitializer - { - static bool isRegistered = false; - - [UnityEngine.RuntimeInitializeOnLoadMethod(UnityEngine.RuntimeInitializeLoadType.BeforeSceneLoad)] - public static void Register() - { - if(isRegistered) return; - isRegistered = true; - - MagicOnionClientRegistry.Register((x, y, z) => new ChatApp.Shared.Services.ChatServiceClient(x, y, z)); - - StreamingHubClientRegistry.Register((a, _, b, c, d, e) => new ChatApp.Shared.Hubs.ChatHubClient(a, b, c, d, e)); - } - } -} - -#pragma warning restore 168 -#pragma warning restore 219 -#pragma warning restore 414 -#pragma warning restore 612 -#pragma warning restore 618 -#pragma warning disable 618 -#pragma warning disable 612 -#pragma warning disable 414 -#pragma warning disable 219 -#pragma warning disable 168 - -namespace MagicOnion.Resolvers -{ - using System; - using MessagePack; - - public class MagicOnionResolver : global::MessagePack.IFormatterResolver - { - public static readonly global::MessagePack.IFormatterResolver Instance = new MagicOnionResolver(); - - MagicOnionResolver() - { - - } - - public global::MessagePack.Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.formatter; - } - - static class FormatterCache - { - public static readonly global::MessagePack.Formatters.IMessagePackFormatter formatter; - - static FormatterCache() - { - var f = MagicOnionResolverGetFormatterHelper.GetFormatter(typeof(T)); - if (f != null) - { - formatter = (global::MessagePack.Formatters.IMessagePackFormatter)f; - } - } - } - } - - internal static class MagicOnionResolverGetFormatterHelper - { - static readonly global::System.Collections.Generic.Dictionary lookup; - - static MagicOnionResolverGetFormatterHelper() - { - lookup = new global::System.Collections.Generic.Dictionary(3) - { - {typeof(global::MagicOnion.DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>), 0 }, - {typeof(global::System.Collections.Generic.Dictionary), 1 }, - {typeof(global::System.Collections.Generic.List), 2 }, - }; - } - - internal static object GetFormatter(Type t) - { - int key; - if (!lookup.TryGetValue(t, out key)) - { - return null; - } - - switch (key) - { - case 0: return new global::MagicOnion.DynamicArgumentTupleFormatter, global::System.Collections.Generic.Dictionary>(default(global::System.Collections.Generic.List), default(global::System.Collections.Generic.Dictionary)); - case 1: return new global::MessagePack.Formatters.DictionaryFormatter(); - case 2: return new global::MessagePack.Formatters.ListFormatter(); - default: return null; - } - } - } -} - -#pragma warning restore 168 -#pragma warning restore 219 -#pragma warning restore 414 -#pragma warning restore 612 -#pragma warning restore 618 -#pragma warning disable 618 -#pragma warning disable 612 -#pragma warning disable 414 -#pragma warning disable 219 -#pragma warning disable 168 - -namespace ChatApp.Shared.Services { - using System; - using MagicOnion; - using MagicOnion.Client; - using Grpc.Core; - using MessagePack; - - [Ignore] - public class ChatServiceClient : MagicOnionClientBase, global::ChatApp.Shared.Services.IChatService - { - static readonly Method GenerateExceptionMethod; - static readonly Func GenerateExceptionDelegate; - static readonly Method SendReportAsyncMethod; - static readonly Func SendReportAsyncDelegate; - - static ChatServiceClient() - { - GenerateExceptionMethod = new Method(MethodType.Unary, "IChatService", "GenerateException", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller); - GenerateExceptionDelegate = _GenerateException; - SendReportAsyncMethod = new Method(MethodType.Unary, "IChatService", "SendReportAsync", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller); - SendReportAsyncDelegate = _SendReportAsync; - } - - ChatServiceClient() - { - } - - public ChatServiceClient(CallInvoker callInvoker, MessagePackSerializerOptions serializerOptions, IClientFilter[] filters) - : base(callInvoker, serializerOptions, filters) - { - } - - protected override MagicOnionClientBase Clone() - { - var clone = new ChatServiceClient(); - clone.host = this.host; - clone.option = this.option; - clone.callInvoker = this.callInvoker; - clone.serializerOptions = this.serializerOptions; - clone.filters = filters; - return clone; - } - - public new IChatService WithHeaders(Metadata headers) - { - return base.WithHeaders(headers); - } - - public new IChatService WithCancellationToken(System.Threading.CancellationToken cancellationToken) - { - return base.WithCancellationToken(cancellationToken); - } - - public new IChatService WithDeadline(System.DateTime deadline) - { - return base.WithDeadline(deadline); - } - - public new IChatService WithHost(string host) - { - return base.WithHost(host); - } - - public new IChatService WithOptions(CallOptions option) - { - return base.WithOptions(option); - } - - static ResponseContext _GenerateException(RequestContext __context) - { - return CreateResponseContext(__context, GenerateExceptionMethod); - } - - public global::MagicOnion.UnaryResult GenerateException(string message) - { - return InvokeAsync("IChatService/GenerateException", message, GenerateExceptionDelegate); - } - static ResponseContext _SendReportAsync(RequestContext __context) - { - return CreateResponseContext(__context, SendReportAsyncMethod); - } - - public global::MagicOnion.UnaryResult SendReportAsync(string message) - { - return InvokeAsync("IChatService/SendReportAsync", message, SendReportAsyncDelegate); - } - } -} - -#pragma warning restore 168 -#pragma warning restore 219 -#pragma warning restore 414 -#pragma warning restore 612 -#pragma warning restore 618 -#pragma warning disable 618 -#pragma warning disable 612 -#pragma warning disable 414 -#pragma warning disable 219 -#pragma warning disable 168 - -namespace ChatApp.Shared.Hubs { - using Grpc.Core; - using Grpc.Core.Logging; - using MagicOnion; - using MagicOnion.Client; - using MessagePack; - using System; - using System.Threading.Tasks; - - [Ignore] - public class ChatHubClient : StreamingHubClientBase, global::ChatApp.Shared.Hubs.IChatHub - { - static readonly Method method = new Method(MethodType.DuplexStreaming, "IChatHub", "Connect", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller); - - protected override Method DuplexStreamingAsyncMethod { get { return method; } } - - readonly global::ChatApp.Shared.Hubs.IChatHub __fireAndForgetClient; - - public ChatHubClient(CallInvoker callInvoker, string host, CallOptions option, MessagePackSerializerOptions serializerOptions, ILogger logger) - : base(callInvoker, host, option, serializerOptions, logger) - { - this.__fireAndForgetClient = new FireAndForgetClient(this); - } - - public global::ChatApp.Shared.Hubs.IChatHub FireAndForget() - { - return __fireAndForgetClient; - } - - protected override void OnBroadcastEvent(int methodId, ArraySegment data) - { - switch (methodId) - { - case -1297457280: // OnJoin - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - receiver.OnJoin(result); break; - } - case 532410095: // OnLeave - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - receiver.OnLeave(result); break; - } - case -552695459: // OnSendMessage - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - receiver.OnSendMessage(result); break; - } - default: - break; - } - } - - protected override void OnResponseEvent(int methodId, object taskCompletionSource, ArraySegment data) - { - switch (methodId) - { - case -733403293: // JoinAsync - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - ((TaskCompletionSource)taskCompletionSource).TrySetResult(result); - break; - } - case 1368362116: // LeaveAsync - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - ((TaskCompletionSource)taskCompletionSource).TrySetResult(result); - break; - } - case -601690414: // SendMessageAsync - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - ((TaskCompletionSource)taskCompletionSource).TrySetResult(result); - break; - } - case 517938971: // GenerateException - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - ((TaskCompletionSource)taskCompletionSource).TrySetResult(result); - break; - } - case -852153394: // SampleMethod - { - var result = MessagePackSerializer.Deserialize(data, serializerOptions); - ((TaskCompletionSource)taskCompletionSource).TrySetResult(result); - break; - } - default: - break; - } - } - - public global::System.Threading.Tasks.Task JoinAsync(global::ChatApp.Shared.MessagePackObjects.JoinRequest request) - { - return WriteMessageWithResponseAsync(-733403293, request); - } - - public global::System.Threading.Tasks.Task LeaveAsync() - { - return WriteMessageWithResponseAsync(1368362116, Nil.Default); - } - - public global::System.Threading.Tasks.Task SendMessageAsync(string message) - { - return WriteMessageWithResponseAsync(-601690414, message); - } - - public global::System.Threading.Tasks.Task GenerateException(string message) - { - return WriteMessageWithResponseAsync(517938971, message); - } - - public global::System.Threading.Tasks.Task SampleMethod(global::System.Collections.Generic.List sampleList, global::System.Collections.Generic.Dictionary sampleDictionary) - { - return WriteMessageWithResponseAsync, global::System.Collections.Generic.Dictionary>, Nil>(-852153394, new DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>(sampleList, sampleDictionary)); - } - - - class FireAndForgetClient : global::ChatApp.Shared.Hubs.IChatHub - { - readonly ChatHubClient __parent; - - public FireAndForgetClient(ChatHubClient parentClient) - { - this.__parent = parentClient; - } - - public global::ChatApp.Shared.Hubs.IChatHub FireAndForget() - { - throw new NotSupportedException(); - } - - public Task DisposeAsync() - { - throw new NotSupportedException(); - } - - public Task WaitForDisconnect() - { - throw new NotSupportedException(); - } - - public global::System.Threading.Tasks.Task JoinAsync(global::ChatApp.Shared.MessagePackObjects.JoinRequest request) - { - return __parent.WriteMessageAsync(-733403293, request); - } - - public global::System.Threading.Tasks.Task LeaveAsync() - { - return __parent.WriteMessageAsync(1368362116, Nil.Default); - } - - public global::System.Threading.Tasks.Task SendMessageAsync(string message) - { - return __parent.WriteMessageAsync(-601690414, message); - } - - public global::System.Threading.Tasks.Task GenerateException(string message) - { - return __parent.WriteMessageAsync(517938971, message); - } - - public global::System.Threading.Tasks.Task SampleMethod(global::System.Collections.Generic.List sampleList, global::System.Collections.Generic.Dictionary sampleDictionary) - { - return __parent.WriteMessageAsync, global::System.Collections.Generic.Dictionary>>(-852153394, new DynamicArgumentTuple, global::System.Collections.Generic.Dictionary>(sampleList, sampleDictionary)); - } - - } - } -} - -#pragma warning restore 168 -#pragma warning restore 219 -#pragma warning restore 414 -#pragma warning restore 618 -#pragma warning restore 612 diff --git a/Assets/Scripts/Generated/MessagePack.Generated.cs b/Assets/Scripts/Generated/MessagePack.Generated.cs deleted file mode 100644 index f9c6de309..000000000 --- a/Assets/Scripts/Generated/MessagePack.Generated.cs +++ /dev/null @@ -1,223 +0,0 @@ -// -// THIS (.cs) FILE IS GENERATED BY MPC(MessagePack-CSharp). DO NOT CHANGE IT. -// - -#pragma warning disable 618 -#pragma warning disable 612 -#pragma warning disable 414 -#pragma warning disable 168 - -#pragma warning disable SA1200 // Using directives should be placed correctly -#pragma warning disable SA1312 // Variable names should begin with lower-case letter -#pragma warning disable SA1649 // File name should match first type name - -namespace MessagePack.Resolvers -{ - using System; - using System.Buffers; - using MessagePack; - - public class GeneratedResolver : global::MessagePack.IFormatterResolver - { - public static readonly global::MessagePack.IFormatterResolver Instance = new GeneratedResolver(); - - private GeneratedResolver() - { - } - - public global::MessagePack.Formatters.IMessagePackFormatter GetFormatter() - { - return FormatterCache.Formatter; - } - - private static class FormatterCache - { - internal static readonly global::MessagePack.Formatters.IMessagePackFormatter Formatter; - - static FormatterCache() - { - var f = GeneratedResolverGetFormatterHelper.GetFormatter(typeof(T)); - if (f != null) - { - Formatter = (global::MessagePack.Formatters.IMessagePackFormatter)f; - } - } - } - } - - internal static class GeneratedResolverGetFormatterHelper - { - private static readonly global::System.Collections.Generic.Dictionary lookup; - - static GeneratedResolverGetFormatterHelper() - { - lookup = new global::System.Collections.Generic.Dictionary(2) - { - { typeof(global::ChatApp.Shared.MessagePackObjects.JoinRequest), 0 }, - { typeof(global::ChatApp.Shared.MessagePackObjects.MessageResponse), 1 }, - }; - } - - internal static object GetFormatter(Type t) - { - int key; - if (!lookup.TryGetValue(t, out key)) - { - return null; - } - - switch (key) - { - case 0: return new MessagePack.Formatters.ChatApp.Shared.MessagePackObjects.JoinRequestFormatter(); - case 1: return new MessagePack.Formatters.ChatApp.Shared.MessagePackObjects.MessageResponseFormatter(); - default: return null; - } - } - } -} - -#pragma warning restore 168 -#pragma warning restore 414 -#pragma warning restore 618 -#pragma warning restore 612 - -#pragma warning restore SA1312 // Variable names should begin with lower-case letter -#pragma warning restore SA1200 // Using directives should be placed correctly -#pragma warning restore SA1649 // File name should match first type name - - - - -// -// THIS (.cs) FILE IS GENERATED BY MPC(MessagePack-CSharp). DO NOT CHANGE IT. -// - -#pragma warning disable 618 -#pragma warning disable 612 -#pragma warning disable 414 -#pragma warning disable 168 - -#pragma warning disable SA1129 // Do not use default value type constructor -#pragma warning disable SA1200 // Using directives should be placed correctly -#pragma warning disable SA1309 // Field names should not begin with underscore -#pragma warning disable SA1312 // Variable names should begin with lower-case letter -#pragma warning disable SA1403 // File may only contain a single namespace -#pragma warning disable SA1649 // File name should match first type name - -namespace MessagePack.Formatters.ChatApp.Shared.MessagePackObjects -{ - using System; - using System.Buffers; - using MessagePack; - - public sealed class JoinRequestFormatter : global::MessagePack.Formatters.IMessagePackFormatter - { - - - public void Serialize(ref MessagePackWriter writer, global::ChatApp.Shared.MessagePackObjects.JoinRequest value, global::MessagePack.MessagePackSerializerOptions options) - { - IFormatterResolver formatterResolver = options.Resolver; - writer.WriteArrayHeader(2); - formatterResolver.GetFormatterWithVerify().Serialize(ref writer, value.RoomName, options); - formatterResolver.GetFormatterWithVerify().Serialize(ref writer, value.UserName, options); - } - - public global::ChatApp.Shared.MessagePackObjects.JoinRequest Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options) - { - if (reader.TryReadNil()) - { - throw new InvalidOperationException("typecode is null, struct not supported"); - } - - IFormatterResolver formatterResolver = options.Resolver; - var length = reader.ReadArrayHeader(); - var __RoomName__ = default(string); - var __UserName__ = default(string); - - for (int i = 0; i < length; i++) - { - var key = i; - - switch (key) - { - case 0: - __RoomName__ = formatterResolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - __UserName__ = formatterResolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - var ____result = new global::ChatApp.Shared.MessagePackObjects.JoinRequest(); - ____result.RoomName = __RoomName__; - ____result.UserName = __UserName__; - return ____result; - } - } - - public sealed class MessageResponseFormatter : global::MessagePack.Formatters.IMessagePackFormatter - { - - - public void Serialize(ref MessagePackWriter writer, global::ChatApp.Shared.MessagePackObjects.MessageResponse value, global::MessagePack.MessagePackSerializerOptions options) - { - IFormatterResolver formatterResolver = options.Resolver; - writer.WriteArrayHeader(2); - formatterResolver.GetFormatterWithVerify().Serialize(ref writer, value.UserName, options); - formatterResolver.GetFormatterWithVerify().Serialize(ref writer, value.Message, options); - } - - public global::ChatApp.Shared.MessagePackObjects.MessageResponse Deserialize(ref MessagePackReader reader, global::MessagePack.MessagePackSerializerOptions options) - { - if (reader.TryReadNil()) - { - throw new InvalidOperationException("typecode is null, struct not supported"); - } - - IFormatterResolver formatterResolver = options.Resolver; - var length = reader.ReadArrayHeader(); - var __UserName__ = default(string); - var __Message__ = default(string); - - for (int i = 0; i < length; i++) - { - var key = i; - - switch (key) - { - case 0: - __UserName__ = formatterResolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - __Message__ = formatterResolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - var ____result = new global::ChatApp.Shared.MessagePackObjects.MessageResponse(); - ____result.UserName = __UserName__; - ____result.Message = __Message__; - return ____result; - } - } -} - -#pragma warning restore 168 -#pragma warning restore 414 -#pragma warning restore 618 -#pragma warning restore 612 - -#pragma warning restore SA1129 // Do not use default value type constructor -#pragma warning restore SA1200 // Using directives should be placed correctly -#pragma warning restore SA1309 // Field names should not begin with underscore -#pragma warning restore SA1312 // Variable names should begin with lower-case letter -#pragma warning restore SA1403 // File may only contain a single namespace -#pragma warning restore SA1649 // File name should match first type name - diff --git a/Assets/Scripts/InitialSettings.cs b/Assets/Scripts/InitialSettings.cs index d6ede0e19..d39907045 100644 --- a/Assets/Scripts/InitialSettings.cs +++ b/Assets/Scripts/InitialSettings.cs @@ -11,8 +11,7 @@ namespace Assets.Scripts { // NOTE: Currently, CompositeResolver doesn't work on Unity IL2CPP build. Use StaticCompositeResolver instead of it. StaticCompositeResolver.Instance.Register( - MagicOnion.Resolvers.MagicOnionResolver.Instance, - MessagePack.Resolvers.GeneratedResolver.Instance, + MathResolver.Instance, BuiltinResolver.Instance, PrimitiveObjectResolver.Instance ); diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/Client/IResponseContext.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/Client/IResponseContext.cs deleted file mode 100644 index f839eda7b..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/Client/IResponseContext.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Grpc.Core; -using MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - -namespace MagicOnion.Client -{ - public interface IResponseContext : IDisposable - { - Task ResponseHeadersAsync { get; } - Status GetStatus(); - Metadata GetTrailers(); - Type ResponseType { get; } - } - - public interface IResponseContext : IResponseContext - { - Task ResponseAsync { get; } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs deleted file mode 100644 index 91341d35b..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs +++ /dev/null @@ -1,132 +0,0 @@ -using Grpc.Core; -using MessagePack; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; - -namespace MagicOnion -{ - /// - /// Wrapped AsyncClientStreamingCall. - /// - public struct ClientStreamingResult : IDisposable - { - internal readonly TResponse rawValue; - internal readonly bool hasRawValue; - readonly AsyncClientStreamingCall inner; - readonly IClientStreamWriter requestStream; - readonly MessagePackSerializerOptions serializerOptions; - - public ClientStreamingResult(TResponse rawValue) - { - this.hasRawValue = true; - this.rawValue = rawValue; - this.inner = null; - this.requestStream = null; - this.serializerOptions = null; - } - - public ClientStreamingResult(AsyncClientStreamingCall inner, IClientStreamWriter requestStream, MessagePackSerializerOptions serializerOptions) - { - this.hasRawValue = false; - this.rawValue = default(TResponse); - this.inner = inner; - this.requestStream = requestStream; - this.serializerOptions = serializerOptions; - } - - async Task Deserialize() - { - var bytes = await inner.ResponseAsync.ConfigureAwait(false); - return MessagePackSerializer.Deserialize(bytes, serializerOptions); - } - - /// - /// Asynchronous call result. - /// - public Task ResponseAsync - { - get - { - if (hasRawValue) - { - return Task.FromResult(rawValue); - } - else - { - return Deserialize(); - } - } - } - - /// - /// Asynchronous access to response headers. - /// - public Task ResponseHeadersAsync - { - get - { - return this.inner.ResponseHeadersAsync; - } - } - - /// - /// Async stream to send streaming requests. - /// - public IClientStreamWriter RequestStream - { - get - { - return this.requestStream; - } - } - - /// - /// Allows awaiting this object directly. - /// - /// - public TaskAwaiter GetAwaiter() - { - return ResponseAsync.GetAwaiter(); - } - - /// - /// Gets the call status if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Status GetStatus() - { - return this.inner.GetStatus(); - } - - /// - /// Gets the call trailing metadata if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Metadata GetTrailers() - { - return this.inner.GetTrailers(); - } - - /// - /// Provides means to cleanup after the call. - /// If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - /// Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - /// As a result, all resources being used by the call should be released eventually. - /// - /// - /// Normally, there is no need for you to dispose the call unless you want to utilize the - /// "Cancel" semantics of invoking Dispose. - /// - public void Dispose() - { - if (this.inner != null) - { - this.inner.Dispose(); - } - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs.meta deleted file mode 100644 index 85a8dad32..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/ClientStreamingResult.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1e92d02db742a454fa25774f217806cb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs deleted file mode 100644 index c48747975..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.Runtime.CompilerServices; -using System.Security; - -namespace MagicOnion.CompilerServices -{ - public struct AsyncUnaryResultMethodBuilder - { - private AsyncTaskMethodBuilder methodBuilder; - private T result; - private bool haveResult; - private bool useBuilder; - - public static AsyncUnaryResultMethodBuilder Create() - { - return new AsyncUnaryResultMethodBuilder() { methodBuilder = AsyncTaskMethodBuilder.Create() }; - } - - public void Start(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine - { - methodBuilder.Start(ref stateMachine); // will provide the right ExecutionContext semantics - } - - public void SetStateMachine(IAsyncStateMachine stateMachine) - { - methodBuilder.SetStateMachine(stateMachine); - } - - public void SetResult(T result) - { - if (useBuilder) - { - methodBuilder.SetResult(result); - } - else - { - this.result = result; - haveResult = true; - } - } - - public void SetException(Exception exception) - { - methodBuilder.SetException(exception); - } - - public UnaryResult Task - { - get - { - if (haveResult) - { - return new UnaryResult(result); - } - else - { - useBuilder = true; - return new UnaryResult(methodBuilder.Task); - } - } - } - - public void AwaitOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) - where TAwaiter : INotifyCompletion - where TStateMachine : IAsyncStateMachine - { - useBuilder = true; - methodBuilder.AwaitOnCompleted(ref awaiter, ref stateMachine); - } - - [SecuritySafeCritical] - public void AwaitUnsafeOnCompleted(ref TAwaiter awaiter, ref TStateMachine stateMachine) - where TAwaiter : ICriticalNotifyCompletion - where TStateMachine : IAsyncStateMachine - { - useBuilder = true; - methodBuilder.AwaitUnsafeOnCompleted(ref awaiter, ref stateMachine); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs.meta deleted file mode 100644 index 936f44948..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices/AsyncUnaryResultMethodBuilder.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 975c42469777f414fae46186971f0dc8 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs deleted file mode 100644 index 1d831c81a..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs +++ /dev/null @@ -1,95 +0,0 @@ -using Grpc.Core; -using MessagePack; -using System; -using System.Threading.Tasks; - -namespace MagicOnion -{ - /// - /// Wrapped AsyncDuplexStreamingCall. - /// - public struct DuplexStreamingResult : IDisposable - { - readonly AsyncDuplexStreamingCall inner; - readonly IClientStreamWriter requestStream; - readonly IAsyncStreamReader responseStream; - - public DuplexStreamingResult(AsyncDuplexStreamingCall inner, IClientStreamWriter requestStream, IAsyncStreamReader responseStream, MessagePackSerializerOptions serializerOptions) - { - this.inner = inner; - this.requestStream = requestStream; - this.responseStream = responseStream; - } - - public AsyncDuplexStreamingCall RawStreamingCall => inner; - - /// - /// Async stream to read streaming responses. - /// - public IAsyncStreamReader ResponseStream - { - get - { - return responseStream; - } - } - - /// - /// Async stream to send streaming requests. - /// - public IClientStreamWriter RequestStream - { - get - { - return requestStream; - } - } - - /// - /// Asynchronous access to response headers. - /// - public Task ResponseHeadersAsync - { - get - { - return this.inner.ResponseHeadersAsync; - } - } - - /// - /// Gets the call status if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Status GetStatus() - { - return this.inner.GetStatus(); - } - - /// - /// Gets the call trailing metadata if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Metadata GetTrailers() - { - return this.inner.GetTrailers(); - } - - /// - /// Provides means to cleanup after the call. - /// If the call has already finished normally (request stream has been completed and response stream has been fully read), doesn't do anything. - /// Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - /// As a result, all resources being used by the call should be released eventually. - /// - /// - /// Normally, there is no need for you to dispose the call unless you want to utilize the - /// "Cancel" semantics of invoking Dispose. - /// - public void Dispose() - { - if (this.inner != null) - { - this.inner.Dispose(); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs.meta deleted file mode 100644 index e1960e3c4..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/DuplexStreamingResult.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 383e96f82d4d6244b951f0fc83d49b63 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs deleted file mode 100644 index 233d5f4c2..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MagicOnion -{ - /// - /// instruction for moc.exe, surround #if symbol with output code. - /// - [AttributeUsage(AttributeTargets.Method | AttributeTargets.Interface, AllowMultiple = false, Inherited = false)] - public class GenerateDefineDebugAttribute : Attribute - { - public GenerateDefineDebugAttribute() - { - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs.meta deleted file mode 100644 index 0b318ca66..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/GenerateDefineDebugAttribute.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ab20e13a7e0b6b644a42dbfa3b44afd3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs deleted file mode 100644 index a2e5a3bfb..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Grpc.Core; -using System; -using System.Threading; - -namespace MagicOnion -{ - // used for MagicOnionEngine assembly scan for boostup analyze speed. - public interface IServiceMarker - { - - } - - public interface IService : IServiceMarker - { - TSelf WithOptions(CallOptions option); - TSelf WithHeaders(Metadata headers); - TSelf WithDeadline(DateTime deadline); - TSelf WithCancellationToken(CancellationToken cancellationToken); - TSelf WithHost(string host); - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs.meta deleted file mode 100644 index beefef708..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/IService.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 56677a2edb7ea644faf4846ad283b007 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs deleted file mode 100644 index abca4c5d9..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Threading.Tasks; - -namespace MagicOnion -{ - public interface IStreamingHubMarker - { - } - - public interface IStreamingHub : IStreamingHubMarker, IServiceMarker - { - TSelf FireAndForget(); // if changed to get-only property, intellisense does not work on VS2017. - Task DisposeAsync(); - Task WaitForDisconnect(); - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs.meta deleted file mode 100644 index ccd0a48a8..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/IStreamingHub.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5d0a5fcfa0834b84ea6ff4d77e478fb9 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs deleted file mode 100644 index 51d77d7b9..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace MagicOnion -{ - /// - /// Don't register on MagicOnionEngine. - /// - [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class,AllowMultiple = false,Inherited = false)] - public class IgnoreAttribute : Attribute - { - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs.meta deleted file mode 100644 index 01d3c6263..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/IgnoreAttribute.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0d13f2ed066fd874b8749ca248f42c51 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef b/Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef deleted file mode 100644 index 994b587b0..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "MagicOnion.Abstractions", - "references": [ - "MessagePack" - ], - "optionalUnityReferences": [], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef.meta deleted file mode 100644 index 9c158d77e..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/MagicOnion.Abstractions.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 62b9d94cd08d5d047b266d42e8684cb8 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs.meta deleted file mode 100644 index 137710ef6..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 33588a48f556fba45b238f907a8ebc38 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs deleted file mode 100644 index 0eb685db5..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace MagicOnion.Server.Hubs -{ - [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)] - public class MethodIdAttribute : Attribute - { - public readonly int MethodId; - - public MethodIdAttribute(int methodId) - { - MethodId = methodId; - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs.meta deleted file mode 100644 index 8377387c0..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server/Hubs/MethodIdAttribute.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1752261f18dd5f749b27216b7cbe81e3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs deleted file mode 100644 index 668201239..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs +++ /dev/null @@ -1,80 +0,0 @@ -using Grpc.Core; -using MessagePack; -using System; -using System.Threading.Tasks; - -namespace MagicOnion -{ - /// - /// Wrapped AsyncServerStreamingCall. - /// - public struct ServerStreamingResult : IDisposable - { - readonly AsyncServerStreamingCall inner; - readonly IAsyncStreamReader responseStream; - - public ServerStreamingResult(AsyncServerStreamingCall inner, IAsyncStreamReader responseStream, MessagePackSerializerOptions serializerOptions) - { - this.inner = inner; - this.responseStream = responseStream; - } - - /// - /// Async stream to read streaming responses. - /// - public IAsyncStreamReader ResponseStream - { - get - { - return responseStream; - } - } - - /// - /// Asynchronous access to response headers. - /// - public Task ResponseHeadersAsync - { - get - { - return this.inner.ResponseHeadersAsync; - } - } - - /// - /// Gets the call status if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Status GetStatus() - { - return this.inner.GetStatus(); - } - - /// - /// Gets the call trailing metadata if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Metadata GetTrailers() - { - return this.inner.GetTrailers(); - } - - /// - /// Provides means to cleanup after the call. - /// If the call has already finished normally (response stream has been fully read), doesn't do anything. - /// Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - /// As a result, all resources being used by the call should be released eventually. - /// - /// - /// Normally, there is no need for you to dispose the call unless you want to utilize the - /// "Cancel" semantics of invoking Dispose. - /// - public void Dispose() - { - if (this.inner != null) - { - this.inner.Dispose(); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs.meta deleted file mode 100644 index 720b34519..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/ServerStreamingResult.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 46a21c751ab9a4f4caf74e806bfe2bea -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs b/Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs deleted file mode 100644 index 1dee9f3f3..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs +++ /dev/null @@ -1,163 +0,0 @@ -using Grpc.Core; -using MagicOnion.Client; -using MagicOnion.CompilerServices; // require this using in AsyncMethodBuilder -using System; -using System.Runtime.CompilerServices; -using System.Threading.Tasks; - -namespace MagicOnion -{ - /// - /// Wrapped AsyncUnaryCall. - /// -#if NON_UNITY || (CSHARP_7_OR_LATER || (UNITY_2018_3_OR_NEWER && (NET_STANDARD_2_0 || NET_4_6))) - [AsyncMethodBuilder(typeof(AsyncUnaryResultMethodBuilder<>))] -#endif - public struct UnaryResult - { - internal readonly bool hasRawValue; // internal - internal readonly TResponse rawValue; // internal - internal readonly Task rawTaskValue; // internal - - readonly Task> response; - - public UnaryResult(TResponse rawValue) - { - this.hasRawValue = true; - this.rawValue = rawValue; - this.rawTaskValue = null; - this.response = null; - } - - public UnaryResult(Task rawTaskValue) - { - this.hasRawValue = true; - this.rawValue = default(TResponse); - this.rawTaskValue = rawTaskValue; - this.response = null; - } - - public UnaryResult(Task> response) - { - this.hasRawValue = false; - this.rawValue = default(TResponse); - this.rawTaskValue = null; - this.response = response; - } - - /// - /// Asynchronous call result. - /// - public Task ResponseAsync - { - get - { - if (!hasRawValue) - { - return UnwrapResponse(); - } - else if (rawTaskValue != null) - { - return rawTaskValue; - } - else - { - return Task.FromResult(rawValue); - } - } - } - - /// - /// Asynchronous access to response headers. - /// - public Task ResponseHeadersAsync - { - get - { - return UnwrapResponseHeaders(); - } - } - - async Task UnwrapResponse() - { - var ctx = await response.ConfigureAwait(false); - return await ctx.ResponseAsync.ConfigureAwait(false); - } - - async Task UnwrapResponseHeaders() - { - var ctx = await response.ConfigureAwait(false); - return await ctx.ResponseHeadersAsync.ConfigureAwait(false); - } - - async void UnwrapDispose() - { - try - { - var ctx = await response.ConfigureAwait(false); - ctx.Dispose(); - } - catch - { - } - } - - IResponseContext TryUnwrap() - { - if (!response.IsCompleted) - { - throw new InvalidOperationException("UnaryResult request is not yet completed, please await before call this."); - } - - return response.Result; - } - - /// - /// Allows awaiting this object directly. - /// - public TaskAwaiter GetAwaiter() - { - return ResponseAsync.GetAwaiter(); - } - - /// - /// Gets the call status if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Status GetStatus() - { - return TryUnwrap().GetStatus(); - } - - /// - /// Gets the call trailing metadata if the call has already finished. - /// Throws InvalidOperationException otherwise. - /// - public Metadata GetTrailers() - { - return TryUnwrap().GetTrailers(); - } - - /// - /// Provides means to cleanup after the call. - /// If the call has already finished normally (request stream has been completed and call result has been received), doesn't do anything. - /// Otherwise, requests cancellation of the call which should terminate all pending async operations associated with the call. - /// As a result, all resources being used by the call should be released eventually. - /// - /// - /// Normally, there is no need for you to dispose the call unless you want to utilize the - /// "Cancel" semantics of invoking Dispose. - /// - public void Dispose() - { - if (!response.IsCompleted) - { - UnwrapDispose(); - } - else - { - response.Result.Dispose(); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs.meta b/Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs.meta deleted file mode 100644 index 74faf56bd..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/UnaryResult.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cc0fe0c16ad63fd489a131a76e925b08 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Unity.meta b/Assets/Scripts/NIH/MagicOnion.Unity.meta deleted file mode 100644 index fbc5d36a0..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Unity.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 54a7a4436d8b4f54c908f4bdc47a3d62 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs b/Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs deleted file mode 100644 index 0a79e520f..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Grpc.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace MagicOnion -{ - public static class ChannelExtensions - { - /// - /// Safety way for subscribe streaming events. - /// - public static void RegisterStreamingSubscription(this Channel channel, IDisposable subscription) - { - channel.ShutdownToken.Register(() => subscription.Dispose()); - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs.meta b/Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs.meta deleted file mode 100644 index 5f149ce92..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Unity/ChannelExtensions.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 88d6659672dcc9e408775f1fcaa6dea3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef b/Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef deleted file mode 100644 index 22efeb994..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "MagicOnion.Unity", - "references": [ - "MagicOnion.Abstractions", - "MagicOnion" - ], - "optionalUnityReferences": [], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef.meta b/Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef.meta deleted file mode 100644 index 54059868b..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Unity/MagicOnion.Unity.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 350d0af80fb7b7947a59de66ab477547 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs b/Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs deleted file mode 100644 index 5b17c4ca5..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs +++ /dev/null @@ -1,157 +0,0 @@ -using Grpc.Core.Logging; -using System; - -namespace MagicOnion -{ - public class UnityDebugLogger : ILogger - { - readonly Type forType; - readonly string forTypeString; - readonly bool errorToWarn = true; // default is true(gRPC internal log show to warn) - - public UnityDebugLogger() - : this(null) - { - } - - public UnityDebugLogger(bool errorToWarn) - : this(null) - { - this.errorToWarn = errorToWarn; - } - - protected UnityDebugLogger(Type forType) - { - this.forType = forType; - if (forType != null) - { - var namespaceStr = forType.Namespace ?? ""; - if (namespaceStr.Length > 0) - { - namespaceStr += "."; - } - this.forTypeString = namespaceStr + forType.Name + " "; - } - else - { - this.forTypeString = ""; - } - } - - /// - /// Returns a logger associated with the specified type. - /// - public virtual ILogger ForType() - { - if (typeof(T) == forType) - { - return this; - } - return new UnityDebugLogger(typeof(T)); - } - - /// Logs a message with severity Debug. - public void Debug(string message) - { - UnityEngine.Debug.Log(BuildMessage(message)); - } - - /// Logs a formatted message with severity Debug. - public void Debug(string format, params object[] formatArgs) - { - UnityEngine.Debug.Log(BuildMessage(format, formatArgs)); - } - - /// Logs a message with severity Info. - public void Info(string message) - { - UnityEngine.Debug.Log(BuildMessage(message)); - } - - /// Logs a formatted message with severity Info. - public void Info(string format, params object[] formatArgs) - { - UnityEngine.Debug.Log(BuildMessage(format, formatArgs)); - } - - /// Logs a message with severity Warning. - public void Warning(string message) - { - UnityEngine.Debug.LogWarning(BuildMessage(message)); - } - - /// Logs a formatted message with severity Warning. - public void Warning(string format, params object[] formatArgs) - { - UnityEngine.Debug.LogWarning(BuildMessage(format, formatArgs)); - } - - /// Logs a message and an associated exception with severity Warning. - public void Warning(Exception exception, string message) - { - Warning(message + " " + exception); - } - - /// Logs a message with severity Error. - public void Error(string message) - { - if (errorToWarn) - { - UnityEngine.Debug.LogWarning(BuildMessage(message)); - } - else - { - UnityEngine.Debug.LogError(BuildMessage(message)); - } - } - - /// Logs a formatted message with severity Error. - public void Error(string format, params object[] formatArgs) - { - if (errorToWarn) - { - UnityEngine.Debug.LogWarning(BuildMessage(format, formatArgs)); - } - else - { - UnityEngine.Debug.LogError(BuildMessage(format, formatArgs)); - } - } - - /// Logs a message and an associated exception with severity Error. - public void Error(Exception exception, string message) - { - Error(message + " " + exception); - } - - /// Gets the type associated with this logger. - protected Type AssociatedType - { - get { return forType; } - } - - string BuildMessage(string message) - { - if (forType != null) - { - return forTypeString + message; - } - else - { - return message; - } - } - - string BuildMessage(string format, object[] args) - { - if (forType != null) - { - return forTypeString + string.Format(format, args); - } - else - { - return string.Format(format, args); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs.meta b/Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs.meta deleted file mode 100644 index 728e9ab29..000000000 --- a/Assets/Scripts/NIH/MagicOnion.Unity/UnityDebugLogger.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 5a9b20988ba163244a107c806f58c14f -timeCreated: 1482380673 -licenseType: Pro -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.meta b/Assets/Scripts/NIH/MagicOnion.meta deleted file mode 100644 index 61b6f532f..000000000 --- a/Assets/Scripts/NIH/MagicOnion.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1d7d16d9066daaf47a8b3c4af6ecfed3 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/AsyncLock.cs b/Assets/Scripts/NIH/MagicOnion/AsyncLock.cs deleted file mode 100644 index 67aae46b5..000000000 --- a/Assets/Scripts/NIH/MagicOnion/AsyncLock.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace MagicOnion -{ - public class AsyncLock - { - readonly SemaphoreSlim semaphore; - -#if NON_UNITY - public static readonly ValueTask EmptyLock = new ValueTask(new LockReleaser(null)); -#endif - - public AsyncLock() - { - this.semaphore = new SemaphoreSlim(1, 1); - } - -#if NON_UNITY - public async ValueTask LockAsync() -#else - public async Task LockAsync() -#endif - { - await semaphore.WaitAsync().ConfigureAwait(false); - return new LockReleaser(semaphore); - } - - public struct LockReleaser : IDisposable - { - readonly SemaphoreSlim semaphore; - - public LockReleaser(SemaphoreSlim semaphore) - { - this.semaphore = semaphore; - } - - public void Dispose() - { - semaphore?.Release(); - } - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/AsyncLock.cs.meta b/Assets/Scripts/NIH/MagicOnion/AsyncLock.cs.meta deleted file mode 100644 index c550f033d..000000000 --- a/Assets/Scripts/NIH/MagicOnion/AsyncLock.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9a1fdda349d00b84596da99fbda0426d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs b/Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs deleted file mode 100644 index b5e519973..000000000 --- a/Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Grpc.Core; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; - -namespace MagicOnion -{ - public static class AsyncStreamReaderExtensions - { - public static async Task ForEachAsync(this IAsyncStreamReader stream, Action action, CancellationToken cancellation = default(CancellationToken)) - { - using (stream as IDisposable) - { - while (!cancellation.IsCancellationRequested && await stream.MoveNext(cancellation)) - { - action(stream.Current); - } - } - } - - public static async Task ForEachAsync(this IAsyncStreamReader stream, Func asyncAction, CancellationToken cancellation = default(CancellationToken)) - { - using (stream as IDisposable) - { - while (!cancellation.IsCancellationRequested && await stream.MoveNext(cancellation)) - { - await asyncAction(stream.Current); - } - } - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs.meta b/Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs.meta deleted file mode 100644 index 174ca9deb..000000000 --- a/Assets/Scripts/NIH/MagicOnion/AsyncStreamReaderExtensions.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: eccd314ac5c4f71499ebad65fd6d3ecf -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client.meta b/Assets/Scripts/NIH/MagicOnion/Client.meta deleted file mode 100644 index 577dc994f..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f41f5b00e235ac44d8d3aaea561952a3 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs b/Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs deleted file mode 100644 index 8559a04d2..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs +++ /dev/null @@ -1,213 +0,0 @@ -using Grpc.Core; -using MessagePack; -using System; -using System.Collections.Generic; -using System.Text; -using System.Threading.Tasks; - -namespace MagicOnion.Client -{ - public interface IClientFilter - { - ValueTask SendAsync(RequestContext context, Func> next); - } - - public abstract class RequestContext - { - static readonly Func DefaultMutator = xs => xs; - - public string MethodPath { get; } - public CallOptions CallOptions { get; } - public Type ResponseType { get; } - public abstract Type RequestType { get; } - public Func RequestMutator { get; private set; } - public Func ResponseMutator { get; private set; } - - Dictionary items; - public IDictionary Items - { - get - { - if (items == null) - { - items = new Dictionary(); - } - return items; - } - } - - // internal use to avoid lambda capture. - internal MagicOnionClientBase Client { get; } - internal IClientFilter[] Filters { get; } - internal Func RequestMethod { get; } - - internal RequestContext(MagicOnionClientBase client, string methodPath, CallOptions callOptions, Type responseType, IClientFilter[] filters, Func requestMethod) - { - this.Client = client; - this.MethodPath = methodPath; - this.CallOptions = callOptions; - this.ResponseType = responseType; - this.Filters = filters; - this.RequestMethod = requestMethod; - this.RequestMutator = DefaultMutator; - this.ResponseMutator = DefaultMutator; - } - - public void SetRequestMutator(Func mutator) - { - this.RequestMutator = mutator; - } - - public void SetResponseMutator(Func mutator) - { - this.ResponseMutator = mutator; - } - } - - public class RequestContext : RequestContext - { - public T Request { get; } - public override Type RequestType => typeof(T); - - public RequestContext(T request, MagicOnionClientBase client, string methodPath, CallOptions callOptions, Type responseType, IClientFilter[] filters, Func requestMethod) - : base(client, methodPath, callOptions, responseType, filters, requestMethod) - { - this.Request = request; - } - } - - public abstract class ResponseContext : IResponseContext - { - static readonly Func DefaultMutator = xs => xs; - - public abstract Task ResponseHeadersAsync { get; } - public abstract Status GetStatus(); - public abstract Metadata GetTrailers(); - public abstract void Dispose(); - public abstract Type ResponseType { get; } - public Func ResponseMutator { get; private set; } - - public abstract Task WaitResponseAsync(); - - public ResponseContext As() - { - return this as ResponseContext; - } - - public Task GetResponseAs() - { - var t = this as ResponseContext; - if (t == null) return Task.FromResult(default(T)); - - return t.ResponseAsync; - } - - public ResponseContext() - { - this.ResponseMutator = DefaultMutator; - } - - public void SetResponseMutator(Func mutator) - { - this.ResponseMutator = mutator; - } - } - - public sealed class ResponseContext : ResponseContext, IResponseContext - { - readonly AsyncUnaryCall inner; - readonly MessagePackSerializerOptions serializerOptions; - readonly bool isMock; - bool deserialized; - - T responseObject; // cache value. - - // mock - readonly Metadata trailers; - readonly Metadata responseHeaders; - readonly Status status; - - public ResponseContext(AsyncUnaryCall inner, MessagePackSerializerOptions serializerOptions) - : base() - { - this.isMock = false; - this.inner = inner; - this.serializerOptions = serializerOptions; - } - - public ResponseContext(T responseObject) - : this(responseObject, new Metadata(), new Metadata(), Status.DefaultSuccess) - { - } - - public ResponseContext(T responseObject, Metadata trailers, Metadata responseHeaders, Status status) - : base() - { - this.isMock = true; - this.responseObject = responseObject; - this.trailers = trailers; - this.responseHeaders = responseHeaders; - this.status = status; - } - - async Task Deserialize() - { - if (deserialized) - { - return responseObject; - } - else - { - var bytes = await inner.ResponseAsync.ConfigureAwait(false); - responseObject = MessagePackSerializer.Deserialize(this.ResponseMutator(bytes), serializerOptions); - deserialized = true; - return responseObject; - } - } - - public Task ResponseAsync => !isMock ? Deserialize() : Task.FromResult(responseObject); - - public override async Task WaitResponseAsync() - { - await ResponseAsync; - return this; - } - - public override Type ResponseType => typeof(T); - - public override Task ResponseHeadersAsync => !isMock ? inner.ResponseHeadersAsync : Task.FromResult(responseHeaders); - - public override void Dispose() - { - if (!isMock) - { - inner.Dispose(); - } - } - - public override Status GetStatus() - { - return !isMock ? inner.GetStatus() : status; - } - - public override Metadata GetTrailers() - { - return !isMock ? inner.GetTrailers() : trailers; - } - - public ResponseContext WithNewResult(T result) - { - if (isMock) - { - return new ResponseContext(result, trailers, responseHeaders, status); - } - else - { - var newContext = new ResponseContext(inner, serializerOptions); - newContext.deserialized = true; - newContext.responseObject = result; - return newContext; - } - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs.meta deleted file mode 100644 index 043460c04..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/ClientFilter.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d0190394f8c415b4b84aa1b95b993369 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs b/Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs deleted file mode 100644 index aac28db06..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs +++ /dev/null @@ -1,628 +0,0 @@ -#if NON_UNITY || !NET_STANDARD_2_0 - -using Grpc.Core; -using MagicOnion.Utils; -using MessagePack; -using System; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Threading; -using System.Threading.Tasks; - -namespace MagicOnion.Client -{ -#if ENABLE_SAVE_ASSEMBLY - public -#else - internal -#endif - static class DynamicClientAssemblyHolder - { - public const string ModuleName = "MagicOnion.Client.DynamicClient"; - - readonly static DynamicAssembly assembly; - public static DynamicAssembly Assembly { get { return assembly; } } - - static DynamicClientAssemblyHolder() - { - assembly = new DynamicAssembly(ModuleName); - } - -#if ENABLE_SAVE_ASSEMBLY - - public static AssemblyBuilder Save() - { - return assembly.Save(); - } - -#endif - } - -#if ENABLE_SAVE_ASSEMBLY - public -#else - internal -#endif - static class DynamicClientBuilder - where T : IService - { - public static readonly Type ClientType; - static readonly Type bytesMethod = typeof(Method<,>).MakeGenericType(new[] { typeof(byte[]), typeof(byte[]) }); - static readonly FieldInfo throughMarshaller = typeof(MagicOnionMarshallers).GetField("ThroughMarshaller", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); - static readonly FieldInfo nilBytes = typeof(MagicOnionMarshallers).GetField("UnsafeNilBytes", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); - static readonly MethodInfo callMessagePackSerialize = typeof(MessagePackSerializer).GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static) - .First(x => x.Name == "Serialize" && x.GetParameters().Length == 3 && x.ReturnType == typeof(byte[])); - static readonly MethodInfo callCancellationTokenNone = typeof(CancellationToken).GetProperty("None", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static).GetGetMethod(); - - static DynamicClientBuilder() - { - var t = typeof(T); - var ti = t.GetTypeInfo(); - if (!ti.IsInterface) throw new Exception("Client Proxy only allows interface. Type:" + ti.Name); - - var asm = DynamicClientAssemblyHolder.Assembly; - var methodDefinitions = SearchDefinitions(t); - - var parentType = typeof(MagicOnionClientBase<>).MakeGenericType(t); - var typeBuilder = asm.DefineType($"{DynamicClientAssemblyHolder.ModuleName}.{ti.FullName}Client", TypeAttributes.Public, parentType, new Type[] { t }); - - // Set `IgnoreAttribute` to the generated client type. Hides generated-types from building MagicOnion service definitions. - typeBuilder.SetCustomAttribute(new CustomAttributeBuilder(typeof(IgnoreAttribute).GetConstructor(Array.Empty()), Array.Empty())); - - DefineStaticFields(typeBuilder, methodDefinitions); - DefineStaticConstructor(typeBuilder, t, methodDefinitions); - var emptyCtor = DefineConstructors(typeBuilder, methodDefinitions); - DefineMethods(typeBuilder, t, methodDefinitions, emptyCtor); - - ClientType = typeBuilder.CreateTypeInfo().AsType(); - } - - static MethodDefinition[] SearchDefinitions(Type interfaceType) - { - return interfaceType - .GetInterfaces() - .Concat(new[] { interfaceType }) - .SelectMany(x => x.GetMethods()) - .Where(x => - { - var methodInfo = x; - if (methodInfo.IsSpecialName && (methodInfo.Name.StartsWith("set_") || methodInfo.Name.StartsWith("get_"))) return false; - if (methodInfo.GetCustomAttribute(false) != null) return false; // ignore - - var methodName = methodInfo.Name; - if (methodName == "Equals" - || methodName == "GetHashCode" - || methodName == "GetType" - || methodName == "ToString" - || methodName == "WithOptions" - || methodName == "WithHeaders" - || methodName == "WithDeadline" - || methodName == "WithCancellationToken" - || methodName == "WithHost" - ) - { - return false; - } - return true; - }) - .Where(x => !x.IsSpecialName) - .Select(x => new MethodDefinition - { - ServiceType = interfaceType, - MethodInfo = x, - }) - .ToArray(); - } - - static void DefineStaticFields(TypeBuilder typeBuilder, MethodDefinition[] definitions) - { - foreach (var item in definitions) - { - item.FieldMethod = typeBuilder.DefineField(item.MethodInfo.Name + "Method", bytesMethod, FieldAttributes.Private | FieldAttributes.Static); - item.ResponseType = UnwrapResponseType(item, out item.MethodType, out item.ResponseIsTask, out item.RequestType); - - if (item.RequestType == null) - { - item.RequestType = MagicOnionMarshallers.CreateRequestType(item.MethodInfo.GetParameters()); - } - } - } - - static void DefineStaticConstructor(TypeBuilder typeBuilder, Type interfaceType, MethodDefinition[] definitions) - { - var cctor = typeBuilder.DefineConstructor(MethodAttributes.Static, CallingConventions.Standard, Type.EmptyTypes); - var il = cctor.GetILGenerator(); - - for (int i = 0; i < definitions.Length; i++) - { - var def = definitions[i]; - - il.EmitLdc_I4((int)def.MethodType); - il.Emit(OpCodes.Ldstr, def.ServiceType.Name); - il.Emit(OpCodes.Ldstr, def.MethodInfo.Name); - il.Emit(OpCodes.Ldsfld, throughMarshaller); - il.Emit(OpCodes.Ldsfld, throughMarshaller); - il.Emit(OpCodes.Newobj, bytesMethod.GetConstructors()[0]); - il.Emit(OpCodes.Stsfld, def.FieldMethod); - - if (def.MethodType == MethodType.Unary) - { - DefineUnaryRequestDelegate(il, typeBuilder, interfaceType, def); - } - } - - il.Emit(OpCodes.Ret); - } - - static void DefineUnaryRequestDelegate(ILGenerator staticContructorGenerator, TypeBuilder typeBuilder, Type interfaceType, MethodDefinition definition) - { - // static ResponseContext _Method(RequestContext context); - MethodBuilder method; - { - method = typeBuilder.DefineMethod("_" + definition.MethodInfo.Name, MethodAttributes.Private | MethodAttributes.Static, - typeof(ResponseContext), - new[] { typeof(RequestContext) }); - var il = method.GetILGenerator(); - - // CreateResponseContext(Context, Method); - var createMethod = typeof(MagicOnionClientBase) - .GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static) - .Where(x => x.Name == "CreateResponseContext") - .OrderByDescending(x => x.GetGenericArguments().Length) - .First() - .MakeGenericMethod(definition.RequestType, definition.ResponseType); - - il.Emit(OpCodes.Ldarg_0); // context - il.Emit(OpCodes.Ldsfld, definition.FieldMethod); // method - il.Emit(OpCodes.Call, createMethod); - il.Emit(OpCodes.Ret); - } - - // static readonly Func methodDelegate = _Method; - { - definition.UnaryRequestDelegate = typeBuilder.DefineField(definition.MethodInfo.Name + "Delegate", typeof(Func), FieldAttributes.Private | FieldAttributes.Static); - - var il = staticContructorGenerator; - il.Emit(OpCodes.Ldnull); - il.Emit(OpCodes.Ldftn, method); - il.Emit(OpCodes.Newobj, typeof(Func).GetConstructors()[0]); - il.Emit(OpCodes.Stsfld, definition.UnaryRequestDelegate); - } - } - - static ConstructorInfo DefineConstructors(TypeBuilder typeBuilder, MethodDefinition[] definitions) - { - ConstructorInfo emptyCtor; - // .ctor() - { - var ctor = typeBuilder.DefineConstructor(MethodAttributes.Private, CallingConventions.Standard, Type.EmptyTypes); - var il = ctor.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Call, typeBuilder.BaseType.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null)); - il.Emit(OpCodes.Ret); - - emptyCtor = ctor; - } - - // .ctor(CallInvoker, MessagePackSerializerOptions, IClientFilter[]):base(callInvoker, resolver, clientFilters) - { - var ctor = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, new[] { typeof(CallInvoker), typeof(MessagePackSerializerOptions), typeof(IClientFilter[]) }); - var il = ctor.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Ldarg_2); - il.Emit(OpCodes.Ldarg_3); - il.Emit(OpCodes.Call, typeBuilder.BaseType.GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, new[] { typeof(CallInvoker), typeof(MessagePackSerializerOptions), typeof(IClientFilter[]) }, null)); - il.Emit(OpCodes.Ret); - } - - return emptyCtor; - } - - static void DefineMethods(TypeBuilder typeBuilder, Type interfaceType, MethodDefinition[] definitions, ConstructorInfo emptyCtor) - { - var filedHolderType = typeof(MagicOnionClientBase); - var baseType = typeof(MagicOnionClientBase<>).MakeGenericType(interfaceType); - var hostField = filedHolderType.GetField("host", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - var optionField = filedHolderType.GetField("option", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - var invokerField = filedHolderType.GetField("callInvoker", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - var serializerOptionsField = filedHolderType.GetField("serializerOptions", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - var filtersField = filedHolderType.GetField("filters", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - - // Clone - { - var method = typeBuilder.DefineMethod("Clone", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - typeof(MagicOnionClientBase<>).MakeGenericType(interfaceType), - Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Newobj, emptyCtor); - - il.Emit(OpCodes.Dup); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, hostField); - il.Emit(OpCodes.Stfld, hostField); - - il.Emit(OpCodes.Dup); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, optionField); - il.Emit(OpCodes.Stfld, optionField); - - il.Emit(OpCodes.Dup); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, invokerField); - il.Emit(OpCodes.Stfld, invokerField); - - il.Emit(OpCodes.Dup); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Stfld, serializerOptionsField); - - il.Emit(OpCodes.Dup); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, filtersField); - il.Emit(OpCodes.Stfld, filtersField); - - il.Emit(OpCodes.Ret); - } - // Overrides - { - // TSelf WithOption(CallOptions option) - { - var method = typeBuilder.DefineMethod("WithOptions", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - interfaceType, - new[] { typeof(CallOptions) }); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Call, baseType.GetMethod("WithOptions", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); - il.Emit(OpCodes.Ret); - } - // TSelf WithHeaders(Metadata headers); - { - var method = typeBuilder.DefineMethod("WithHeaders", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - interfaceType, - new[] { typeof(Metadata) }); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Call, baseType.GetMethod("WithHeaders", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); - il.Emit(OpCodes.Ret); - } - // TSelf WithDeadline(DateTime deadline); - { - var method = typeBuilder.DefineMethod("WithDeadline", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - interfaceType, - new[] { typeof(DateTime) }); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Call, baseType.GetMethod("WithDeadline", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); - il.Emit(OpCodes.Ret); - } - // TSelf WithCancellationToken(CancellationToken cancellationToken); - { - var method = typeBuilder.DefineMethod("WithCancellationToken", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - interfaceType, - new[] { typeof(CancellationToken) }); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Call, baseType.GetMethod("WithCancellationToken", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); - il.Emit(OpCodes.Ret); - } - // TSelf WithHost(string host); - { - var method = typeBuilder.DefineMethod("WithHost", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - interfaceType, - new[] { typeof(string) }); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Call, baseType.GetMethod("WithHost", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); - il.Emit(OpCodes.Ret); - } - } - // Proxy Methods - for (int i = 0; i < definitions.Length; i++) - { - var def = definitions[i]; - var parameters = def.MethodInfo.GetParameters().Select(x => x.ParameterType).ToArray(); - - var method = typeBuilder.DefineMethod(def.MethodInfo.Name, MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - def.MethodInfo.ReturnType, - parameters); - var il = method.GetILGenerator(); - - switch (def.MethodType) - { - case MethodType.Unary: - { - // base.InvokeAsync/InvokeTaskAsync(string path, TRequest request, Func requestMethod) - - // this. - il.Emit(OpCodes.Ldarg_0); - - // path - il.Emit(OpCodes.Ldstr, def.Path); - - // create request - for (int j = 0; j < parameters.Length; j++) - { - il.Emit(OpCodes.Ldarg, j + 1); - } - if (parameters.Length == 0) - { - // use empty byte[0] - il.Emit(OpCodes.Ldsfld, nilBytes); - } - else if (parameters.Length == 1) - { - // already loaded parameter. - } - else - { - // call new DynamicArgumentTuple - il.Emit(OpCodes.Newobj, def.RequestType.GetConstructors()[0]); - } - - // requestMethod - il.Emit(OpCodes.Ldsfld, def.UnaryRequestDelegate); - - // InvokeAsync/InvokeTaskAsync - var invokeMethod = def.ResponseIsTask - ? baseType.GetMethod("InvokeTaskAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.Instance) - : baseType.GetMethod("InvokeAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.FlattenHierarchy | BindingFlags.Instance); - invokeMethod = invokeMethod.MakeGenericMethod(def.RequestType, def.ResponseType); - il.Emit(OpCodes.Callvirt, invokeMethod); - } - - break; - case MethodType.ServerStreaming: - { - il.DeclareLocal(typeof(byte[])); // request - il.DeclareLocal(typeof(AsyncServerStreamingCall)); - - // create request - for (int j = 0; j < parameters.Length; j++) - { - il.Emit(OpCodes.Ldarg, j + 1); - } - if (parameters.Length == 0) - { - // use empty byte[0] - il.Emit(OpCodes.Ldsfld, nilBytes); - } - else if (parameters.Length == 1) - { - // already loaded parameter. - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Call, callCancellationTokenNone); - il.Emit(OpCodes.Call, callMessagePackSerialize.MakeGenericMethod(def.RequestType)); - } - else - { - // call new DynamicArgumentTuple - il.Emit(OpCodes.Newobj, def.RequestType.GetConstructors()[0]); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Call, callCancellationTokenNone); - il.Emit(OpCodes.Call, callMessagePackSerialize.MakeGenericMethod(def.RequestType)); - } - il.Emit(OpCodes.Stloc_0); - - // create ***Result - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, invokerField); - il.Emit(OpCodes.Ldsfld, def.FieldMethod); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, hostField); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, optionField); - il.Emit(OpCodes.Ldloc_0); - il.Emit(OpCodes.Callvirt, typeof(CallInvoker).GetMethod("AsyncServerStreamingCall").MakeGenericMethod(typeof(byte[]), typeof(byte[]))); - il.Emit(OpCodes.Stloc_1); - - // create return result - // new ServerStreamingResult( - - // inner, - il.Emit(OpCodes.Ldloc_1); - - // new MarshallingAsyncStreamReader(inner.ResponseStream, this.resolver), - il.Emit(OpCodes.Ldloc_1); - il.Emit(OpCodes.Call, typeof(AsyncServerStreamingCall).GetProperty("ResponseStream").GetMethod); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Newobj, typeof(MarshallingAsyncStreamReader<>).MakeGenericType(def.ResponseType).GetConstructors().Single()); - - // this.resolver - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - - // ); - - var resultType = typeof(ServerStreamingResult<>).MakeGenericType(def.ResponseType); - il.Emit(OpCodes.Newobj, resultType.GetConstructors()[0]); - if (def.ResponseIsTask) - { - il.Emit(OpCodes.Call, typeof(Task).GetMethod("FromResult").MakeGenericMethod(resultType)); - } - } - break; - case MethodType.ClientStreaming: - case MethodType.DuplexStreaming: - if (def.MethodType == MethodType.ClientStreaming) - { - il.DeclareLocal(typeof(AsyncClientStreamingCall)); // callResult - } - else - { - il.DeclareLocal(typeof(AsyncDuplexStreamingCall)); // callResult - } - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, invokerField); - il.Emit(OpCodes.Ldsfld, def.FieldMethod); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, hostField); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, optionField); - if (def.MethodType == MethodType.ClientStreaming) - { - il.Emit(OpCodes.Callvirt, typeof(CallInvoker).GetMethod("AsyncClientStreamingCall").MakeGenericMethod(typeof(byte[]), typeof(byte[]))); - } - else - { - il.Emit(OpCodes.Callvirt, typeof(CallInvoker).GetMethod("AsyncDuplexStreamingCall").MakeGenericMethod(typeof(byte[]), typeof(byte[]))); - } - il.Emit(OpCodes.Stloc_0); - - // create return result - Type resultType2; - if (def.MethodType == MethodType.ClientStreaming) - { - // new ClientStreamingResult( - // inner, - il.Emit(OpCodes.Ldloc_0); - - // new MarshallingClientStreamWriter()(inner.RequestStream, this.resolver), - il.Emit(OpCodes.Ldloc_0); - il.Emit(OpCodes.Call, typeof(AsyncClientStreamingCall).GetProperty("RequestStream").GetMethod); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Newobj, (typeof(MarshallingClientStreamWriter<>).MakeGenericType(def.RequestType).GetConstructors().Single())); - - // this.resolver - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - - // ); - resultType2 = typeof(ClientStreamingResult<,>).MakeGenericType(def.RequestType, def.ResponseType); - il.Emit(OpCodes.Newobj, resultType2.GetConstructors().OrderBy(x => x.GetParameters().Length).Last()); - } - else - { - // new DuplexStreamingResult( - // inner, - il.Emit(OpCodes.Ldloc_0); - - // new MarshallingClientStreamWriter()(inner.RequestStream, this.resolver), - il.Emit(OpCodes.Ldloc_0); - il.Emit(OpCodes.Call, typeof(AsyncDuplexStreamingCall).GetProperty("RequestStream").GetMethod); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Newobj, (typeof(MarshallingClientStreamWriter<>).MakeGenericType(def.RequestType).GetConstructors().Single())); - - // new MarshallingAsyncStreamReader()(inner.ResponseStream, this.resolver), - il.Emit(OpCodes.Ldloc_0); - il.Emit(OpCodes.Call, typeof(AsyncDuplexStreamingCall).GetProperty("ResponseStream").GetMethod); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Newobj, (typeof(MarshallingAsyncStreamReader<>).MakeGenericType(def.ResponseType).GetConstructors().Single())); - - // this.resolver - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - - // ); - resultType2 = typeof(DuplexStreamingResult<,>).MakeGenericType(def.RequestType, def.ResponseType); - il.Emit(OpCodes.Newobj, resultType2.GetConstructors()[0]); - } - - if (def.ResponseIsTask) - { - il.Emit(OpCodes.Call, typeof(Task).GetMethod("FromResult").MakeGenericMethod(resultType2)); - } - break; - default: - throw new InvalidOperationException("Not supported method type:" + def.MethodType); - } - - il.Emit(OpCodes.Ret); - } - } - - static Type UnwrapResponseType(MethodDefinition def, out MethodType methodType, out bool responseIsTask, out Type requestTypeIfExists) - { - //if (!t.IsGenericType) throw new Exception($"Invalid ResponseType, Path:{def.Path} Type:{t.Name}"); - - var t = def.MethodInfo.ReturnType; - if (!t.GetTypeInfo().IsGenericType) throw new Exception($"Invalid return type, path:{def.Path} type:{t.Name}"); - - // Task> - if (t.GetGenericTypeDefinition() == typeof(Task<>)) - { - responseIsTask = true; - t = t.GetGenericArguments()[0]; - } - else - { - responseIsTask = false; - } - - // Unary - var returnType = t.GetGenericTypeDefinition(); - if (returnType == typeof(UnaryResult<>)) - { - methodType = MethodType.Unary; - requestTypeIfExists = null; - return t.GetGenericArguments()[0]; - } - else if (returnType == typeof(ClientStreamingResult<,>)) - { - methodType = MethodType.ClientStreaming; - var genArgs = t.GetGenericArguments(); - requestTypeIfExists = genArgs[0]; - return genArgs[1]; - } - else if (returnType == typeof(ServerStreamingResult<>)) - { - methodType = MethodType.ServerStreaming; - requestTypeIfExists = null; - return t.GetGenericArguments()[0]; - } - else if (returnType == typeof(DuplexStreamingResult<,>)) - { - methodType = MethodType.DuplexStreaming; - var genArgs = t.GetGenericArguments(); - requestTypeIfExists = genArgs[0]; - return genArgs[1]; - } - else - { - throw new Exception($"Invalid return type, path:{def.Path} type:{t.Name}"); - } - } - - class MethodDefinition - { - public string Path => ServiceType.Name + "/" + MethodInfo.Name; - - // set after search definitions - public Type ServiceType; - public MethodInfo MethodInfo; - public MethodType MethodType; - - // set after define static fields - public bool ResponseIsTask; - public FieldInfo FieldMethod; - public Type RequestType; - public Type ResponseType; - - // unary only, set after define static fields - public FieldInfo UnaryRequestDelegate; - } - } -} - -#endif \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs.meta deleted file mode 100644 index 32eb010cf..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/DynamicClientBuilder.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4756b0967dbdbae4fb4cb2afb87f4101 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs b/Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs deleted file mode 100644 index 870155e54..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs +++ /dev/null @@ -1,158 +0,0 @@ -using System.Threading.Tasks; - -namespace MagicOnion.Client -{ - internal static class InterceptInvokeHelper - { - public static ValueTask InvokeWithFilter(RequestContext context) - { - switch (context.Filters.Length) - { - case 0: - return new ValueTask(context.RequestMethod(context)); - case 1: - return InvokeWithFilter1(context); - case 2: - return InvokeWithFilter2(context); - case 3: - return InvokeWithFilter3(context); - case 4: - return InvokeWithFilter4(context); - case 5: - return InvokeWithFilter5(context); - case 6: - return InvokeWithFilter6(context); - case 7: - return InvokeWithFilter7(context); - case 8: - return InvokeWithFilter8(context); - case 9: - return InvokeWithFilter9(context); - case 10: - return InvokeWithFilter10(context); - default: - return InvokeRecursive(-1, context); - } - } - - static ValueTask InvokeWithFilter1(RequestContext context) - { - return context.Filters[0].SendAsync(context, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())); - } - - static ValueTask InvokeWithFilter2(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()))); - } - - static ValueTask InvokeWithFilter3(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())))); - } - - static ValueTask InvokeWithFilter4(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - x3 => x3.Filters[3].SendAsync(x3, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()))))); - } - - static ValueTask InvokeWithFilter5(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - x3 => x3.Filters[3].SendAsync(x3, - x4 => x4.Filters[4].SendAsync(x4, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())))))); - } - - static ValueTask InvokeWithFilter6(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - x3 => x3.Filters[3].SendAsync(x3, - x4 => x4.Filters[4].SendAsync(x4, - x5 => x5.Filters[5].SendAsync(x5, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()))))))); - } - - static ValueTask InvokeWithFilter7(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - x3 => x3.Filters[3].SendAsync(x3, - x4 => x4.Filters[4].SendAsync(x4, - x5 => x5.Filters[5].SendAsync(x5, - x6 => x6.Filters[6].SendAsync(x6, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())))))))); - } - - static ValueTask InvokeWithFilter8(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - x3 => x3.Filters[3].SendAsync(x3, - x4 => x4.Filters[4].SendAsync(x4, - x5 => x5.Filters[5].SendAsync(x5, - x6 => x6.Filters[6].SendAsync(x6, - x7 => x7.Filters[7].SendAsync(x7, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()))))))))); - } - - static ValueTask InvokeWithFilter9(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - x3 => x3.Filters[3].SendAsync(x3, - x4 => x4.Filters[4].SendAsync(x4, - x5 => x5.Filters[5].SendAsync(x5, - x6 => x6.Filters[6].SendAsync(x6, - x7 => x7.Filters[7].SendAsync(x7, - x8 => x8.Filters[8].SendAsync(x8, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync())))))))))); - } - - static ValueTask InvokeWithFilter10(RequestContext context) - { - return context.Filters[0].SendAsync(context, - x1 => x1.Filters[1].SendAsync(x1, - x2 => x2.Filters[2].SendAsync(x2, - x3 => x3.Filters[3].SendAsync(x3, - x4 => x4.Filters[4].SendAsync(x4, - x5 => x5.Filters[5].SendAsync(x5, - x6 => x6.Filters[6].SendAsync(x6, - x7 => x7.Filters[7].SendAsync(x7, - x8 => x8.Filters[8].SendAsync(x8, - x9 => x9.Filters[9].SendAsync(x9, - ctx => new ValueTask(ctx.RequestMethod(ctx).WaitResponseAsync()))))))))))); - } - - // for invoke N filters(slow path). - - static ValueTask InvokeRecursive(int index, RequestContext context) - { - index += 1; // start from -1 - if (index != context.Filters.Length) - { - return context.Filters[index].SendAsync(context, ctx => InvokeRecursive(index, ctx)); - } - else - { - return new ValueTask(context.RequestMethod(context).WaitResponseAsync()); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs.meta deleted file mode 100644 index e1c983c5b..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/InterceptInvokeHelper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4a428b894e3ddac4a80496efd076633c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs b/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs deleted file mode 100644 index c120db5fc..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Grpc.Core; -using MessagePack; -using System; - -namespace MagicOnion.Client -{ - public static class MagicOnionClient - { - static readonly IClientFilter[] emptyFilters = Array.Empty(); - - public static T Create(Channel channel) - where T : IService - { - return Create(new DefaultCallInvoker(channel), MessagePackSerializer.DefaultOptions, emptyFilters); - } - - public static T Create(CallInvoker invoker) - where T : IService - { - return Create(invoker, MessagePackSerializer.DefaultOptions, emptyFilters); - } - - public static T Create(Channel channel, IClientFilter[] clientFilters) - where T : IService - { - return Create(new DefaultCallInvoker(channel), MessagePackSerializer.DefaultOptions, clientFilters); - } - - public static T Create(CallInvoker invoker, IClientFilter[] clientFilters) - where T : IService - { - return Create(invoker, MessagePackSerializer.DefaultOptions, clientFilters); - } - - public static T Create(Channel channel, MessagePackSerializerOptions serializerOptions) - where T : IService - { - return Create(new DefaultCallInvoker(channel), serializerOptions, emptyFilters); - } - - public static T Create(CallInvoker invoker, MessagePackSerializerOptions serializerOptions) - where T : IService - { - return Create(invoker, serializerOptions, emptyFilters); - } - - public static T Create(CallInvoker invoker, MessagePackSerializerOptions serializerOptions, IClientFilter[] clientFilters) - where T : IService - { - if (invoker == null) throw new ArgumentNullException(nameof(invoker)); - - var ctor = MagicOnionClientRegistry.consturtor; - if (ctor == null) - { -#if ((ENABLE_IL2CPP && !UNITY_EDITOR) || NET_STANDARD_2_0) - throw new InvalidOperationException("Does not registered client factory, dynamic code generation is not supported on IL2CPP. Please use code generator(moc)."); -#else - var t = DynamicClientBuilder.ClientType; - return (T)Activator.CreateInstance(t, invoker, serializerOptions, clientFilters); -#endif - } - else - { - return ctor(invoker, serializerOptions, clientFilters); - } - } - } - - public static class MagicOnionClientRegistry - where T : IService - { - public static Func consturtor; - - public static void Register(Func ctor) - { - consturtor = ctor; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs.meta deleted file mode 100644 index 42a80eef1..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClient.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5cd0a981f86ef1843bf6b375b2d9b5dd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs b/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs deleted file mode 100644 index efa8e70e1..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs +++ /dev/null @@ -1,130 +0,0 @@ -using Grpc.Core; -using MessagePack; -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace MagicOnion.Client -{ - public abstract class MagicOnionClientBase - { - protected string host; - protected CallOptions option; - protected CallInvoker callInvoker; - protected MessagePackSerializerOptions serializerOptions; - protected IClientFilter[] filters; - - static protected ResponseContext CreateResponseContext(RequestContext context, Method method) - { - var self = context.Client; - var callResult = self.callInvoker.AsyncUnaryCall(method, self.host, context.CallOptions, context.RequestMutator(MagicOnionMarshallers.UnsafeNilBytes)); - var response = new ResponseContext(callResult, self.serializerOptions); - response.SetResponseMutator(context.ResponseMutator); - return response; - } - - static protected ResponseContext CreateResponseContext(RequestContext context, Method method) - { - var self = context.Client; - var message = MessagePackSerializer.Serialize(((RequestContext)context).Request, self.serializerOptions); - var callResult = self.callInvoker.AsyncUnaryCall(method, self.host, context.CallOptions, context.RequestMutator(message)); - var response = new ResponseContext(callResult, self.serializerOptions); - response.SetResponseMutator(context.ResponseMutator); - return response; - } - } - - public abstract class MagicOnionClientBase : MagicOnionClientBase - where T : IService - { - protected MagicOnionClientBase() - { - } - - protected MagicOnionClientBase(CallInvoker callInvoker, MessagePackSerializerOptions serializerOptions, IClientFilter[] filters) - { - this.callInvoker = callInvoker; - this.serializerOptions = serializerOptions; - this.filters = filters; - } - - protected UnaryResult InvokeAsync(string path, TRequest request, Func requestMethod) - { - var future = InvokeAsyncCore(path, request, requestMethod); - return new UnaryResult(future); - } - - async Task> InvokeAsyncCore(string path, TRequest request, Func requestMethod) - { - if (this.option.Headers == null && filters.Length != 0) - { - // always creating new Metadata is bad manner for performance - this.option = this.option.WithHeaders(new Metadata()); - } - - var requestContext = new RequestContext(request, this, path, option, typeof(TResponse), filters, requestMethod); - var response = await InterceptInvokeHelper.InvokeWithFilter(requestContext); - var result = response as IResponseContext; - if (result != null) - { - return result; - } - else - { - throw new InvalidOperationException("ResponseContext is null."); - } - } - - protected async Task> InvokeTaskAsync(string path, TRequest request, Func requestMethod) - { - if (this.option.Headers == null && filters.Length != 0) - { - // always creating new Metadata is bad manner for performance - this.option = this.option.WithHeaders(new Metadata()); - } - - var requestContext = new RequestContext(request, this, path, option, typeof(TResponse), filters, requestMethod); - var response = await InterceptInvokeHelper.InvokeWithFilter(requestContext); - var result = response as IResponseContext; - if (result != null) - { - return new UnaryResult(Task.FromResult(result)); - } - else - { - throw new InvalidOperationException("ResponseContext is null."); - } - } - - protected abstract MagicOnionClientBase Clone(); - - public virtual T WithCancellationToken(CancellationToken cancellationToken) - { - return WithOptions(this.option.WithCancellationToken(cancellationToken)); - } - - public virtual T WithDeadline(DateTime deadline) - { - return WithOptions(this.option.WithDeadline(deadline)); - } - - public virtual T WithHeaders(Metadata headers) - { - return WithOptions(this.option.WithHeaders(headers)); - } - - public virtual T WithHost(string host) - { - var newInstance = Clone(); - newInstance.host = host; - return (T)(object)newInstance; - } - - public virtual T WithOptions(CallOptions option) - { - var newInstance = Clone(); - newInstance.option = option; - return (T)(object)newInstance; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs.meta deleted file mode 100644 index 0a4bed78f..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/MagicOnionClientBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d469b4f1a615e4f4f8bf51459e9e5d50 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs b/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs deleted file mode 100644 index 7c9745c0b..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs +++ /dev/null @@ -1,50 +0,0 @@ -using Grpc.Core; -using Grpc.Core.Logging; -using MessagePack; -using System; - -namespace MagicOnion.Client -{ - public static class StreamingHubClient - { - public static TStreamingHub Connect(Channel channel, TReceiver receiver, string host = null, CallOptions option = default(CallOptions), MessagePackSerializerOptions serializerOptions = null, ILogger logger = null) - where TStreamingHub : IStreamingHub - { - return Connect(new DefaultCallInvoker(channel), receiver, host, option, serializerOptions, logger); - } - - public static TStreamingHub Connect(CallInvoker callInvoker, TReceiver receiver, string host = null, CallOptions option = default(CallOptions), MessagePackSerializerOptions serializerOptions = null, ILogger logger = null) - where TStreamingHub : IStreamingHub - { - var ctor = StreamingHubClientRegistry.consturtor; - StreamingHubClientBase client = null; - if (ctor == null) - { -#if ((ENABLE_IL2CPP && !UNITY_EDITOR) || NET_STANDARD_2_0) - throw new InvalidOperationException("Does not registered client factory, dynamic code generation is not supported on IL2CPP. Please use code generator(moc)."); -#else - var type = StreamingHubClientBuilder.ClientType; - client = (StreamingHubClientBase)Activator.CreateInstance(type, new object[] { callInvoker, host, option, serializerOptions, logger }); -#endif - } - else - { - client = (StreamingHubClientBase)(object)ctor(callInvoker, receiver, host, option, serializerOptions, logger); - } - - client.__ConnectAndSubscribe(receiver); - return (TStreamingHub)(object)client; - } - } - - public static class StreamingHubClientRegistry - where TStreamingHub : IStreamingHub - { - public static Func consturtor; - - public static void Register(Func ctor) - { - consturtor = ctor; - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs.meta deleted file mode 100644 index b7c2a041c..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClient.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d74d1bafd22f5794fa60ad8963e9be64 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs b/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs deleted file mode 100644 index e2113910c..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs +++ /dev/null @@ -1,332 +0,0 @@ -using Grpc.Core; -using Grpc.Core.Logging; -using MessagePack; -using System; -using System.Collections.Concurrent; -using System.Collections.Generic; -using System.Text; -using MagicOnion.Utils; -using System.Threading; -using System.Threading.Tasks; -using MagicOnion.Server; -using System.Buffers; - -namespace MagicOnion.Client -{ - public abstract class StreamingHubClientBase - where TStreamingHub : IStreamingHub - { - readonly string host; - readonly CallOptions option; - readonly CallInvoker callInvoker; - readonly ILogger logger; - - protected readonly MessagePackSerializerOptions serializerOptions; - readonly AsyncLock asyncLock = new AsyncLock(); - - DuplexStreamingResult connection; - protected TReceiver receiver; - Task subscription; - TaskCompletionSource waitForDisconnect = new TaskCompletionSource(); - - // {messageId, TaskCompletionSource} - ConcurrentDictionary responseFutures = new ConcurrentDictionary(); - protected CancellationTokenSource cts = new CancellationTokenSource(); - int messageId = 0; - bool disposed; - - protected StreamingHubClientBase(CallInvoker callInvoker, string host, CallOptions option, MessagePackSerializerOptions serializerOptions, ILogger logger) - { - this.callInvoker = callInvoker; - this.host = host; - this.option = option; - this.serializerOptions = serializerOptions; - this.logger = logger ?? GrpcEnvironment.Logger; - } - - protected abstract Method DuplexStreamingAsyncMethod { get; } - - // call immediately after create. - public void __ConnectAndSubscribe(TReceiver receiver) - { - var callResult = callInvoker.AsyncDuplexStreamingCall(DuplexStreamingAsyncMethod, host, option); - var streamingResult = new DuplexStreamingResult( - callResult, - new MarshallingClientStreamWriter(callResult.RequestStream, serializerOptions), - new MarshallingAsyncStreamReader(callResult.ResponseStream, serializerOptions), - serializerOptions - ); - - this.connection = streamingResult; - this.receiver = receiver; - this.subscription = StartSubscribe(); - } - - protected abstract void OnResponseEvent(int methodId, object taskCompletionSource, ArraySegment data); - protected abstract void OnBroadcastEvent(int methodId, ArraySegment data); - - async Task StartSubscribe() - { - var syncContext = SynchronizationContext.Current; // capture SynchronizationContext. - var reader = connection.RawStreamingCall.ResponseStream; - try - { - while (await reader.MoveNext(cts.Token).ConfigureAwait(false)) // avoid Post to SyncContext(it losts one-frame per operation) - { - try - { - // MessageFormat: - // broadcast: [methodId, [argument]] - // response: [messageId, methodId, response] - // error-response: [messageId, statusCode, detail, StringMessage] - void ConsumeData(byte[] data) - { - var messagePackReader = new MessagePackReader(data); - var arrayLength = messagePackReader.ReadArrayHeader(); - if (arrayLength == 3) - { - var messageId = messagePackReader.ReadInt32(); - object future; - if (responseFutures.TryRemove(messageId, out future)) - { - var methodId = messagePackReader.ReadInt32(); - try - { - var offset = (int)messagePackReader.Consumed; - var rest = new ArraySegment(data, offset, data.Length - offset); - OnResponseEvent(methodId, future, rest); - } - catch (Exception ex) - { - if (!(future as ITaskCompletion).TrySetException(ex)) - { - throw; - } - } - } - } - else if (arrayLength == 4) - { - var messageId = messagePackReader.ReadInt32(); - object future; - if (responseFutures.TryRemove(messageId, out future)) - { - var statusCode = messagePackReader.ReadInt32(); - var detail = messagePackReader.ReadString(); - var offset = (int)messagePackReader.Consumed; - var rest = new ArraySegment(data, offset, data.Length - offset); - var error = MessagePackSerializer.Deserialize(rest, serializerOptions); - (future as ITaskCompletion).TrySetException(new RpcException(new Status((StatusCode)statusCode, detail), error)); - } - } - else - { - var methodId = messagePackReader.ReadInt32(); - var offset = (int)messagePackReader.Consumed; - if (syncContext != null) - { - var tuple = Tuple.Create(methodId, data, offset, data.Length - offset); - syncContext.Post(state => - { - var t = (Tuple)state; - OnBroadcastEvent(t.Item1, new ArraySegment(t.Item2, t.Item3, t.Item4)); - }, tuple); - } - else - { - OnBroadcastEvent(methodId, new ArraySegment(data, offset, data.Length - offset)); - } - } - } - - ConsumeData(reader.Current); - } - catch (Exception ex) - { - const string msg = "Error on consume received message, but keep subscribe."; - // log post on main thread. - if (syncContext != null) - { - syncContext.Post(state => logger.Error((Exception)state, msg), ex); - } - else - { - logger.Error(ex, msg); - } - } - } - } - catch (Exception ex) - { - if (ex is OperationCanceledException) - { - return; - } - const string msg = "Error on subscribing message."; - // log post on main thread. - if (syncContext != null) - { - syncContext.Post(state => logger.Error((Exception)state, msg), ex); - } - else - { - logger.Error(ex, msg); - } - } - finally - { - try - { - // set syncContext before await - if (syncContext != null && SynchronizationContext.Current == null) - { - SynchronizationContext.SetSynchronizationContext(syncContext); - } - await DisposeAsyncCore(false); - } - finally - { - waitForDisconnect.TrySetResult(null); - } - } - } - - - protected async Task WriteMessageAsync(int methodId, T message) - { - ThrowIfDisposed(); - - byte[] BuildMessage() - { - using (var buffer = ArrayPoolBufferWriter.RentThreadStaticWriter()) - { - var writer = new MessagePackWriter(buffer); - writer.WriteArrayHeader(2); - writer.Write(methodId); - MessagePackSerializer.Serialize(ref writer, message, serializerOptions); - writer.Flush(); - return buffer.WrittenSpan.ToArray(); - } - } - - var v = BuildMessage(); - using (await asyncLock.LockAsync()) - { - await connection.RawStreamingCall.RequestStream.WriteAsync(v).ConfigureAwait(false); - } - } - - protected async Task WriteMessageAsyncFireAndForget(int methodId, TRequest message) - { - await WriteMessageAsync(methodId, message).ConfigureAwait(false); - return default(TResponse); - } - - protected async Task WriteMessageWithResponseAsync(int methodId, TRequest message) - { - ThrowIfDisposed(); - - var mid = Interlocked.Increment(ref messageId); - var tcs = new TaskCompletionSourceEx(); // use Ex - responseFutures[mid] = (object)tcs; - - byte[] BuildMessage() - { - using (var buffer = ArrayPoolBufferWriter.RentThreadStaticWriter()) - { - var writer = new MessagePackWriter(buffer); - writer.WriteArrayHeader(3); - writer.Write(mid); - writer.Write(methodId); - MessagePackSerializer.Serialize(ref writer, message, serializerOptions); - writer.Flush(); - return buffer.WrittenSpan.ToArray(); - } - } - - var v = BuildMessage(); - using (await asyncLock.LockAsync().ConfigureAwait(false)) - { - await connection.RawStreamingCall.RequestStream.WriteAsync(v).ConfigureAwait(false); - } - - return await tcs.Task; // wait until server return response(or error). if connection was closed, throws cancellation from DisposeAsyncCore. - } - - void ThrowIfDisposed() - { - if (disposed) throw new ObjectDisposedException("StreamingHubClient"); - } - - public Task WaitForDisconnect() - { - return waitForDisconnect.Task; - } - - public Task DisposeAsync() - { - return DisposeAsyncCore(true); - } - - async Task DisposeAsyncCore(bool waitSubscription) - { - if (disposed) return; - if (connection.RawStreamingCall == null) return; - - disposed = true; - - try - { - await connection.RequestStream.CompleteAsync(); - } - catch { } // ignore error? - finally - { - cts.Cancel(); - cts.Dispose(); - try - { - if (waitSubscription) - { - if (subscription != null) - { - await subscription; - } - } - - // cleanup completion - List aggregateException = null; - foreach (var item in responseFutures) - { - try - { - (item.Value as ITaskCompletion).TrySetCanceled(); - } - catch (Exception ex) - { - if (!(ex is OperationCanceledException)) - { - if (aggregateException != null) - { - aggregateException = new List(); - aggregateException.Add(ex); - } - } - } - } - if (aggregateException != null) - { - throw new AggregateException(aggregateException); - } - } - catch (Exception ex) - { - if (!(ex is OperationCanceledException)) - { - throw; - } - } - } - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs.meta deleted file mode 100644 index 466360cca..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBase.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d3ca190a4e3a9184ea0ba8b8c5e88b2f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs b/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs deleted file mode 100644 index 2dab4b16f..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs +++ /dev/null @@ -1,584 +0,0 @@ -#if NON_UNITY || !NET_STANDARD_2_0 - -using Grpc.Core; -using Grpc.Core.Logging; -using MagicOnion.Server.Hubs; -using MagicOnion.Utils; -using MessagePack; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Reflection.Emit; -using System.Threading; -using System.Threading.Tasks; - -namespace MagicOnion.Client -{ -#if ENABLE_SAVE_ASSEMBLY - public -#else - internal -#endif - static class StreamingHubClientAssemblyHolder - { - public const string ModuleName = "MagicOnion.Client.StreamingHubClient"; - - readonly static DynamicAssembly assembly; - internal static DynamicAssembly Assembly { get { return assembly; } } - - static StreamingHubClientAssemblyHolder() - { - assembly = new DynamicAssembly(ModuleName); - } - -#if ENABLE_SAVE_ASSEMBLY - - public static AssemblyBuilder Save() - { - return assembly.Save(); - } - -#endif - } - -#if ENABLE_SAVE_ASSEMBLY - public -#else - internal -#endif - static class StreamingHubClientBuilder - { - public static readonly Type ClientType; - // static readonly Type ClientFireAndForgetType; - - static readonly Type bytesMethod = typeof(Method<,>).MakeGenericType(new[] { typeof(byte[]), typeof(byte[]) }); - static readonly FieldInfo throughMarshaller = typeof(MagicOnionMarshallers).GetField("ThroughMarshaller", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); - - static readonly ConstructorInfo notSupportedException = typeof(NotSupportedException).GetConstructor(Type.EmptyTypes); - - static readonly MethodInfo callMessagePackDesrialize = typeof(MessagePackSerializer).GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static) - .First(x => x.Name == "Deserialize" && x.GetParameters().Length == 3 && x.GetParameters()[0].ParameterType == typeof(ReadOnlyMemory) && x.GetParameters()[1].ParameterType == typeof(MessagePackSerializerOptions)); - static readonly MethodInfo callCancellationTokenNone = typeof(CancellationToken).GetProperty("None", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static).GetGetMethod(); - static readonly PropertyInfo completedTask = typeof(Task).GetProperty("CompletedTask", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); - - static StreamingHubClientBuilder() - { - var t = typeof(TStreamingHub); - var ti = t.GetTypeInfo(); - if (!ti.IsInterface) throw new Exception("Client Proxy only allows interface. Type:" + ti.Name); - var asm = StreamingHubClientAssemblyHolder.Assembly; - var methodDefinitions = SearchDefinitions(t); - - var parentType = typeof(StreamingHubClientBase<,>).MakeGenericType(typeof(TStreamingHub), typeof(TReceiver)); - var typeBuilder = asm.DefineType($"{DynamicClientAssemblyHolder.ModuleName}.{ti.FullName}StreamingHubClient_{Guid.NewGuid().ToString()}", TypeAttributes.Public, parentType, new Type[] { t }); - - VerifyMethodDefinitions(methodDefinitions); - - { - // Create FireAndForgetType first as nested type. - var typeBuilderEx = typeBuilder.DefineNestedType($"FireAndForgetClient", TypeAttributes.NestedPrivate, typeof(object), new Type[] { t }); - var tuple = DefineFireAndForgetConstructor(typeBuilderEx, typeBuilder); - var fireAndForgetClientCtor = tuple.Item1; - var fireAndForgetField = tuple.Item2; - - DefineMethodsFireAndForget(typeBuilderEx, t, fireAndForgetField, typeBuilder, methodDefinitions); - typeBuilderEx.CreateTypeInfo(); // ok to create nested type. - - var methodField = DefineStaticConstructor(typeBuilder, t); - var clientField = DefineConstructor(typeBuilder, t, typeof(TReceiver), fireAndForgetClientCtor); - DefineMethods(typeBuilder, t, typeof(TReceiver), methodField, clientField, methodDefinitions); - } - - ClientType = typeBuilder.CreateTypeInfo().AsType(); - } - - static MethodDefinition[] SearchDefinitions(Type interfaceType) - { - return interfaceType - .GetInterfaces() - .Concat(new[] { interfaceType }) - .SelectMany(x => x.GetMethods()) - .Where(x => - { - var methodInfo = x; - if (methodInfo.IsSpecialName && (methodInfo.Name.StartsWith("set_") || methodInfo.Name.StartsWith("get_"))) return false; - if (methodInfo.GetCustomAttribute(false) != null) return false; // ignore - - var methodName = methodInfo.Name; - if (methodName == "Equals" - || methodName == "GetHashCode" - || methodName == "GetType" - || methodName == "ToString" - || methodName == "DisposeAsync" - || methodName == "WaitForDisconnect" - || methodName == "FireAndForget" - ) - { - return false; - } - return true; - }) - .Where(x => !x.IsSpecialName) - .Select(x => new MethodDefinition - { - ServiceType = interfaceType, - MethodInfo = x, - }) - .ToArray(); - } - - static void VerifyMethodDefinitions(MethodDefinition[] definitions) - { - var map = new Dictionary(definitions.Length); - foreach (var item in definitions) - { - var methodId = item.MethodInfo.GetCustomAttribute()?.MethodId ?? FNV1A32.GetHashCode(item.MethodInfo.Name); - if (map.ContainsKey(methodId)) - { - throw new Exception($"TStreamingHub does not allows duplicate methodId(hash code). Please change name or use MethodIdAttribute. {map[methodId].MethodInfo.Name} and {item.MethodInfo.Name}"); - } - map.Add(methodId, item); - - if (!(item.MethodInfo.ReturnType.IsGenericType && item.MethodInfo.ReturnType.GetGenericTypeDefinition() == typeof(Task<>)) - && item.MethodInfo.ReturnType != typeof(Task)) - { - throw new Exception($"Invalid definition, TStreamingHub's return type must only be `Task` or `Task`. {item.MethodInfo.Name}."); - } - - item.MethodId = methodId; - if (item.RequestType == null) - { - item.RequestType = MagicOnionMarshallers.CreateRequestType(item.MethodInfo.GetParameters()); - } - } - } - - static FieldInfo DefineStaticConstructor(TypeBuilder typeBuilder, Type interfaceType) - { - // static readonly Method method = new Method(MethodType.DuplexStreaming, "IFoo", "Connect", MagicOnionMarshallers.ThroughMarshaller, MagicOnionMarshallers.ThroughMarshaller); - var field = typeBuilder.DefineField("method", bytesMethod, FieldAttributes.Private | FieldAttributes.Static); - - var cctor = typeBuilder.DefineConstructor(MethodAttributes.Static, CallingConventions.Standard, Type.EmptyTypes); - var il = cctor.GetILGenerator(); - - il.EmitLdc_I4((int)MethodType.DuplexStreaming); - il.Emit(OpCodes.Ldstr, interfaceType.Name); - il.Emit(OpCodes.Ldstr, "Connect"); - il.Emit(OpCodes.Ldsfld, throughMarshaller); - il.Emit(OpCodes.Ldsfld, throughMarshaller); - il.Emit(OpCodes.Newobj, bytesMethod.GetConstructors()[0]); - il.Emit(OpCodes.Stsfld, field); - - il.Emit(OpCodes.Ret); - - return field; - } - - static FieldInfo DefineConstructor(TypeBuilder typeBuilder, Type interfaceType, Type receiverType, ConstructorInfo fireAndForgetClientCtor) - { - // .ctor(CallInvoker callInvoker, string host, CallOptions option, MessagePackSerializerOptions resolver, ILogger logger) :base(...) - { - var argTypes = new[] { typeof(CallInvoker), typeof(string), typeof(CallOptions), typeof(MessagePackSerializerOptions), typeof(ILogger) }; - var ctor = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, argTypes); - var il = ctor.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Ldarg_2); - il.Emit(OpCodes.Ldarg_3); - il.Emit(OpCodes.Ldarg_S, (byte)4); - il.Emit(OpCodes.Ldarg_S, (byte)5); - il.Emit(OpCodes.Call, typeBuilder.BaseType - .GetConstructors(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).First()); - - // { this.fireAndForgetClient = new FireAndForgetClient(this); } - var clientField = typeBuilder.DefineField("fireAndForgetClient", fireAndForgetClientCtor.DeclaringType, FieldAttributes.Private); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Newobj, fireAndForgetClientCtor); - il.Emit(OpCodes.Stfld, clientField); - - il.Emit(OpCodes.Ret); - - return clientField; - } - } - - static Tuple DefineFireAndForgetConstructor(TypeBuilder typeBuilder, Type parentClientType) - { - // .ctor(Parent client) { this.client = client } - { - var argTypes = new[] { parentClientType }; - var ctor = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, argTypes); - var clientField = typeBuilder.DefineField("client", parentClientType, FieldAttributes.Private); - var il = ctor.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Call, typeof(object).GetConstructors().First()); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldarg_1); - il.Emit(OpCodes.Stfld, clientField); - - il.Emit(OpCodes.Ret); - - return Tuple.Create(ctor, clientField); - } - } - - static void DefineMethods(TypeBuilder typeBuilder, Type interfaceType, Type receiverType, FieldInfo methodField, FieldInfo clientField, MethodDefinition[] definitions) - { - var baseType = typeof(StreamingHubClientBase<,>).MakeGenericType(interfaceType, receiverType); - var serializerOptionsField = baseType.GetField("serializerOptions", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - var receiverField = baseType.GetField("receiver", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - - // protected abstract Method DuplexStreamingAsyncMethod { get; } - { - var method = typeBuilder.DefineMethod("get_DuplexStreamingAsyncMethod", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - bytesMethod, - Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, methodField); - il.Emit(OpCodes.Ret); - } - { - // Task DisposeAsync(); - { - var method = typeBuilder.DefineMethod("DisposeAsync", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - typeof(Task), Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Call, baseType.GetMethod("DisposeAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); - il.Emit(OpCodes.Ret); - } - // Task WaitForDisconnect(); - { - var method = typeBuilder.DefineMethod("WaitForDisconnect", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - typeof(Task), Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Call, baseType.GetMethod("WaitForDisconnect", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); - il.Emit(OpCodes.Ret); - } - // TSelf FireAndForget(); - { - var method = typeBuilder.DefineMethod("FireAndForget", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - interfaceType, Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, clientField); - il.Emit(OpCodes.Ret); - } - } - - // receiver types borrow from DynamicBroadcastBuilder - { - // protected abstract void OnResponseEvent(int methodId, object taskCompletionSource, ArraySegment data); - { - var method = typeBuilder.DefineMethod("OnResponseEvent", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - null, new[] { typeof(int), typeof(object), typeof(ArraySegment) }); - var il = method.GetILGenerator(); - - var labels = definitions - .Select(x => new { def = x, label = il.DefineLabel() }) - .ToArray(); - - foreach (var item in labels) - { - // if( == ) goto ... - il.Emit(OpCodes.Ldarg_1); - il.EmitLdc_I4(item.def.MethodId); - il.Emit(OpCodes.Beq, item.label); - } - // else - il.Emit(OpCodes.Ret); - - foreach (var item in labels) - { - // var result = LZ4MessagePackSerializer.Deserialize(data, resolver); - // ((TaskCompletionSource)taskCompletionSource).TrySetResult(result); - - // => ((TaskCompletionSource)taskCompletionSource).TrySetResult(LZ4MessagePackSerializer.Deserialize(data, resolver)); - - Type responseType; - Type tcsType; - if (item.def.MethodInfo.ReturnType == typeof(Task)) - { - // Task methods uses TaskCompletionSource - responseType = typeof(Nil); - tcsType = typeof(TaskCompletionSource); - } - else - { - responseType = item.def.MethodInfo.ReturnType.GetGenericArguments()[0]; - tcsType = typeof(TaskCompletionSource<>).MakeGenericType(responseType); - } - - il.MarkLabel(item.label); - - il.Emit(OpCodes.Ldarg_2); - il.Emit(OpCodes.Castclass, tcsType); - il.Emit(OpCodes.Ldarg_3); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Call, callCancellationTokenNone); - il.Emit(OpCodes.Call, callMessagePackDesrialize.MakeGenericMethod(responseType)); - - il.Emit(OpCodes.Callvirt, tcsType.GetMethod("TrySetResult")); - il.Emit(OpCodes.Pop); - - il.Emit(OpCodes.Ret); - } - } - // protected abstract void OnBroadcastEvent(int methodId, ArraySegment data); - { - var methodDefinitions = BroadcasterHelper.SearchDefinitions(receiverType); - BroadcasterHelper.VerifyMethodDefinitions(methodDefinitions); - - var method = typeBuilder.DefineMethod("OnBroadcastEvent", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - typeof(void), new[] { typeof(int), typeof(ArraySegment) }); - var il = method.GetILGenerator(); - - var labels = methodDefinitions - .Select(x => new { def = x, label = il.DefineLabel() }) - .ToArray(); - - foreach (var item in labels) - { - // if( == ) goto ... - il.Emit(OpCodes.Ldarg_1); - il.EmitLdc_I4(item.def.MethodId); - il.Emit(OpCodes.Beq, item.label); - } - // else - il.Emit(OpCodes.Ret); - - foreach (var item in labels) - { - il.MarkLabel(item.label); - - // var result = LZ4MessagePackSerializer.Deserialize>(data, resolver); - // return receiver.OnReceiveMessage(result.Item1, result.Item2); - - var parameters = item.def.MethodInfo.GetParameters(); - if (parameters.Length == 0) - { - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, receiverField); - il.Emit(OpCodes.Callvirt, item.def.MethodInfo); - il.Emit(OpCodes.Ret); - } - else if (parameters.Length == 1) - { - // TODO:fix emit - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, receiverField); - il.Emit(OpCodes.Ldarg_2); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Call, callCancellationTokenNone); - il.Emit(OpCodes.Call, callMessagePackDesrialize.MakeGenericMethod(parameters[0].ParameterType)); - il.Emit(OpCodes.Callvirt, item.def.MethodInfo); - il.Emit(OpCodes.Ret); - } - else - { - // TODO:fix emit - var deserializeType = BroadcasterHelper.dynamicArgumentTupleTypes[parameters.Length - 2] - .MakeGenericType(parameters.Select(x => x.ParameterType).ToArray()); - var lc = il.DeclareLocal(deserializeType); - il.Emit(OpCodes.Ldarg_2); - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, serializerOptionsField); - il.Emit(OpCodes.Call, callCancellationTokenNone); - il.Emit(OpCodes.Call, callMessagePackDesrialize.MakeGenericMethod(deserializeType)); - il.Emit(OpCodes.Stloc, lc); - - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, receiverField); - for (int i = 0; i < parameters.Length; i++) - { - il.Emit(OpCodes.Ldloc, lc); - il.Emit(OpCodes.Ldfld, deserializeType.GetField("Item" + (i + 1))); - } - - il.Emit(OpCodes.Callvirt, item.def.MethodInfo); - il.Emit(OpCodes.Ret); - } - } - } - } - - // Proxy Methods - for (int i = 0; i < definitions.Length; i++) - { - var def = definitions[i]; - var parameters = def.MethodInfo.GetParameters().Select(x => x.ParameterType).ToArray(); - - var method = typeBuilder.DefineMethod(def.MethodInfo.Name, MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - def.MethodInfo.ReturnType, - parameters); - var il = method.GetILGenerator(); - - // return WriteMessageAsync(methodId, message); - // return WriteMessageWithResponseAsync(methodId, message); - - // this.*** - il.Emit(OpCodes.Ldarg_0); - - // arg1 - il.EmitLdc_I4(def.MethodId); - - // create request for arg2 - for (int j = 0; j < parameters.Length; j++) - { - il.Emit(OpCodes.Ldarg, j + 1); - } - - Type callType = null; - if (parameters.Length == 0) - { - // use Nil. - callType = typeof(Nil); - il.Emit(OpCodes.Ldsfld, typeof(Nil).GetField("Default")); - } - else if (parameters.Length == 1) - { - // already loaded parameter. - callType = parameters[0]; - } - else - { - // call new DynamicArgumentTuple - callType = def.RequestType; - il.Emit(OpCodes.Newobj, callType.GetConstructors().First()); - } - - if (def.MethodInfo.ReturnType == typeof(Task)) - { - var mInfo = baseType.GetMethod("WriteMessageWithResponseAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - il.Emit(OpCodes.Callvirt, mInfo.MakeGenericMethod(callType, typeof(Nil))); - } - else - { - var mInfo = baseType.GetMethod("WriteMessageWithResponseAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - il.Emit(OpCodes.Callvirt, mInfo.MakeGenericMethod(callType, def.MethodInfo.ReturnType.GetGenericArguments()[0])); - } - - il.Emit(OpCodes.Ret); - } - } - - static void DefineMethodsFireAndForget(TypeBuilder typeBuilder, Type interfaceType, FieldInfo clientField, Type parentNestedType, MethodDefinition[] definitions) - { - { - // Task DisposeAsync(); - { - var method = typeBuilder.DefineMethod("DisposeAsync", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - typeof(Task), Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Newobj, notSupportedException); - il.Emit(OpCodes.Throw); - } - // Task WaitForDisconnect(); - { - var method = typeBuilder.DefineMethod("WaitForDisconnect", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - typeof(Task), Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Newobj, notSupportedException); - il.Emit(OpCodes.Throw); - } - // TSelf FireAndForget(); - { - var method = typeBuilder.DefineMethod("FireAndForget", MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - interfaceType, Type.EmptyTypes); - var il = method.GetILGenerator(); - - il.Emit(OpCodes.Newobj, notSupportedException); - il.Emit(OpCodes.Throw); - } - } - - // Proxy Methods - for (int i = 0; i < definitions.Length; i++) - { - var def = definitions[i]; - var parameters = def.MethodInfo.GetParameters().Select(x => x.ParameterType).ToArray(); - - var method = typeBuilder.DefineMethod(def.MethodInfo.Name, MethodAttributes.Public | MethodAttributes.Final | MethodAttributes.Virtual, - def.MethodInfo.ReturnType, - parameters); - var il = method.GetILGenerator(); - - // return client.WriteMessage***(methodId, message); - - // this.client.*** - il.Emit(OpCodes.Ldarg_0); - il.Emit(OpCodes.Ldfld, clientField); - - // arg1 - il.EmitLdc_I4(def.MethodId); - - // create request for arg2 - for (int j = 0; j < parameters.Length; j++) - { - il.Emit(OpCodes.Ldarg, j + 1); - } - - Type callType = null; - if (parameters.Length == 0) - { - // use Nil. - callType = typeof(Nil); - il.Emit(OpCodes.Ldsfld, typeof(Nil).GetField("Default")); - } - else if (parameters.Length == 1) - { - // already loaded parameter. - callType = parameters[0]; - } - else - { - // call new DynamicArgumentTuple - callType = def.RequestType; - il.Emit(OpCodes.Newobj, callType.GetConstructors().First()); - } - - if (def.MethodInfo.ReturnType == typeof(Task)) - { - var mInfo = parentNestedType.BaseType.GetMethod("WriteMessageAsync", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - il.Emit(OpCodes.Callvirt, mInfo.MakeGenericMethod(callType)); - } - else - { - var mInfo = parentNestedType.BaseType.GetMethod("WriteMessageAsyncFireAndForget", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); - il.Emit(OpCodes.Callvirt, mInfo.MakeGenericMethod(callType, def.MethodInfo.ReturnType.GetGenericArguments()[0])); - } - - il.Emit(OpCodes.Ret); - } - } - - - class MethodDefinition - { - public string Path => ServiceType.Name + "/" + MethodInfo.Name; - - public Type ServiceType; - public MethodInfo MethodInfo; - public int MethodId; - - public Type RequestType; - } - } -} - -#endif \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs.meta b/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs.meta deleted file mode 100644 index d24d573a4..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Client/StreamingHubClientBuilder.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 88e3748798a988c4482dafe8624b1400 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs b/Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs deleted file mode 100644 index 92f0ec57c..000000000 --- a/Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs +++ /dev/null @@ -1,2917 +0,0 @@ - -using System; -using MessagePack; -using MessagePack.Formatters; - -namespace MagicOnion -{ - // T2 ~ T20 - - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2) - { - Item1 = item1; - Item2 = item2; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2) - { - this.default1 = default1; - this.default2 = default2; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(2); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(3); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(4); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(5); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(6); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(7); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(8); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(9); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(10); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(11); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(12); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(13); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - [Key(13)] - public readonly T14 Item14; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - Item14 = item14; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - readonly T14 default14; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13, T14 default14) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - this.default14 = default14; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(14); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item14, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - var item14 = default14; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 13: - item14 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - [Key(13)] - public readonly T14 Item14; - [Key(14)] - public readonly T15 Item15; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - Item14 = item14; - Item15 = item15; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - readonly T14 default14; - readonly T15 default15; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13, T14 default14, T15 default15) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - this.default14 = default14; - this.default15 = default15; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(15); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item14, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item15, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - var item14 = default14; - var item15 = default15; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 13: - item14 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 14: - item15 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - [Key(13)] - public readonly T14 Item14; - [Key(14)] - public readonly T15 Item15; - [Key(15)] - public readonly T16 Item16; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - Item14 = item14; - Item15 = item15; - Item16 = item16; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - readonly T14 default14; - readonly T15 default15; - readonly T16 default16; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13, T14 default14, T15 default15, T16 default16) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - this.default14 = default14; - this.default15 = default15; - this.default16 = default16; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(16); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item14, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item15, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item16, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - var item14 = default14; - var item15 = default15; - var item16 = default16; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 13: - item14 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 14: - item15 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 15: - item16 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - [Key(13)] - public readonly T14 Item14; - [Key(14)] - public readonly T15 Item15; - [Key(15)] - public readonly T16 Item16; - [Key(16)] - public readonly T17 Item17; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - Item14 = item14; - Item15 = item15; - Item16 = item16; - Item17 = item17; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - readonly T14 default14; - readonly T15 default15; - readonly T16 default16; - readonly T17 default17; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13, T14 default14, T15 default15, T16 default16, T17 default17) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - this.default14 = default14; - this.default15 = default15; - this.default16 = default16; - this.default17 = default17; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(17); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item14, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item15, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item16, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item17, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - var item14 = default14; - var item15 = default15; - var item16 = default16; - var item17 = default17; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 13: - item14 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 14: - item15 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 15: - item16 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 16: - item17 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - [Key(13)] - public readonly T14 Item14; - [Key(14)] - public readonly T15 Item15; - [Key(15)] - public readonly T16 Item16; - [Key(16)] - public readonly T17 Item17; - [Key(17)] - public readonly T18 Item18; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - Item14 = item14; - Item15 = item15; - Item16 = item16; - Item17 = item17; - Item18 = item18; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - readonly T14 default14; - readonly T15 default15; - readonly T16 default16; - readonly T17 default17; - readonly T18 default18; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13, T14 default14, T15 default15, T16 default16, T17 default17, T18 default18) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - this.default14 = default14; - this.default15 = default15; - this.default16 = default16; - this.default17 = default17; - this.default18 = default18; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(18); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item14, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item15, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item16, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item17, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item18, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - var item14 = default14; - var item15 = default15; - var item16 = default16; - var item17 = default17; - var item18 = default18; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 13: - item14 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 14: - item15 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 15: - item16 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 16: - item17 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 17: - item18 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - [Key(13)] - public readonly T14 Item14; - [Key(14)] - public readonly T15 Item15; - [Key(15)] - public readonly T16 Item16; - [Key(16)] - public readonly T17 Item17; - [Key(17)] - public readonly T18 Item18; - [Key(18)] - public readonly T19 Item19; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18, T19 item19) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - Item14 = item14; - Item15 = item15; - Item16 = item16; - Item17 = item17; - Item18 = item18; - Item19 = item19; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - readonly T14 default14; - readonly T15 default15; - readonly T16 default16; - readonly T17 default17; - readonly T18 default18; - readonly T19 default19; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13, T14 default14, T15 default15, T16 default16, T17 default17, T18 default18, T19 default19) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - this.default14 = default14; - this.default15 = default15; - this.default16 = default16; - this.default17 = default17; - this.default18 = default18; - this.default19 = default19; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(19); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item14, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item15, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item16, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item17, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item18, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item19, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - var item14 = default14; - var item15 = default15; - var item16 = default16; - var item17 = default17; - var item18 = default18; - var item19 = default19; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 13: - item14 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 14: - item15 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 15: - item16 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 16: - item17 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 17: - item18 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 18: - item19 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19); - } - } - - [MessagePackObject] - public struct DynamicArgumentTuple - { - [Key(0)] - public readonly T1 Item1; - [Key(1)] - public readonly T2 Item2; - [Key(2)] - public readonly T3 Item3; - [Key(3)] - public readonly T4 Item4; - [Key(4)] - public readonly T5 Item5; - [Key(5)] - public readonly T6 Item6; - [Key(6)] - public readonly T7 Item7; - [Key(7)] - public readonly T8 Item8; - [Key(8)] - public readonly T9 Item9; - [Key(9)] - public readonly T10 Item10; - [Key(10)] - public readonly T11 Item11; - [Key(11)] - public readonly T12 Item12; - [Key(12)] - public readonly T13 Item13; - [Key(13)] - public readonly T14 Item14; - [Key(14)] - public readonly T15 Item15; - [Key(15)] - public readonly T16 Item16; - [Key(16)] - public readonly T17 Item17; - [Key(17)] - public readonly T18 Item18; - [Key(18)] - public readonly T19 Item19; - [Key(19)] - public readonly T20 Item20; - - [SerializationConstructor] - public DynamicArgumentTuple(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8, T9 item9, T10 item10, T11 item11, T12 item12, T13 item13, T14 item14, T15 item15, T16 item16, T17 item17, T18 item18, T19 item19, T20 item20) - { - Item1 = item1; - Item2 = item2; - Item3 = item3; - Item4 = item4; - Item5 = item5; - Item6 = item6; - Item7 = item7; - Item8 = item8; - Item9 = item9; - Item10 = item10; - Item11 = item11; - Item12 = item12; - Item13 = item13; - Item14 = item14; - Item15 = item15; - Item16 = item16; - Item17 = item17; - Item18 = item18; - Item19 = item19; - Item20 = item20; - } - } - - public class DynamicArgumentTupleFormatter : IMessagePackFormatter> - { - readonly T1 default1; - readonly T2 default2; - readonly T3 default3; - readonly T4 default4; - readonly T5 default5; - readonly T6 default6; - readonly T7 default7; - readonly T8 default8; - readonly T9 default9; - readonly T10 default10; - readonly T11 default11; - readonly T12 default12; - readonly T13 default13; - readonly T14 default14; - readonly T15 default15; - readonly T16 default16; - readonly T17 default17; - readonly T18 default18; - readonly T19 default19; - readonly T20 default20; - - public DynamicArgumentTupleFormatter(T1 default1, T2 default2, T3 default3, T4 default4, T5 default5, T6 default6, T7 default7, T8 default8, T9 default9, T10 default10, T11 default11, T12 default12, T13 default13, T14 default14, T15 default15, T16 default16, T17 default17, T18 default18, T19 default19, T20 default20) - { - this.default1 = default1; - this.default2 = default2; - this.default3 = default3; - this.default4 = default4; - this.default5 = default5; - this.default6 = default6; - this.default7 = default7; - this.default8 = default8; - this.default9 = default9; - this.default10 = default10; - this.default11 = default11; - this.default12 = default12; - this.default13 = default13; - this.default14 = default14; - this.default15 = default15; - this.default16 = default16; - this.default17 = default17; - this.default18 = default18; - this.default19 = default19; - this.default20 = default20; - } - - public void Serialize(ref MessagePackWriter writer, DynamicArgumentTuple value, MessagePackSerializerOptions options) - { - writer.WriteArrayHeader(20); - var resolver = options.Resolver; - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item1, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item2, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item3, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item4, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item5, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item6, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item7, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item8, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item9, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item10, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item11, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item12, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item13, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item14, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item15, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item16, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item17, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item18, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item19, options); - resolver.GetFormatterWithVerify().Serialize(ref writer, value.Item20, options); - } - - public DynamicArgumentTuple Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var resolver = options.Resolver; - var length = reader.ReadArrayHeader(); - - var item1 = default1; - var item2 = default2; - var item3 = default3; - var item4 = default4; - var item5 = default5; - var item6 = default6; - var item7 = default7; - var item8 = default8; - var item9 = default9; - var item10 = default10; - var item11 = default11; - var item12 = default12; - var item13 = default13; - var item14 = default14; - var item15 = default15; - var item16 = default16; - var item17 = default17; - var item18 = default18; - var item19 = default19; - var item20 = default20; - - for (var i = 0; i < length; i++) - { - switch (i) - { - case 0: - item1 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 1: - item2 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 2: - item3 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 3: - item4 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 4: - item5 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 5: - item6 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 6: - item7 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 7: - item8 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 8: - item9 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 9: - item10 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 10: - item11 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 11: - item12 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 12: - item13 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 13: - item14 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 14: - item15 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 15: - item16 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 16: - item17 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 17: - item18 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 18: - item19 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - case 19: - item20 = resolver.GetFormatterWithVerify().Deserialize(ref reader, options); - break; - default: - reader.Skip(); - break; - } - } - - return new DynamicArgumentTuple(item1, item2, item3, item4, item5, item6, item7, item8, item9, item10, item11, item12, item13, item14, item15, item16, item17, item18, item19, item20); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs.meta b/Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs.meta deleted file mode 100644 index 7a6b5d9dc..000000000 --- a/Assets/Scripts/NIH/MagicOnion/DynamicArgumentTuple.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cf5ef5626f3854c41ae7c68935ada7c1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef b/Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef deleted file mode 100644 index d20a32e3d..000000000 --- a/Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "MagicOnion", - "references": [ - "MessagePack", - "MagicOnion.Abstractions" - ], - "optionalUnityReferences": [], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [] -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef.meta b/Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef.meta deleted file mode 100644 index 58523f05f..000000000 --- a/Assets/Scripts/NIH/MagicOnion/MagicOnion.asmdef.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 204215817eaff0c4eaa0f2b9cdd2df52 -AssemblyDefinitionImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs b/Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs deleted file mode 100644 index 15e724d48..000000000 --- a/Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs +++ /dev/null @@ -1,207 +0,0 @@ -using Grpc.Core; -using MessagePack; -using MessagePack.Formatters; -using System; -using System.Linq; -using System.Reflection; -using System.Threading; -using System.Threading.Tasks; - -namespace MagicOnion -{ - internal class MarshallingAsyncStreamReader : IAsyncStreamReader, IDisposable - { - readonly IAsyncStreamReader inner; - readonly MessagePackSerializerOptions options; - - public MarshallingAsyncStreamReader(IAsyncStreamReader inner, MessagePackSerializerOptions options) - { - this.inner = inner; - this.options = options; - } - - public T Current { get; private set; } - - public async Task MoveNext(CancellationToken cancellationToken) - { - if (await inner.MoveNext(cancellationToken)) - { - this.Current = MessagePackSerializer.Deserialize(inner.Current, options); - return true; - } - else - { - return false; - } - } - - public void Dispose() - { - (inner as IDisposable)?.Dispose(); - } - } - - internal class MarshallingClientStreamWriter : IClientStreamWriter - { - readonly IClientStreamWriter inner; - readonly MessagePackSerializerOptions options; - - public MarshallingClientStreamWriter(IClientStreamWriter inner, MessagePackSerializerOptions options) - { - this.inner = inner; - this.options = options; - } - - public WriteOptions WriteOptions - { - get - { - return inner.WriteOptions; - } - - set - { - inner.WriteOptions = value; - } - } - - public Task CompleteAsync() - { - return inner.CompleteAsync(); - } - - public Task WriteAsync(T message) - { - var bytes = MessagePackSerializer.Serialize(message, options); - return inner.WriteAsync(bytes); - } - } - - // invoke from dynamic methods so must be public - public static class MagicOnionMarshallers - { - static readonly Type[] dynamicArgumentTupleTypes = typeof(DynamicArgumentTuple<,>).GetTypeInfo().Assembly - .GetTypes() - .Where(x => x.Name.StartsWith("DynamicArgumentTuple") && !x.Name.Contains("Formatter")) - .OrderBy(x => x.GetGenericArguments().Length) - .ToArray(); - - static readonly Type[] dynamicArgumentTupleFormatterTypes = typeof(DynamicArgumentTupleFormatter<,,>).GetTypeInfo().Assembly - .GetTypes() - .Where(x => x.Name.StartsWith("DynamicArgumentTupleFormatter")) - .OrderBy(x => x.GetGenericArguments().Length) - .ToArray(); - - public static readonly byte[] UnsafeNilBytes = new byte[] { MessagePackCode.Nil }; - - public static readonly Marshaller ThroughMarshaller = new Marshaller(x => x, x => x); - - internal static Type CreateRequestType(ParameterInfo[] parameters) - { - if (parameters.Length == 0) - { - return typeof(byte[]); - } - else if (parameters.Length == 1) - { - var t = parameters[0].ParameterType; - return t; - } - else if (parameters.Length > 20) - { - throw new InvalidOperationException($"Parameter length must be <= 20, length:{parameters.Length}"); - } - else - { - // start from T2 - var tupleTypeBase = dynamicArgumentTupleTypes[parameters.Length - 2]; - var t = tupleTypeBase.MakeGenericType(parameters.Select(x => x.ParameterType).ToArray()); - return t; - } - } - - public static Type CreateRequestTypeAndSetResolver(string path, ParameterInfo[] parameters, ref IFormatterResolver resolver) - { - if (parameters.Length == 0) - { - return typeof(byte[]); - } - else if (parameters.Length == 1) - { - return parameters[0].ParameterType; - } - else if (parameters.Length > 20) - { - throw new InvalidOperationException($"Parameter length must be <= 20, path:{path} length:{parameters.Length}"); - } - else - { - // start from T2 - var tupleTypeBase = dynamicArgumentTupleTypes[parameters.Length - 2]; - var formatterTypeBase = dynamicArgumentTupleFormatterTypes[parameters.Length - 2]; - - var t = tupleTypeBase.MakeGenericType(parameters.Select(x => x.ParameterType).ToArray()); - var formatterType = formatterTypeBase.MakeGenericType(parameters.Select(x => x.ParameterType).ToArray()); - - var defaultValues = parameters - .Select(x => - { - if (x.HasDefaultValue) - { - return x.DefaultValue; - } - else if (x.ParameterType.GetTypeInfo().IsValueType) - { - return Activator.CreateInstance(x.ParameterType); - } - else - { - return null; - } - }).ToArray(); - - var formatter = Activator.CreateInstance(formatterType, defaultValues); - - resolver = new PriorityResolver(t, formatter, resolver); - return t; - } - } - - public static object InstantiateDynamicArgumentTuple(Type[] typeParameters, object[] arguments) - { - // start from T2 - var tupleTypeBase = dynamicArgumentTupleTypes[arguments.Length - 2]; - return Activator.CreateInstance(tupleTypeBase.MakeGenericType(typeParameters), arguments); - } - } - - internal class PriorityResolver : IFormatterResolver - { - readonly Type formatterType; - readonly object formatter; - readonly IFormatterResolver innerResolver; - - public PriorityResolver(Type formatterType, object formatter, IFormatterResolver innerResolver) - { - this.formatterType = formatterType; - this.formatter = formatter; - this.innerResolver = innerResolver; - } - - public IMessagePackFormatter GetFormatter() - { - if (typeof(T) == formatterType) - { - return (IMessagePackFormatter)formatter; - } - else if (innerResolver == null) - { - return MessagePackSerializer.DefaultOptions.Resolver.GetFormatterWithVerify(); - } - else - { - return innerResolver.GetFormatterWithVerify(); - } - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs.meta b/Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs.meta deleted file mode 100644 index b76cefbe8..000000000 --- a/Assets/Scripts/NIH/MagicOnion/MagicOnionMarshallers.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 667fe11f4c8014340bbde4521d337330 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs b/Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs deleted file mode 100644 index 40373dc55..000000000 --- a/Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs +++ /dev/null @@ -1,62 +0,0 @@ -using Grpc.Core; -using System; - -namespace MagicOnion -{ - public static class MetadataExtensions - { - public const string BinarySuffix = "-bin"; - - /// - /// Get metdata entry. If does not exists, return null. - /// - public static Metadata.Entry Get(this Metadata metadata, string key, bool ignoreCase = true) - { - for (int i = 0; i < metadata.Count; i++) - { - var entry = metadata[i]; - if (ignoreCase) - { - if (entry.Key.Equals(key, StringComparison.OrdinalIgnoreCase)) - { - return entry; - } - } - else - { - if (entry.Key == key) - { - return entry; - } - } - } - return null; - } - - /// - /// Get metdata string value. If does not exists, return null. - /// - public static string GetValue(this Metadata metadata, string key, bool ignoreCase = true) - { - for (int i = 0; i < metadata.Count; i++) - { - var entry = metadata[i]; - if (ignoreCase) - { - if (entry.Key.Equals(key, StringComparison.OrdinalIgnoreCase)) - { - return entry.Value; - } - } - else - { - if (entry.Key == key) - { - return entry.Value; - } - } - } - return null; - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs.meta b/Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs.meta deleted file mode 100644 index 848747836..000000000 --- a/Assets/Scripts/NIH/MagicOnion/MetadataExtensions.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ad9313e64fc51ed44a50cb156e479929 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs b/Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs deleted file mode 100644 index b310e61fd..000000000 --- a/Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Grpc.Core; -using System; - -namespace MagicOnion -{ - public class ReturnStatusException : Exception - { - public StatusCode StatusCode { get; private set; } - public string Detail { get; private set; } - - public ReturnStatusException(StatusCode statusCode, string detail) - { - this.StatusCode = statusCode; - this.Detail = detail; - } - - public Status ToStatus() - { - return new Status(StatusCode, Detail ?? ""); - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs.meta b/Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs.meta deleted file mode 100644 index 676745c11..000000000 --- a/Assets/Scripts/NIH/MagicOnion/ReturnStatusException.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: b4c3bb3dea67c86419674cd758cfa7ea -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Server.meta b/Assets/Scripts/NIH/MagicOnion/Server.meta deleted file mode 100644 index e21b086d0..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Server.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e463862d96bbe2e4c8060ea4f8256eff -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Server/Hubs.meta b/Assets/Scripts/NIH/MagicOnion/Server/Hubs.meta deleted file mode 100644 index 64e61757b..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Server/Hubs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5c9aa9fba89d3404eb2292310360d574 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs b/Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs deleted file mode 100644 index 6afcc563d..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs +++ /dev/null @@ -1,94 +0,0 @@ -using MagicOnion.Utils; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Threading.Tasks; - -namespace MagicOnion.Server.Hubs -{ - public static class BroadcasterHelper - { - internal static readonly Type[] dynamicArgumentTupleTypes = typeof(DynamicArgumentTuple<,>).GetTypeInfo().Assembly - .GetTypes() - .Where(x => x.Name.StartsWith("DynamicArgumentTuple") && !x.Name.Contains("Formatter")) - .OrderBy(x => x.GetGenericArguments().Length) - .ToArray(); - - internal static MethodDefinition[] SearchDefinitions(Type interfaceType) - { - return interfaceType - .GetInterfaces() - .Concat(new[] { interfaceType }) - .SelectMany(x => x.GetMethods()) - .Where(x => - { - var methodInfo = x; - if (methodInfo.IsSpecialName && (methodInfo.Name.StartsWith("set_") || methodInfo.Name.StartsWith("get_"))) return false; - if (methodInfo.GetCustomAttribute(false) != null) return false; // ignore - - var methodName = methodInfo.Name; - if (methodName == "Equals" - || methodName == "GetHashCode" - || methodName == "GetType" - || methodName == "ToString" - ) - { - return false; - } - - return true; - }) - .Where(x => !x.IsSpecialName) - .Select(x => new MethodDefinition - { - ReceiverType = interfaceType, - MethodInfo = x, - }) - .ToArray(); - } - - internal static void VerifyMethodDefinitions(MethodDefinition[] definitions) - { - // define and set. - var map = new Dictionary(definitions.Length); - foreach (var item in definitions) - { - var methodId = item.MethodInfo.GetCustomAttribute()?.MethodId ?? FNV1A32.GetHashCode(item.MethodInfo.Name); - if (map.ContainsKey(methodId)) - { - throw new Exception($"TReceiver does not allows duplicate methodId(hash code). Please change name or use MethodIdAttribute. {map[methodId].MethodInfo.Name} and {item.MethodInfo.Name}"); - } - map.Add(methodId, item); - - if (!(item.MethodInfo.ReturnType == typeof(void))) - { - throw new Exception($"Invalid definition, TReceiver's return type must only be `void`. {item.MethodInfo.Name}."); - } - - item.MethodId = methodId; - } - } - - public static async void FireAndForget(Task task) - { - try - { - await task.ConfigureAwait(false); - } - catch(Exception ex) - { - Grpc.Core.GrpcEnvironment.Logger?.Error(ex, "exception occured in client broadcast."); - } - } - - internal class MethodDefinition - { - public string Path => ReceiverType.Name + "/" + MethodInfo.Name; - - public Type ReceiverType; - public MethodInfo MethodInfo; - public int MethodId; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs.meta b/Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs.meta deleted file mode 100644 index 920f3a4ee..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Server/Hubs/BroadcasterHelper.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a482aff8c25287942af22c031e219f8d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs b/Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs deleted file mode 100644 index 34f020490..000000000 --- a/Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs +++ /dev/null @@ -1,207 +0,0 @@ -using MessagePack; -using System.Buffers; -using MessagePack.Formatters; -using System; -using System.Collections.Generic; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -namespace MagicOnion -{ - public class UnsafeDirectBlitResolver : IFormatterResolver - { - public static readonly UnsafeDirectBlitResolver Instance = new UnsafeDirectBlitResolver(); - - bool isFreezed = false; - Dictionary formatters = new Dictionary(); - - UnsafeDirectBlitResolver() - { - } - - public void Register() - where T : unmanaged - { - if (isFreezed) - { - throw new InvalidOperationException("Register must call on startup(before use GetFormatter)."); - } - - formatters.Add(typeof(T), new UnsafeDirectBlitFormatter()); - formatters.Add(typeof(T[]), new UnsafeDirectBlitArrayFormatter()); - } - - public IMessagePackFormatter GetFormatter() - { - return FormatterCache.formatter; - } - - static class FormatterCache - { - public static readonly IMessagePackFormatter formatter; - - static FormatterCache() - { - Instance.isFreezed = true; - - var t = typeof(T); - - object formatterObject; - if (Instance.formatters.TryGetValue(t, out formatterObject)) - { - formatter = (IMessagePackFormatter)formatterObject; - } - } - } - } - - public class UnsafeDirectBlitArrayFormatter : IMessagePackFormatter - where T : unmanaged - { - const int TypeCode = 45; - - // use ext instead of ArrayFormatter for extremely boostup performance. - // Layout: [extHeader, isLittlEendian(bool), bytes()] - - readonly int StructLength; - - public UnsafeDirectBlitArrayFormatter() - { - this.StructLength = Unsafe.SizeOf(); - } - - public void Serialize(ref MessagePackWriter writer, T[] value, MessagePackSerializerOptions options) - { - if (value == null) - { - writer.WriteNil(); - return; - } - - var byteLen = value.Length * StructLength; - writer.WriteExtensionFormatHeader(new ExtensionHeader(TypeCode, byteLen + 1)); - writer.Write(BitConverter.IsLittleEndian); - - /* - Span span = writer.GetSpan(); - Unsafe.CopyBlockUnaligned(ref span[0], ref Unsafe.As(ref value[0]), (uint)byteLen); - writer.Advance(byteLen); - */ - - // currently can not write directly, wait msgpack update. - var span = System.Buffers.ArrayPool.Shared.Rent(byteLen); - try - { - Unsafe.CopyBlockUnaligned(ref span[0], ref Unsafe.As(ref value[0]), (uint)byteLen); - writer.WriteRaw(span.AsSpan().Slice(0, byteLen)); - } - finally - { - System.Buffers.ArrayPool.Shared.Return(span); - } - } - - public T[] Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - if (reader.IsNil) - { - return null; - } - - var ext = reader.ReadExtensionFormat(); - if (ext.Header.TypeCode != TypeCode) throw new InvalidOperationException("Invalid typeCode."); - - var extReader = new MessagePackReader(ext.Data); - var isLittleEndian = extReader.ReadBoolean(); - - // extReader.read - byte[] rentMemory = default; - ReadOnlySpan span = default; - { - var seqSlice = extReader.Sequence.Slice(extReader.Position); - if (isLittleEndian != BitConverter.IsLittleEndian) - { - rentMemory = ArrayPool.Shared.Rent((int)seqSlice.Length); - seqSlice.CopyTo(rentMemory); - Array.Reverse(rentMemory); - span = rentMemory; - } - else - { - if (seqSlice.IsSingleSegment) - { - span = seqSlice.First.Span; - } - else - { - rentMemory = ArrayPool.Shared.Rent((int)seqSlice.Length); - seqSlice.CopyTo(rentMemory); - span = rentMemory; - } - } - } - - var result = new T[span.Length / StructLength]; - Unsafe.CopyBlockUnaligned(ref Unsafe.As(ref result[0]), ref MemoryMarshal.GetReference(span), (uint)span.Length); - return result; - } - } - - public class UnsafeDirectBlitFormatter : IMessagePackFormatter - where T : unmanaged - { - readonly int size; - - public UnsafeDirectBlitFormatter() - { - // Note: check is T blittable? - this.size = Unsafe.SizeOf(); - } - - public void Serialize(ref MessagePackWriter writer, T value, MessagePackSerializerOptions options) - { - // fix to v2.0-stable - byte[] rentMemory = ArrayPool.Shared.Rent(size); - try - { - var span = rentMemory.AsSpan().Slice(size); - Unsafe.WriteUnaligned(ref span[0], value); - writer.Write(span); - } - finally - { - ArrayPool.Shared.Return(rentMemory); - } - } - - public T Deserialize(ref MessagePackReader reader, MessagePackSerializerOptions options) - { - var segment = reader.ReadBytes(); - if (segment == null) - { - throw new InvalidOperationException("data is null"); - } - - ValidateRead(segment.Value.Length); - - if (segment.Value.IsSingleSegment) - { - var firstMemory = segment.Value.First; - return Unsafe.ReadUnaligned(ref MemoryMarshal.GetReference(firstMemory.Span)); - } - else - { - var memory = segment.Value.ToArray(); - return Unsafe.ReadUnaligned(ref memory[0]); - } - } - - void ValidateRead(long length) - { - if (length < size) - { - throw new InvalidOperationException("Overflow"); - } - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs.meta b/Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs.meta deleted file mode 100644 index 44c0fc5eb..000000000 --- a/Assets/Scripts/NIH/MagicOnion/UnsafeDirectBlitResolver.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 02eef94aae0af164983a0d182274bc8d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs b/Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs deleted file mode 100644 index acf6209c9..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs +++ /dev/null @@ -1,100 +0,0 @@ -using System; -using System.Buffers; - -namespace MagicOnion.Utils -{ - internal sealed class ArrayPoolBufferWriter : IBufferWriter, IDisposable - { - [ThreadStatic] - static ArrayPoolBufferWriter staticInstance; - - public static ArrayPoolBufferWriter RentThreadStaticWriter() - { - if (staticInstance == null) - { - staticInstance = new ArrayPoolBufferWriter(); - } - staticInstance.Prepare(); - return staticInstance; - } - - const int MinimumBufferSize = 32767; // use 32k buffer. - - byte[] buffer; - int index; - - void Prepare() - { - if (buffer == null) - { - buffer = ArrayPool.Shared.Rent(MinimumBufferSize); - } - index = 0; - } - - public ReadOnlyMemory WrittenMemory => buffer.AsMemory(0, index); - public ReadOnlySpan WrittenSpan => buffer.AsSpan(0, index); - - public int WrittenCount => index; - - public int Capacity => buffer.Length; - - public int FreeCapacity => buffer.Length - index; - - public void Advance(int count) - { - if (count < 0) throw new ArgumentException(nameof(count)); - index += count; - } - - public Memory GetMemory(int sizeHint = 0) - { - CheckAndResizeBuffer(sizeHint); - return buffer.AsMemory(index); - } - - public Span GetSpan(int sizeHint = 0) - { - CheckAndResizeBuffer(sizeHint); - return buffer.AsSpan(index); - } - - void CheckAndResizeBuffer(int sizeHint) - { - if (sizeHint < 0) throw new ArgumentException(nameof(sizeHint)); - - if (sizeHint == 0) - { - sizeHint = MinimumBufferSize; - } - - int availableSpace = buffer.Length - index; - - if (sizeHint > availableSpace) - { - int growBy = Math.Max(sizeHint, buffer.Length); - - int newSize = checked(buffer.Length + growBy); - - byte[] oldBuffer = buffer; - - buffer = ArrayPool.Shared.Rent(newSize); - - Span previousBuffer = oldBuffer.AsSpan(0, index); - previousBuffer.CopyTo(buffer); - ArrayPool.Shared.Return(oldBuffer); - } - } - - public void Dispose() - { - if (buffer == null) - { - return; - } - - ArrayPool.Shared.Return(buffer); - buffer = null; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs.meta deleted file mode 100644 index 59e2873cc..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ArrayPoolBufferWriter.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3c3adb89f0d51ea448be279645a9c04c -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs b/Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs deleted file mode 100644 index 4101c75cb..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs +++ /dev/null @@ -1,109 +0,0 @@ -#if net45 -using System.Collections; -using System.Runtime.Remoting; -using System.Runtime.Remoting.Messaging; -using System.Linq.Expressions; -using System.Reflection; - -namespace System.Threading -{ - /// - /// Polyfill for AsyncLocal functionality added in NETSTANDARD1.3 and .NET 4.6 - /// - /// - /// The type of the value to encapsulate and follow. - /// - internal class AsyncLocal - { - private readonly string _name = Guid.NewGuid().ToString("N"); - - /// - /// Gets or set the value to flow with . - /// - public T Value - { - get - { - if (CallContext.LogicalGetData(_name) is ObjectHandle slot) - return (T)slot.Unwrap(); - return default(T); - } - set - { - // Mimic the implementation of AsyncLocal - var executionContext = Thread.CurrentThread.GetMutableExecutionContext(); - var logicalCallContext = executionContext.GetLogicalCallContext(); - var datastore = logicalCallContext.GetDatastore(); - var datastoreCopy = datastore == null ? new Hashtable() : new Hashtable(datastore); - var slot = new ObjectHandle(value); - datastoreCopy[_name] = slot; - logicalCallContext.SetDatastore(datastoreCopy); - } - } - } - - internal static class ThreadExtensions - { - private static readonly Func _getMutableExecutionContextFunc; - - static ThreadExtensions() - { - var getMutableExecutionContextMethodInfo = typeof(Thread).GetMethod("GetMutableExecutionContext", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - var instanceParameterExpression = Expression.Parameter(typeof(Thread)); - var functionCallExpression = Expression.Call(instanceParameterExpression, getMutableExecutionContextMethodInfo); - var lambdaExpression = Expression.Lambda>(functionCallExpression, instanceParameterExpression); - _getMutableExecutionContextFunc = lambdaExpression.Compile(); - } - - private static MethodInfo GetMutableExecutionContextMethodInfo = - typeof(Thread).GetMethod("GetMutableExecutionContext", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - - public static ExecutionContext GetMutableExecutionContext(this Thread thread) - => _getMutableExecutionContextFunc(thread); - } - - internal static class LogicalCallContextExtensions - { - private static readonly Func _getDatastoreFunc; - private static readonly Func _setDatastoreFunc; - - static LogicalCallContextExtensions() - { - var datastoreFieldInfo = typeof(LogicalCallContext).GetField("m_Datastore", BindingFlags.Instance | BindingFlags.NonPublic); - var instanceParameterExpression = Expression.Parameter(typeof(LogicalCallContext)); - var memberAccessExpression = Expression.MakeMemberAccess(instanceParameterExpression, datastoreFieldInfo); - var getLambdaExpression = Expression.Lambda>(memberAccessExpression, instanceParameterExpression); - _getDatastoreFunc = getLambdaExpression.Compile(); - var valueParameterExpression = Expression.Parameter(typeof(Hashtable)); - var assignmentExpression = Expression.Assign(memberAccessExpression, valueParameterExpression); - var setFunctionBody = Expression.Block(assignmentExpression, Expression.Constant(true)); - var setLambdaExpression = Expression.Lambda>(setFunctionBody, instanceParameterExpression, valueParameterExpression); - _setDatastoreFunc = setLambdaExpression.Compile(); - } - - public static Hashtable GetDatastore(this LogicalCallContext context) - => _getDatastoreFunc(context); - - public static void SetDatastore(this LogicalCallContext context, Hashtable datastore) - => _setDatastoreFunc(context, datastore); - } - - internal static class ExecutionContextExtensions - { - private static readonly Func _getLogicalCallContextFunc; - - static ExecutionContextExtensions() - { - var logicalCallContextPropertyInfo = typeof(ExecutionContext).GetProperty("LogicalCallContext", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); - var instanceParameterExpression = Expression.Parameter(typeof(ExecutionContext)); - var memberAccessExpression = Expression.MakeMemberAccess(instanceParameterExpression, logicalCallContextPropertyInfo); - var lambdaExpression = Expression.Lambda>(memberAccessExpression, instanceParameterExpression); - _getLogicalCallContextFunc = lambdaExpression.Compile(); - } - - public static LogicalCallContext GetLogicalCallContext(this ExecutionContext executionContext) - => _getLogicalCallContextFunc(executionContext); - } -} - -#endif \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs.meta deleted file mode 100644 index 74978c567..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/AsyncLocalShim.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: dca9e0a0d2088cd47b918c6f54739b95 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs b/Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs deleted file mode 100644 index 418d708fc..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs +++ /dev/null @@ -1,98 +0,0 @@ -#if NON_UNITY || !NET_STANDARD_2_0 - -using System; -using System.Reflection; -using System.Reflection.Emit; -using System.Runtime.CompilerServices; - -namespace MagicOnion.Utils -{ -#if ENABLE_SAVE_ASSEMBLY - public -#else - internal -#endif - class DynamicAssembly - { - readonly object gate = new object(); - -#if ENABLE_SAVE_ASSEMBLY - readonly string moduleName; -#endif - readonly AssemblyBuilder assemblyBuilder; - readonly ModuleBuilder moduleBuilder; - - // don't expose ModuleBuilder(should use lock) - // public ModuleBuilder ModuleBuilder { get { return moduleBuilder; } } - - public DynamicAssembly(string moduleName) - { -#if ENABLE_SAVE_ASSEMBLY - this.moduleName = moduleName; - this.assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(moduleName), AssemblyBuilderAccess.RunAndSave); - this.moduleBuilder = assemblyBuilder.DefineDynamicModule(moduleName, moduleName + ".dll"); -#else - this.assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(moduleName), AssemblyBuilderAccess.Run); - this.moduleBuilder = assemblyBuilder.DefineDynamicModule(moduleName); -#endif - - // HACK: Allow access to `internal` classes from dynamically generated assembly. - // https://www.strathweb.com/2018/10/no-internalvisibleto-no-problem-bypassing-c-visibility-rules-with-roslyn/ - var ignoreAccessChecksTo = new CustomAttributeBuilder(typeof(IgnoresAccessChecksToAttribute).GetConstructor(new[] {typeof(string)}), new []{ "MagicOnion" }); - this.assemblyBuilder.SetCustomAttribute(ignoreAccessChecksTo); - } - - // requires lock on mono environment(for example, UnityEditor). see: https://github.com/neuecc/MessagePack-CSharp/issues/161 - - public TypeBuilder DefineType(string name, TypeAttributes attr) - { - lock (gate) - { - return moduleBuilder.DefineType(name, attr); - } - } - - public TypeBuilder DefineType(string name, TypeAttributes attr, Type parent) - { - lock (gate) - { - return moduleBuilder.DefineType(name, attr, parent); - } - } - - public TypeBuilder DefineType(string name, TypeAttributes attr, Type parent, Type[] interfaces) - { - lock (gate) - { - return moduleBuilder.DefineType(name, attr, parent, interfaces); - } - } - -#if ENABLE_SAVE_ASSEMBLY - - public AssemblyBuilder Save() - { - assemblyBuilder.Save(moduleName + ".dll"); - return assemblyBuilder; - } - -#endif - } -} - - -namespace System.Runtime.CompilerServices -{ - [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] - internal class IgnoresAccessChecksToAttribute : Attribute - { - public IgnoresAccessChecksToAttribute(string assemblyName) - { - AssemblyName = assemblyName; - } - - public string AssemblyName { get; } - } -} - -#endif \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs.meta deleted file mode 100644 index d39cd5f93..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/DynamicAssembly.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9d0b2ee1dc31faa43811b3a203a3fc16 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs b/Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs deleted file mode 100644 index 86bc69449..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Text; - -namespace MagicOnion.Utils -{ - public static class FNV1A32 - { - public static int GetHashCode(string str) - { - return GetHashCode(Encoding.UTF8.GetBytes(str)); - } - - public static int GetHashCode(byte[] obj) - { - uint hash = 0; - if (obj != null) - { - hash = 2166136261; - for (int i = 0; i < obj.Length; i++) - { - hash = unchecked((obj[i] ^ hash) * 16777619); - } - } - - return unchecked((int)hash); - } - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs.meta deleted file mode 100644 index 81f53b141..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/FNV1A32.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4257d32e13eee874493c07bf4d4bfc8f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs b/Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs deleted file mode 100644 index fc08c7f87..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs +++ /dev/null @@ -1,170 +0,0 @@ -#if NON_UNITY || !NET_STANDARD_2_0 - -using System; -using System.Reflection; -using System.Reflection.Emit; - -namespace MagicOnion.Utils -{ - // full list of can create optimize helper -> https://github.com/kevin-montrose/Sigil#automated-opcode-choice - - /// - /// Provides optimized generation code and helpers. - /// - internal static class ILGeneratorExtensions - { - /// - /// Loads the local variable at a specific index onto the evaluation stack. - /// - public static void EmitLdloc(this ILGenerator il, int index) - { - switch (index) - { - case 0: - il.Emit(OpCodes.Ldloc_0); - break; - case 1: - il.Emit(OpCodes.Ldloc_1); - break; - case 2: - il.Emit(OpCodes.Ldloc_2); - break; - case 3: - il.Emit(OpCodes.Ldloc_3); - break; - default: - if (index <= 255) - { - il.Emit(OpCodes.Ldloc_S, (byte)index); - } - else - { - il.Emit(OpCodes.Ldloc, (short)index); - } - break; - } - } - - /// - /// Pops the current value from the top of the evaluation stack and stores it in a the local variable list at a specified index. - /// - public static void EmitStloc(this ILGenerator il, int index) - { - switch (index) - { - case 0: - il.Emit(OpCodes.Stloc_0); - break; - case 1: - il.Emit(OpCodes.Stloc_1); - break; - case 2: - il.Emit(OpCodes.Stloc_2); - break; - case 3: - il.Emit(OpCodes.Stloc_3); - break; - default: - if (index <= 255) - { - il.Emit(OpCodes.Stloc_S, (byte)index); - } - else - { - il.Emit(OpCodes.Stloc, (short)index); - } - break; - } - } - - /// - /// Loads the address of the local variable at a specific index onto the evaluation statck. - /// - public static void EmitLdloca(this ILGenerator il, int index) - { - if (index <= 255) - { - il.Emit(OpCodes.Ldloca_S, (byte)index); - } - else - { - il.Emit(OpCodes.Ldloca, (short)index); - } - } - - /// - /// Pushes a supplied value of type int32 onto the evaluation stack as an int32. - /// - public static void EmitLdc_I4(this ILGenerator il, int value) - { - switch (value) - { - case -1: - il.Emit(OpCodes.Ldc_I4_M1); - break; - case 0: - il.Emit(OpCodes.Ldc_I4_0); - break; - case 1: - il.Emit(OpCodes.Ldc_I4_1); - break; - case 2: - il.Emit(OpCodes.Ldc_I4_2); - break; - case 3: - il.Emit(OpCodes.Ldc_I4_3); - break; - case 4: - il.Emit(OpCodes.Ldc_I4_4); - break; - case 5: - il.Emit(OpCodes.Ldc_I4_5); - break; - case 6: - il.Emit(OpCodes.Ldc_I4_6); - break; - case 7: - il.Emit(OpCodes.Ldc_I4_7); - break; - case 8: - il.Emit(OpCodes.Ldc_I4_8); - break; - default: - if (value >= -128 && value <= 127) - { - il.Emit(OpCodes.Ldc_I4_S, (sbyte)value); - } - else - { - il.Emit(OpCodes.Ldc_I4, value); - } - break; - } - } - - /// - /// Helper for Pop op. - /// - public static void EmitPop(this ILGenerator il, int count) - { - for (int i = 0; i < count; i++) - { - il.Emit(OpCodes.Pop); - } - } - - public static void EmitNullReturn(this ILGenerator il) - { - il.Emit(OpCodes.Ldnull); - il.Emit(OpCodes.Ret); - } - - public static void EmitThrowNotimplemented(this ILGenerator il) - { - il.Emit(OpCodes.Newobj, typeof(System.NotImplementedException).GetConstructor(Type.EmptyTypes)); - il.Emit(OpCodes.Throw); - } - } -} - -#endif \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs.meta deleted file mode 100644 index 259c9140b..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ILGeneratorExtensions.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8d05c89a473ec164b8dc9a918d5c57d5 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs b/Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs deleted file mode 100644 index cf707edc4..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Reflection; -using System.Linq; -using System.Text; - -// Internal, Global. -internal static class ReflectionExtensions -{ - public static bool IsNullable(this System.Reflection.TypeInfo type) - { - return type.IsGenericType && type.GetGenericTypeDefinition() == typeof(System.Nullable<>); - } - - public static bool IsPublic(this System.Reflection.TypeInfo type) - { - return type.IsPublic; - } - -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs.meta deleted file mode 100644 index 8a7359719..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ReflectionExtensions.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 251abd13d00009a44979847381ea168f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs b/Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs deleted file mode 100644 index 761253ab6..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs +++ /dev/null @@ -1,185 +0,0 @@ -#if NON_UNITY - -using System; -using System.Runtime.CompilerServices; -using System.Runtime.ExceptionServices; -using System.Threading; -using System.Threading.Tasks; -using System.Threading.Tasks.Sources; - -namespace MagicOnion.Utils -{ - public class ReservedWhenAllPromise : IValueTaskSource - { - static class ContinuationSentinel - { - public static readonly Action AvailableContinuation = _ => { }; - public static readonly Action CompletedContinuation = _ => { }; - } - - static readonly ContextCallback execContextCallback = ExecutionContextCallback; - static readonly SendOrPostCallback syncContextCallback = SynchronizationContextCallback; - - int completedCount; - readonly int resultCount; - - ExceptionDispatchInfo exception; - Action continuation = ContinuationSentinel.AvailableContinuation; - object state; - SynchronizationContext syncContext; - ExecutionContext execContext; - - public ReservedWhenAllPromise(int reserveCount) - { - this.resultCount = reserveCount; - } - - public ValueTask AsValueTask() => new ValueTask(this, 0); - - public void Add(ValueTask task) - { - var awaiter = task.GetAwaiter(); - if (awaiter.IsCompleted) - { - try - { - awaiter.GetResult(); - } - catch (Exception ex) - { - exception = ExceptionDispatchInfo.Capture(ex); - return; - } - TryInvokeContinuationWithIncrement(); - } - else - { - RegisterUnsafeOnCompleted(awaiter); - } - } - - void RegisterUnsafeOnCompleted(ValueTaskAwaiter awaiter) - { - awaiter.UnsafeOnCompleted(() => ContinuationWithCapture(awaiter)); - } - - void ContinuationWithCapture(ValueTaskAwaiter awaiter) - { - try - { - awaiter.GetResult(); - } - catch (Exception ex) - { - exception = ExceptionDispatchInfo.Capture(ex); - TryInvokeContinuation(); - return; - } - TryInvokeContinuationWithIncrement(); - } - - void TryInvokeContinuationWithIncrement() - { - if (Interlocked.Increment(ref completedCount) == resultCount) - { - TryInvokeContinuation(); - } - } - - void TryInvokeContinuation() - { - var c = Interlocked.Exchange(ref continuation, ContinuationSentinel.CompletedContinuation); - if (c != ContinuationSentinel.AvailableContinuation && c != ContinuationSentinel.CompletedContinuation) - { - var spinWait = new SpinWait(); - while (state == null) // worst case, state is not set yet so wait. - { - spinWait.SpinOnce(); - } - - if (execContext != null) - { - ExecutionContext.Run(execContext, execContextCallback, Tuple.Create(c, this)); - } - else if (syncContext != null) - { - syncContext.Post(syncContextCallback, Tuple.Create(c, this)); - } - else - { - c(state); - } - } - } - - public void GetResult(short token) - { - if (exception != null) - { - exception.Throw(); - } - } - - public ValueTaskSourceStatus GetStatus(short token) - { - return (completedCount == resultCount) ? ValueTaskSourceStatus.Succeeded - : (exception != null) ? ((exception.SourceException is OperationCanceledException) ? ValueTaskSourceStatus.Canceled : ValueTaskSourceStatus.Faulted) - : ValueTaskSourceStatus.Pending; - } - - public void OnCompleted(Action continuation, object state, short token, ValueTaskSourceOnCompletedFlags flags) - { - if (Interlocked.CompareExchange(ref this.continuation, continuation, ContinuationSentinel.AvailableContinuation) != ContinuationSentinel.AvailableContinuation) - { - if (this.continuation == ContinuationSentinel.CompletedContinuation) - { - continuation(state); - return; - } - throw new InvalidOperationException("does not allow multiple await."); - } - - this.state = state; - if ((flags & ValueTaskSourceOnCompletedFlags.FlowExecutionContext) == ValueTaskSourceOnCompletedFlags.FlowExecutionContext) - { - execContext = ExecutionContext.Capture(); - } - if ((flags & ValueTaskSourceOnCompletedFlags.UseSchedulingContext) == ValueTaskSourceOnCompletedFlags.UseSchedulingContext) - { - syncContext = SynchronizationContext.Current; - } - - if (GetStatus(token) != ValueTaskSourceStatus.Pending) - { - TryInvokeContinuation(); - } - } - - static void ExecutionContextCallback(object state) - { - var t = (Tuple, ReservedWhenAllPromise>)state; - var self = t.Item2; - if (self.syncContext != null) - { - SynchronizationContextCallback(state); - } - else - { - var invokeState = self.state; - self.state = null; - t.Item1.Invoke(invokeState); - } - } - - static void SynchronizationContextCallback(object state) - { - var t = (Tuple, ReservedWhenAllPromise>)state; - var self = t.Item2; - var invokeState = self.state; - self.state = null; - t.Item1.Invoke(invokeState); - } - } -} - -#endif \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs.meta deleted file mode 100644 index 3a2d39e67..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/ReservedWhenAllPromise.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9446850abcb2fa44e9499655da1e0cbb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs b/Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs deleted file mode 100644 index c8677ad05..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Threading.Tasks; - -namespace MagicOnion.Utils -{ - internal interface ITaskCompletion - { - bool TrySetException(Exception ex); - bool TrySetCanceled(); - } - - internal class TaskCompletionSourceEx : TaskCompletionSource, ITaskCompletion - { - bool ITaskCompletion.TrySetCanceled() - { - return this.TrySetCanceled(); - } - - bool ITaskCompletion.TrySetException(Exception ex) - { - return this.TrySetException(ex); - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs.meta deleted file mode 100644 index d186f7d1c..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/TaskCompletionSourceEx.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1035ff4255061dd45be4535ae9d8931f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs b/Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs deleted file mode 100644 index c23d335ae..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Threading.Tasks; - -namespace MagicOnion -{ - internal static class TaskEx - { - public static readonly Task CompletedTask = -#if net45 - Task.FromResult(0); -#else - Task.CompletedTask; -#endif - - } -} diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs.meta deleted file mode 100644 index 32560da4b..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/TaskEx.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 536fcbe91a4c2dc4a81b84a43e4b3bab -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs b/Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs deleted file mode 100644 index 4dcbcac17..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs +++ /dev/null @@ -1,158 +0,0 @@ -#if NON_UNITY - -using System; -using System.Collections.Generic; -using System.Runtime.CompilerServices; - -namespace MagicOnion.Utils -{ - public class DuplicateKeyException : Exception - { - public int HashCode { get; } - - public DuplicateKeyException(int hashCode) - : base("Duplicated. HashCode:" + hashCode) - { - HashCode = hashCode; - } - } - - /* - < 10000 String.GetHashCode is almost unique. - For example, Class/Methods lookup can avoid raw string lookup. - */ - public class UniqueHashDictionary - { - (int hash, T value)[][] table; - int indexFor; - int count; - int maxConflict; // debugging for perf. - - public int Count => count; - public int MaxConflict => maxConflict; - - public UniqueHashDictionary(params (int hashCode, T value)[] values) - { - CreateTable(values); - } - - void CreateTable((int hashCode, T value)[] values) - { - var capacity = CalculateCapacity(values.Length, 0.72f); - - table = new (int, T)[capacity][]; - indexFor = table.Length - 1; - count = values.Length; - - for (int i = 0; i < values.Length; i++) - { - ref var v = ref values[i]; - - var index = v.hashCode & indexFor; - if (table[index] == null) - { - // first case. - table[index] = new (int, T)[1] { v }; - continue; - } - else - { - ref var t = ref table[index]; - - // check duplicate - foreach (var item in t) - { - if (item.hash == v.hashCode) - { - throw new DuplicateKeyException(v.hashCode); - } - } - - // add last - Array.Resize(ref t, t.Length + 1); - t[t.Length - 1] = v; - - maxConflict = Math.Max(maxConflict, t.Length); - } - } - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public bool TryGetValue(int hashCode, out T value) - { - ref var array = ref table[hashCode & indexFor]; - if (array == null) - { - value = default(T); - return false; - } - - ref var v = ref array[0]; - if (v.hash == hashCode) - { - value = v.value; - return true; - } - - return TryGetValueSlow(ref array, hashCode, out value); - } - - [MethodImpl(MethodImplOptions.NoInlining)] - bool TryGetValueSlow(ref (int, T)[] array, int hashCode, out T value) - { - for (int i = 1; i < array.Length; i++) // 0 is already checked. - { - ref var v = ref array[i]; - if (v.Item1 == hashCode) - { - value = v.Item2; - return true; - } - } - - value = default(T); - return false; - } - - public IEnumerable AllValues() - { - foreach (var item in table) - { - if (item != null) - { - foreach (var item2 in item) - { - yield return item2.value; - } - } - } - } - - static int CalculateCapacity(int collectionSize, float loadFactor) - { - var size = (int)(((float)collectionSize) / loadFactor); - - size--; - size |= size >> 1; - size |= size >> 2; - size |= size >> 4; - size |= size >> 8; - size |= size >> 16; - size += 1; - - // specialize adjust - if (size < 128) - { - size = 128; - } - return size; - } - - public override string ToString() - { - return $"Count:{Count} MaxConflict:{MaxConflict}"; - } - } -} - -#endif \ No newline at end of file diff --git a/Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs.meta b/Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs.meta deleted file mode 100644 index ae113b201..000000000 --- a/Assets/Scripts/NIH/MagicOnion/Utils/UniqueHashDictionary.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ea92a6bb508a8d744897743fe5741f4b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/ActionCollection.cs b/Assets/Scripts/ServerShared/ActionCollection.cs new file mode 100644 index 000000000..d0fbf6622 --- /dev/null +++ b/Assets/Scripts/ServerShared/ActionCollection.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections; +using System.Collections.Generic; + +public abstract class NotAnActionCollection{} + +public class ActionCollection : NotAnActionCollection where T : Message +{ + private List> _actions = new List>(); + + public void Add(Action action) + { + _actions.Add(action); + } + + public void Invoke(T message) + { + foreach (var action in _actions) + { + action(message); + } + } + + public void Clear() + { + _actions.Clear(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ChatComponent.cs.meta b/Assets/Scripts/ServerShared/ActionCollection.cs.meta similarity index 83% rename from Assets/Scripts/ChatComponent.cs.meta rename to Assets/Scripts/ServerShared/ActionCollection.cs.meta index dc83ccfa4..ef9693c4c 100644 --- a/Assets/Scripts/ChatComponent.cs.meta +++ b/Assets/Scripts/ServerShared/ActionCollection.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7ea9e77872213814ea60ab05d1064578 +guid: 24330c4f854f8d047a47cbe0ae360b73 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/ServerShared/DatabaseCache.cs b/Assets/Scripts/ServerShared/DatabaseCache.cs index a8b5f9077..ddf02ea32 100644 --- a/Assets/Scripts/ServerShared/DatabaseCache.cs +++ b/Assets/Scripts/ServerShared/DatabaseCache.cs @@ -6,9 +6,10 @@ using MessagePack; public class DatabaseCache { + public event Action OnDataInsertLocal; public event Action OnDataUpdateLocal; - public event Action OnDataUpdateRemote; public event Action OnDataDeleteLocal; + public event Action OnDataUpdateRemote; public Action Logger = Console.WriteLine; @@ -25,6 +26,7 @@ public class DatabaseCache { if (entry != null) { + var exists = _entries.ContainsKey(entry.ID); _entries[entry.ID] = entry; var type = entry.GetType(); var types = type.FindInterfaces((_, __) => true, null).Append(type); @@ -34,10 +36,16 @@ public class DatabaseCache _types[t] = new Dictionary(); _types[t][entry.ID] = entry; } - if(remote) + + if (remote) OnDataUpdateRemote?.Invoke(entry); else - OnDataUpdateLocal?.Invoke(entry); + { + if (exists) + OnDataUpdateLocal?.Invoke(entry); + else + OnDataInsertLocal?.Invoke(entry); + } } } diff --git a/Assets/Scripts/ServerShared/DatabaseItems.cs b/Assets/Scripts/ServerShared/DatabaseItems.cs index 3c8626e9a..f9b787320 100644 --- a/Assets/Scripts/ServerShared/DatabaseItems.cs +++ b/Assets/Scripts/ServerShared/DatabaseItems.cs @@ -47,13 +47,22 @@ public abstract class DatabaseEntry [MessagePackObject] [JsonObject(MemberSerialization.OptIn)] -public class Player : DatabaseEntry +public class Player : DatabaseEntry, INamedEntry { [JsonProperty("email")] [Key(1)] public string Email; [JsonProperty("password")] [Key(2)] public string Password; + + [JsonProperty("username")] [Key(3)] + public string Username; + + [IgnoreMember] public string EntryName + { + get => Username; + set => Username = value; + } } [MessagePackObject] diff --git a/Assets/Scripts/ServerShared/Extensions.cs b/Assets/Scripts/ServerShared/Extensions.cs index a87c86b32..89cc46f34 100644 --- a/Assets/Scripts/ServerShared/Extensions.cs +++ b/Assets/Scripts/ServerShared/Extensions.cs @@ -3,6 +3,7 @@ using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using LiteNetLib; using MessagePack; using Unity.Mathematics; using static Unity.Mathematics.math; @@ -38,6 +39,10 @@ public static class Extensions return Quality[item]; } + public static void Send(this NetPeer peer, T message, DeliveryMethod method = DeliveryMethod.ReliableOrdered) where T : Message + { + peer.Send(MessagePackSerializer.Serialize(message as Message), method); + } public static float Performance(this EquippableItemData itemData, float temperature) { diff --git a/Assets/Scripts/ServerShared/Hubs.meta b/Assets/Scripts/ServerShared/Hubs.meta deleted file mode 100644 index acfd04827..000000000 --- a/Assets/Scripts/ServerShared/Hubs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2e0485c6f6dee60498657a6f1f50ea69 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/Hubs/IChatHub.cs b/Assets/Scripts/ServerShared/Hubs/IChatHub.cs deleted file mode 100644 index 726ab9837..000000000 --- a/Assets/Scripts/ServerShared/Hubs/IChatHub.cs +++ /dev/null @@ -1,25 +0,0 @@ -using ChatApp.Shared.MessagePackObjects; -using MagicOnion; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace ChatApp.Shared.Hubs -{ - /// - /// Client -> Server API (Streaming) - /// - public interface IChatHub : IStreamingHub - { - Task JoinAsync(JoinRequest request); - - Task LeaveAsync(); - - Task SendMessageAsync(string message); - - Task GenerateException(string message); - - // It is not called because it is a method as a sample of arguments. - Task SampleMethod(List sampleList, Dictionary sampleDictionary); - } -} diff --git a/Assets/Scripts/ServerShared/Hubs/IChatHub.cs.meta b/Assets/Scripts/ServerShared/Hubs/IChatHub.cs.meta deleted file mode 100644 index 63ac8eba4..000000000 --- a/Assets/Scripts/ServerShared/Hubs/IChatHub.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 2080c15c13ba0c14aa0682bec9550f33 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs b/Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs deleted file mode 100644 index b8b21eeb0..000000000 --- a/Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs +++ /dev/null @@ -1,16 +0,0 @@ -using ChatApp.Shared.MessagePackObjects; - -namespace ChatApp.Shared.Hubs -{ - /// - /// Server -> Client API - /// - public interface IChatHubReceiver - { - void OnJoin(string name); - - void OnLeave(string name); - - void OnSendMessage(MessageResponse message); - } -} diff --git a/Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs.meta b/Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs.meta deleted file mode 100644 index 5cddfe740..000000000 --- a/Assets/Scripts/ServerShared/Hubs/IChatHubReceiver.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4857e2640847cd94f90257e00ec6854f -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/JsonConverters.cs b/Assets/Scripts/ServerShared/JsonConverters.cs index f3f90564d..f28540de8 100644 --- a/Assets/Scripts/ServerShared/JsonConverters.cs +++ b/Assets/Scripts/ServerShared/JsonConverters.cs @@ -4,12 +4,10 @@ using System.Collections.Generic; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Unity.Mathematics; -using UnityEngine; using static Unity.Mathematics.math; public class MathJsonConverter : JsonConverter { - private readonly Dictionary> _writers; private readonly Dictionary> _readers; diff --git a/Assets/Scripts/ServerShared/MessagePackObjects.meta b/Assets/Scripts/ServerShared/MessagePackObjects.meta deleted file mode 100644 index bd88047a4..000000000 --- a/Assets/Scripts/ServerShared/MessagePackObjects.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3dfb982d047b6c348836f49863993e1d -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs b/Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs deleted file mode 100644 index 2ae6fa030..000000000 --- a/Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs +++ /dev/null @@ -1,17 +0,0 @@ -using MessagePack; - -namespace ChatApp.Shared.MessagePackObjects -{ - /// - /// Room participation information - /// - [MessagePackObject] - public struct JoinRequest - { - [Key(0)] - public string RoomName { get; set; } - - [Key(1)] - public string UserName { get; set; } - } -} diff --git a/Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs.meta b/Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs.meta deleted file mode 100644 index 543972522..000000000 --- a/Assets/Scripts/ServerShared/MessagePackObjects/Requests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 00baa3467159d704dae9afbac3f4729b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs b/Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs deleted file mode 100644 index 082d1c37b..000000000 --- a/Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs +++ /dev/null @@ -1,17 +0,0 @@ -using MessagePack; - -namespace ChatApp.Shared.MessagePackObjects -{ - /// - /// Message information - /// - [MessagePackObject] - public struct MessageResponse - { - [Key(0)] - public string UserName { get; set; } - - [Key(1)] - public string Message { get; set; } - } -} diff --git a/Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs.meta b/Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs.meta deleted file mode 100644 index a8d8ee8d6..000000000 --- a/Assets/Scripts/ServerShared/MessagePackObjects/Responses.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ba2df8e833f170640b371a83db3df1ef -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/Messages.cs b/Assets/Scripts/ServerShared/Messages.cs new file mode 100644 index 000000000..e5b9bae0e --- /dev/null +++ b/Assets/Scripts/ServerShared/Messages.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using LiteNetLib; +using MessagePack; + +[Union(0,typeof(PingMessage))] +[Union(1,typeof(LoginMessage))] +[Union(2,typeof(RegisterMessage))] +[Union(3,typeof(VerifyMessage))] +[Union(4,typeof(ErrorMessage))] +[Union(5,typeof(LoginSuccessMessage))] +[Union(6,typeof(ChatMessage))] +[Union(7,typeof(ChatBroadcastMessage))] +[MessagePackObject] +public abstract class Message +{ + [IgnoreMember] public NetPeer Peer; +} + +[MessagePackObject] +public class PingMessage : Message +{ + [Key(0)] public float SendTime; +} + + +[MessagePackObject] +public class LoginMessage : Message +{ + [Key(0)] public string Email; + [Key(1)] public string Password; +} + +[MessagePackObject] +public class RegisterMessage : Message +{ + [Key(0)] public string Name; + [Key(1)] public string Email; + [Key(2)] public string Password; +} + +[MessagePackObject] +public class VerifyMessage : Message +{ + [Key(0)] public Guid Session; +} + +[MessagePackObject] +public class ErrorMessage : Message +{ + [Key(0)] public string Error; +} + +[MessagePackObject] +public class LoginSuccessMessage : Message +{ + [Key(0)] public Guid Session; +} + +[MessagePackObject] +public class ChatMessage : Message +{ + [Key(0)] public string Text; +} + +[MessagePackObject] +public class ChatBroadcastMessage : Message +{ + [Key(0)] public string User; + [Key(1)] public string Text; +} + +[MessagePackObject] +public class ChangeNameMessage : Message +{ + [Key(0)] public string Name; +} \ No newline at end of file diff --git a/Assets/Scripts/Generated/MagicOnion.Generated.cs.meta b/Assets/Scripts/ServerShared/Messages.cs.meta similarity index 83% rename from Assets/Scripts/Generated/MagicOnion.Generated.cs.meta rename to Assets/Scripts/ServerShared/Messages.cs.meta index cf214a934..f23d64c1b 100644 --- a/Assets/Scripts/Generated/MagicOnion.Generated.cs.meta +++ b/Assets/Scripts/ServerShared/Messages.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8101cc28afd16634bb4bbd1bff64cf99 +guid: a23b7de46296d3c4384ce28a93b1f5c0 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/ServerShared/NIH/JsonKnownTypes/JsonKnownTypesConverter.cs b/Assets/Scripts/ServerShared/NIH/JsonKnownTypes/JsonKnownTypesConverter.cs index 6fb5b9c73..51b110720 100644 --- a/Assets/Scripts/ServerShared/NIH/JsonKnownTypes/JsonKnownTypesConverter.cs +++ b/Assets/Scripts/ServerShared/NIH/JsonKnownTypes/JsonKnownTypesConverter.cs @@ -25,6 +25,8 @@ namespace JsonKnownTypes public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { + if (reader.TokenType == JsonToken.Null) return null; + var jo = JObject.Load(reader); var discriminator = jo[_typesSettings.Name].ToString(); diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib.meta similarity index 77% rename from Assets/Scripts/NIH/MagicOnion.Abstractions/Server.meta rename to Assets/Scripts/ServerShared/NIH/LiteNetLib.meta index b806c9bca..ce7a93c3f 100644 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/Server.meta +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c1f828ada0daa0843bfef8cc6ebda1bf +guid: 4c6bc5e029ba5d742b1c027b638abc6c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/BaseChannel.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/BaseChannel.cs new file mode 100644 index 000000000..c734413f7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/BaseChannel.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; + +namespace LiteNetLib +{ + internal abstract class BaseChannel + { + public BaseChannel Next; + protected readonly NetPeer Peer; + protected readonly Queue OutgoingQueue; + + protected BaseChannel(NetPeer peer) + { + Peer = peer; + OutgoingQueue = new Queue(64); + } + + public int PacketsInQueue + { + get { return OutgoingQueue.Count; } + } + + public void AddToQueue(NetPacket packet) + { + lock (OutgoingQueue) + OutgoingQueue.Enqueue(packet); + } + + public abstract void SendNextPackets(); + public abstract bool ProcessPacket(NetPacket packet); + } +} diff --git a/Assets/Scripts/Generated/MessagePack.Generated.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/BaseChannel.cs.meta similarity index 83% rename from Assets/Scripts/Generated/MessagePack.Generated.cs.meta rename to Assets/Scripts/ServerShared/NIH/LiteNetLib/BaseChannel.cs.meta index 1758681bd..23725490b 100644 --- a/Assets/Scripts/Generated/MessagePack.Generated.cs.meta +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/BaseChannel.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 06622dddf17e3734bb11f4133d2427d8 +guid: a3a71f45516173d48833202c65e77fe2 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs new file mode 100644 index 000000000..cb6ba53f3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs @@ -0,0 +1,146 @@ +using System.Net; +using System.Threading; +using LiteNetLib.Utils; + +namespace LiteNetLib +{ + public enum ConnectionRequestType + { + Incoming, + PeerToPeer + } + + internal enum ConnectionRequestResult + { + None, + Accept, + Reject, + RejectForce + } + + public class ConnectionRequest + { + private readonly NetManager _listener; + private int _used; + + public readonly NetDataReader Data; + public ConnectionRequestType Type { get; private set; } + + internal ConnectionRequestResult Result { get; private set; } + internal long ConnectionTime; + internal byte ConnectionNumber; + public readonly IPEndPoint RemoteEndPoint; + + private bool TryActivate() + { + return Interlocked.CompareExchange(ref _used, 1, 0) == 0; + } + + internal void UpdateRequest(NetConnectRequestPacket connRequest) + { + if (connRequest.ConnectionTime >= ConnectionTime) + { + ConnectionTime = connRequest.ConnectionTime; + ConnectionNumber = connRequest.ConnectionNumber; + } + } + + internal ConnectionRequest( + long connectionId, + byte connectionNumber, + ConnectionRequestType type, + NetDataReader netDataReader, + IPEndPoint endPoint, + NetManager listener) + { + ConnectionTime = connectionId; + ConnectionNumber = connectionNumber; + Type = type; + RemoteEndPoint = endPoint; + Data = netDataReader; + _listener = listener; + } + + public NetPeer AcceptIfKey(string key) + { + if (!TryActivate()) + return null; + try + { + if (Data.GetString() == key) + { + Result = ConnectionRequestResult.Accept; + return _listener.OnConnectionSolved(this, null, 0, 0); + } + } + catch + { + NetDebug.WriteError("[AC] Invalid incoming data"); + } + Result = ConnectionRequestResult.Reject; + _listener.OnConnectionSolved(this, null, 0, 0); + return null; + } + + /// + /// Accept connection and get new NetPeer as result + /// + /// Connected NetPeer + public NetPeer Accept() + { + if (!TryActivate()) + return null; + Result = ConnectionRequestResult.Accept; + return _listener.OnConnectionSolved(this, null, 0, 0); + } + + public void Reject(byte[] rejectData, int start, int length, bool force) + { + if (!TryActivate()) + return; + Result = force ? ConnectionRequestResult.RejectForce : ConnectionRequestResult.Reject; + _listener.OnConnectionSolved(this, rejectData, start, length); + } + + public void Reject(byte[] rejectData, int start, int length) + { + Reject(rejectData, start, length, false); + } + + + public void RejectForce(byte[] rejectData, int start, int length) + { + Reject(rejectData, start, length, true); + } + + public void RejectForce() + { + Reject(null, 0, 0, true); + } + + public void RejectForce(byte[] rejectData) + { + Reject(rejectData, 0, rejectData.Length, true); + } + + public void RejectForce(NetDataWriter rejectData) + { + Reject(rejectData.Data, 0, rejectData.Length, true); + } + + public void Reject() + { + Reject(null, 0, 0, false); + } + + public void Reject(byte[] rejectData) + { + Reject(rejectData, 0, rejectData.Length, false); + } + + public void Reject(NetDataWriter rejectData) + { + Reject(rejectData.Data, 0, rejectData.Length, false); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs.meta new file mode 100644 index 000000000..81b42eaa9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ConnectionRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 62958515af8d0f84b9f472a9a83e7bc7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs new file mode 100644 index 000000000..1ebe5b01c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs @@ -0,0 +1,222 @@ +using System.Net; +using System.Net.Sockets; + +namespace LiteNetLib +{ + /// + /// Type of message that you receive in OnNetworkReceiveUnconnected event + /// + public enum UnconnectedMessageType + { + BasicMessage, + Broadcast + } + + /// + /// Disconnect reason that you receive in OnPeerDisconnected event + /// + public enum DisconnectReason + { + ConnectionFailed, + Timeout, + HostUnreachable, + NetworkUnreachable, + RemoteConnectionClose, + DisconnectPeerCalled, + ConnectionRejected, + InvalidProtocol, + UnknownHost + } + + /// + /// Additional information about disconnection + /// + public struct DisconnectInfo + { + /// + /// Additional info why peer disconnected + /// + public DisconnectReason Reason; + + /// + /// Error code (if reason is SocketSendError or SocketReceiveError) + /// + public SocketError SocketErrorCode; + + /// + /// Additional data that can be accessed (only if reason is RemoteConnectionClose) + /// + public NetPacketReader AdditionalData; + } + + public interface INetEventListener + { + /// + /// New remote peer connected to host, or client connected to remote host + /// + /// Connected peer object + void OnPeerConnected(NetPeer peer); + + /// + /// Peer disconnected + /// + /// disconnected peer + /// additional info about reason, errorCode or data received with disconnect message + void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo); + + /// + /// Network error (on send or receive) + /// + /// From endPoint (can be null) + /// Socket error + void OnNetworkError(IPEndPoint endPoint, SocketError socketError); + + /// + /// Received some data + /// + /// From peer + /// DataReader containing all received data + /// Type of received packet + void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod); + + /// + /// Received unconnected message + /// + /// From address (IP and Port) + /// Message data + /// Message type (simple, discovery request or responce) + void OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader, UnconnectedMessageType messageType); + + /// + /// Latency information updated + /// + /// Peer with updated latency + /// latency value in milliseconds + void OnNetworkLatencyUpdate(NetPeer peer, int latency); + + /// + /// On peer connection requested + /// + /// Request information (EndPoint, internal id, additional data) + void OnConnectionRequest(ConnectionRequest request); + } + + public interface IDeliveryEventListener + { + /// + /// On reliable message delivered + /// + /// + /// + void OnMessageDelivered(NetPeer peer, object userData); + } + + public class EventBasedNetListener : INetEventListener, IDeliveryEventListener + { + public delegate void OnPeerConnected(NetPeer peer); + public delegate void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo); + public delegate void OnNetworkError(IPEndPoint endPoint, SocketError socketError); + public delegate void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod); + public delegate void OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader, UnconnectedMessageType messageType); + public delegate void OnNetworkLatencyUpdate(NetPeer peer, int latency); + public delegate void OnConnectionRequest(ConnectionRequest request); + public delegate void OnDeliveryEvent(NetPeer peer, object userData); + + public event OnPeerConnected PeerConnectedEvent; + public event OnPeerDisconnected PeerDisconnectedEvent; + public event OnNetworkError NetworkErrorEvent; + public event OnNetworkReceive NetworkReceiveEvent; + public event OnNetworkReceiveUnconnected NetworkReceiveUnconnectedEvent; + public event OnNetworkLatencyUpdate NetworkLatencyUpdateEvent; + public event OnConnectionRequest ConnectionRequestEvent; + public event OnDeliveryEvent DeliveryEvent; + + public void ClearPeerConnectedEvent() + { + PeerConnectedEvent = null; + } + + public void ClearPeerDisconnectedEvent() + { + PeerDisconnectedEvent = null; + } + + public void ClearNetworkErrorEvent() + { + NetworkErrorEvent = null; + } + + public void ClearNetworkReceiveEvent() + { + NetworkReceiveEvent = null; + } + + public void ClearNetworkReceiveUnconnectedEvent() + { + NetworkReceiveUnconnectedEvent = null; + } + + public void ClearNetworkLatencyUpdateEvent() + { + NetworkLatencyUpdateEvent = null; + } + + public void ClearConnectionRequestEvent() + { + ConnectionRequestEvent = null; + } + + public void ClearDeliveryEvent() + { + DeliveryEvent = null; + } + + void INetEventListener.OnPeerConnected(NetPeer peer) + { + if (PeerConnectedEvent != null) + PeerConnectedEvent(peer); + } + + void INetEventListener.OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo) + { + if (PeerDisconnectedEvent != null) + PeerDisconnectedEvent(peer, disconnectInfo); + } + + void INetEventListener.OnNetworkError(IPEndPoint endPoint, SocketError socketErrorCode) + { + if (NetworkErrorEvent != null) + NetworkErrorEvent(endPoint, socketErrorCode); + } + + void INetEventListener.OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod) + { + if (NetworkReceiveEvent != null) + NetworkReceiveEvent(peer, reader, deliveryMethod); + } + + void INetEventListener.OnNetworkReceiveUnconnected(IPEndPoint remoteEndPoint, NetPacketReader reader, UnconnectedMessageType messageType) + { + if (NetworkReceiveUnconnectedEvent != null) + NetworkReceiveUnconnectedEvent(remoteEndPoint, reader, messageType); + } + + void INetEventListener.OnNetworkLatencyUpdate(NetPeer peer, int latency) + { + if (NetworkLatencyUpdateEvent != null) + NetworkLatencyUpdateEvent(peer, latency); + } + + void INetEventListener.OnConnectionRequest(ConnectionRequest request) + { + if (ConnectionRequestEvent != null) + ConnectionRequestEvent(request); + } + + void IDeliveryEventListener.OnMessageDelivered(NetPeer peer, object userData) + { + if (DeliveryEvent != null) + DeliveryEvent(peer, userData); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs.meta new file mode 100644 index 000000000..766099ad0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/INetEventListener.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e4b0489e9f059884f85493429a0fb895 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers.meta similarity index 77% rename from Assets/Scripts/NIH/MagicOnion.Abstractions.meta rename to Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers.meta index a28d6f2ca..625e3e419 100644 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions.meta +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9c16be6aa91bf3642a8198f5aae1f925 +guid: e97acaef00653794eaa39be22c013509 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs new file mode 100644 index 000000000..716c4b508 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs @@ -0,0 +1,36 @@ +using LiteNetLib.Utils; +using System; + +namespace LiteNetLib.Layers +{ + public sealed class Crc32cLayer : PacketLayerBase + { + public Crc32cLayer() : base(CRC32C.ChecksumSize) + { + + } + + public override void ProcessInboundPacket(ref byte[] data, ref int length) + { + if (length < NetConstants.HeaderSize + CRC32C.ChecksumSize) + { + NetDebug.WriteError("[NM] DataReceived size: bad!"); + return; + } + + int checksumPoint = length - CRC32C.ChecksumSize; + if (CRC32C.Compute(data, 0, checksumPoint) != BitConverter.ToUInt32(data, checksumPoint)) + { + NetDebug.Write("[NM] DataReceived checksum: bad!"); + return; + } + length -= CRC32C.ChecksumSize; + } + + public override void ProcessOutBoundPacket(ref byte[] data, ref int offset, ref int length) + { + FastBitConverter.GetBytes(data, length, CRC32C.Compute(data, offset, length)); + length += CRC32C.ChecksumSize; + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs.meta new file mode 100644 index 000000000..a8113fc22 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/Crc32cLayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7c01e77588a7c9248ab7dd7c65fe35ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs new file mode 100644 index 000000000..264a41858 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs @@ -0,0 +1,15 @@ +namespace LiteNetLib.Layers +{ + public abstract class PacketLayerBase + { + public readonly int ExtraPacketSizeForLayer; + + protected PacketLayerBase(int extraPacketSizeForLayer) + { + ExtraPacketSizeForLayer = extraPacketSizeForLayer; + } + + public abstract void ProcessInboundPacket(ref byte[] data, ref int length); + public abstract void ProcessOutBoundPacket(ref byte[] data, ref int offset, ref int length); + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs.meta new file mode 100644 index 000000000..0b4c7f7b8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/PacketLayerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0eff039eb7c48c4f83a5a3473976a4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs new file mode 100644 index 000000000..a25869407 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs @@ -0,0 +1,59 @@ +using System; +using System.Text; + +namespace LiteNetLib.Layers +{ + public class XorEncryptLayer : PacketLayerBase + { + private byte[] _byteKey; + + public XorEncryptLayer() : base(0) + { + + } + + public XorEncryptLayer(byte[] key) : this() + { + SetKey(key); + } + + public XorEncryptLayer(string key) : this() + { + SetKey(key); + } + + public void SetKey(string key) + { + _byteKey = Encoding.UTF8.GetBytes(key); + } + + public void SetKey(byte[] key) + { + if(_byteKey.Length != key.Length) + _byteKey = new byte[key.Length]; + Buffer.BlockCopy(key, 0, _byteKey, 0, key.Length); + } + + public override void ProcessInboundPacket(ref byte[] data, ref int length) + { + if (_byteKey == null) + return; + for (var i = 0; i < length; i++) + { + var offset = i % _byteKey.Length; + data[i] = (byte)(data[i] ^ _byteKey[offset]); + } + } + + public override void ProcessOutBoundPacket(ref byte[] data, ref int offset, ref int length) + { + if (_byteKey == null) + return; + var cur = offset; + for (var i = 0; i < length; i++, cur++) + { + data[cur] = (byte)(data[cur] ^ _byteKey[i % _byteKey.Length]); + } + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs.meta new file mode 100644 index 000000000..2371fefc1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Layers/XorEncryptLayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7dc82abc20608864fb76b22d78d5d641 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj b/Assets/Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj new file mode 100644 index 000000000..e6f1782c7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj @@ -0,0 +1,30 @@ + + + + LiteNetLib + LiteNetLib + 4 + netcoreapp2.1;netcoreapp3.0;netstandard2.0 + net35;netstandard2.0;netcoreapp2.1;netcoreapp3.0 + + + + TRACE;DEBUG + 1701;1702;1705;1591 + 4 + + + + TRACE + bin\Release\net35\LiteNetLib.xml + 1701;1702;1705;1591 + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Scenes/ChatScene.unity.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj.meta similarity index 74% rename from Assets/Scenes/ChatScene.unity.meta rename to Assets/Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj.meta index 70b3a62ca..b8179a3cc 100644 --- a/Assets/Scenes/ChatScene.unity.meta +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/LiteNetLib.csproj.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ea5a8dc36702b6445b34bb7c7c5eb088 +guid: 3fbdb12295a729741b8e67aa4bafd989 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs new file mode 100644 index 000000000..a49146ed2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs @@ -0,0 +1,239 @@ +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using LiteNetLib.Utils; + +//Some code parts taken from lidgren-network-gen3 +namespace LiteNetLib +{ + public interface INatPunchListener + { + void OnNatIntroductionRequest(IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, string token); + void OnNatIntroductionSuccess(IPEndPoint targetEndPoint, string token); + } + + public class EventBasedNatPunchListener : INatPunchListener + { + public delegate void OnNatIntroductionRequest(IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, string token); + public delegate void OnNatIntroductionSuccess(IPEndPoint targetEndPoint, string token); + + public event OnNatIntroductionRequest NatIntroductionRequest; + public event OnNatIntroductionSuccess NatIntroductionSuccess; + + void INatPunchListener.OnNatIntroductionRequest(IPEndPoint localEndPoint, IPEndPoint remoteEndPoint, string token) + { + if(NatIntroductionRequest != null) + NatIntroductionRequest(localEndPoint, remoteEndPoint, token); + } + + void INatPunchListener.OnNatIntroductionSuccess(IPEndPoint targetEndPoint, string token) + { + if (NatIntroductionSuccess != null) + NatIntroductionSuccess(targetEndPoint, token); + } + } + + /// + /// Module for UDP NAT Hole punching operations. Can be accessed from NetManager + /// + public sealed class NatPunchModule + { + struct RequestEventData + { + public IPEndPoint LocalEndPoint; + public IPEndPoint RemoteEndPoint; + public string Token; + } + + struct SuccessEventData + { + public IPEndPoint TargetEndPoint; + public string Token; + } + + private readonly NetSocket _socket; + private readonly Queue _requestEvents; + private readonly Queue _successEvents; + private const byte HostByte = 1; + private const byte ClientByte = 0; + public const int MaxTokenLength = 256; + + private INatPunchListener _natPunchListener; + + internal NatPunchModule(NetSocket socket) + { + _socket = socket; + _requestEvents = new Queue(); + _successEvents = new Queue(); + } + + public void Init(INatPunchListener listener) + { + _natPunchListener = listener; + } + + public void NatIntroduce( + IPEndPoint hostInternal, + IPEndPoint hostExternal, + IPEndPoint clientInternal, + IPEndPoint clientExternal, + string additionalInfo) + { + NetDataWriter dw = new NetDataWriter(); + + //First packet (server) + //send to client + dw.Put((byte)PacketProperty.NatIntroduction); + dw.Put(ClientByte); + dw.Put(hostInternal); + dw.Put(hostExternal); + dw.Put(additionalInfo, MaxTokenLength); + SocketError errorCode = 0; + _socket.SendTo(dw.Data, 0, dw.Length, clientExternal, ref errorCode); + + //Second packet (client) + //send to server + dw.Reset(); + dw.Put((byte)PacketProperty.NatIntroduction); + dw.Put(HostByte); + dw.Put(clientInternal); + dw.Put(clientExternal); + dw.Put(additionalInfo, MaxTokenLength); + _socket.SendTo(dw.Data, 0, dw.Length, hostExternal, ref errorCode); + } + + public void PollEvents() + { + if (_natPunchListener == null) + return; + lock (_successEvents) + { + while (_successEvents.Count > 0) + { + var evt = _successEvents.Dequeue(); + _natPunchListener.OnNatIntroductionSuccess(evt.TargetEndPoint, evt.Token); + } + } + lock (_requestEvents) + { + while (_requestEvents.Count > 0) + { + var evt = _requestEvents.Dequeue(); + _natPunchListener.OnNatIntroductionRequest(evt.LocalEndPoint, evt.RemoteEndPoint, evt.Token); + } + } + } + + public void SendNatIntroduceRequest(IPEndPoint masterServerEndPoint, string additionalInfo) + { + //prepare outgoing data + NetDataWriter dw = new NetDataWriter(); + string networkIp = NetUtils.GetLocalIp(LocalAddrType.IPv4); + if (string.IsNullOrEmpty(networkIp)) + { + networkIp = NetUtils.GetLocalIp(LocalAddrType.IPv6); + } + IPEndPoint localEndPoint = NetUtils.MakeEndPoint(networkIp, _socket.LocalPort); + dw.Put((byte)PacketProperty.NatIntroductionRequest); + dw.Put(localEndPoint); + dw.Put(additionalInfo, MaxTokenLength); + + //prepare packet + SocketError errorCode = 0; + _socket.SendTo(dw.Data, 0, dw.Length, masterServerEndPoint, ref errorCode); + } + + private void HandleNatPunch(IPEndPoint senderEndPoint, NetDataReader dr) + { + byte fromHostByte = dr.GetByte(); + if (fromHostByte != HostByte && fromHostByte != ClientByte) + { + //garbage + return; + } + + //Read info + string additionalInfo = dr.GetString(MaxTokenLength); + NetDebug.Write(NetLogLevel.Trace, "[NAT] punch received from {0} - additional info: {1}", senderEndPoint, additionalInfo); + + //Release punch success to client; enabling him to Connect() to msg.Sender if token is ok + lock (_successEvents) + { + _successEvents.Enqueue(new SuccessEventData { TargetEndPoint = senderEndPoint, Token = additionalInfo }); + } + } + + private void HandleNatIntroduction(NetDataReader dr) + { + // read intro + byte hostByte = dr.GetByte(); + IPEndPoint remoteInternal = dr.GetNetEndPoint(); + IPEndPoint remoteExternal = dr.GetNetEndPoint(); + string token = dr.GetString(MaxTokenLength); + + NetDebug.Write(NetLogLevel.Trace, "[NAT] introduction received; we are designated " + (hostByte == HostByte ? "host" : "client")); + NetDataWriter writer = new NetDataWriter(); + + // send internal punch + writer.Put((byte)PacketProperty.NatPunchMessage); + writer.Put(hostByte); + writer.Put(token); + SocketError errorCode = 0; + _socket.SendTo(writer.Data, 0, writer.Length, remoteInternal, ref errorCode); + NetDebug.Write(NetLogLevel.Trace, "[NAT] internal punch sent to " + remoteInternal); + + // send external punch + writer.Reset(); + writer.Put((byte)PacketProperty.NatPunchMessage); + writer.Put(hostByte); + writer.Put(token); + if (hostByte == HostByte) + { + _socket.Ttl = 2; + _socket.SendTo(writer.Data, 0, writer.Length, remoteExternal, ref errorCode); + _socket.Ttl = NetConstants.SocketTTL; + } + else + { + _socket.SendTo(writer.Data, 0, writer.Length, remoteExternal, ref errorCode); + } + + NetDebug.Write(NetLogLevel.Trace, "[NAT] external punch sent to " + remoteExternal); + } + + private void HandleNatIntroductionRequest(IPEndPoint senderEndPoint, NetDataReader dr) + { + IPEndPoint localEp = dr.GetNetEndPoint(); + string token = dr.GetString(MaxTokenLength); + lock (_requestEvents) + { + _requestEvents.Enqueue(new RequestEventData + { + LocalEndPoint = localEp, + RemoteEndPoint = senderEndPoint, + Token = token + }); + } + } + + internal void ProcessMessage(IPEndPoint senderEndPoint, NetPacket packet) + { + var dr = new NetDataReader(packet.RawData, NetConstants.HeaderSize, packet.Size); + switch (packet.Property) + { + case PacketProperty.NatIntroductionRequest: + //We got request and must introduce + HandleNatIntroductionRequest(senderEndPoint, dr); + break; + case PacketProperty.NatIntroduction: + //We got introduce and must punch + HandleNatIntroduction(dr); + break; + case PacketProperty.NatPunchMessage: + //We got punch and can connect + HandleNatPunch(senderEndPoint, dr); + break; + } + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs.meta new file mode 100644 index 000000000..657b5cb6a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NatPunchModule.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79b2eb96b6d1a8c4c85c4c801bd62d67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs new file mode 100644 index 000000000..81a4db438 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs @@ -0,0 +1,72 @@ +namespace LiteNetLib +{ + /// + /// Sending method type + /// + public enum DeliveryMethod : byte + { + /// + /// Unreliable. Packets can be dropped, can be duplicated, can arrive without order. + /// + Unreliable = 4, + + /// + /// Reliable. Packets won't be dropped, won't be duplicated, can arrive without order. + /// + ReliableUnordered = 0, + + /// + /// Unreliable. Packets can be dropped, won't be duplicated, will arrive in order. + /// + Sequenced = 1, + + /// + /// Reliable and ordered. Packets won't be dropped, won't be duplicated, will arrive in order. + /// + ReliableOrdered = 2, + + /// + /// Reliable only last packet. Packets can be dropped (except the last one), won't be duplicated, will arrive in order. + /// + ReliableSequenced = 3 + } + + /// + /// Network constants. Can be tuned from sources for your purposes. + /// + public static class NetConstants + { + //can be tuned + public const int DefaultWindowSize = 64; + public const int SocketBufferSize = 1024 * 1024; //1mb + public const int SocketTTL = 255; + + public const int HeaderSize = 1; + public const int ChanneledHeaderSize = 4; + public const int FragmentHeaderSize = 6; + public const int FragmentTotalSize = ChanneledHeaderSize + FragmentHeaderSize; + public const ushort MaxSequence = 32768; + public const ushort HalfMaxSequence = MaxSequence / 2; + + //protocol + internal const int ProtocolId = 10; + internal const int MaxUdpHeaderSize = 68; + + internal static readonly int[] PossibleMtu = + { + 576 - MaxUdpHeaderSize, //minimal + 1232 - MaxUdpHeaderSize, + 1460 - MaxUdpHeaderSize, //google cloud + 1472 - MaxUdpHeaderSize, //VPN + 1492 - MaxUdpHeaderSize, //Ethernet with LLC and SNAP, PPPoE (RFC 1042) + 1500 - MaxUdpHeaderSize //Ethernet II (RFC 1191) + }; + + internal static readonly int MaxPacketSize = PossibleMtu[PossibleMtu.Length - 1]; + + //peer specific + public const byte MaxConnectionNumber = 4; + + public const int PacketPoolSize = 1000; + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs.meta new file mode 100644 index 000000000..a7e5333f0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetConstants.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b04372b33f59bc74381fe21f43834fd6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs new file mode 100644 index 000000000..bebd8d1e1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs @@ -0,0 +1,78 @@ +using System; +using System.Diagnostics; + +namespace LiteNetLib +{ + public enum NetLogLevel + { + Warning, + Error, + Trace, + Info + } + + /// + /// Interface to implement for your own logger + /// + public interface INetLogger + { + void WriteNet(NetLogLevel level, string str, params object[] args); + } + + /// + /// Static class for defining your own LiteNetLib logger instead of Console.WriteLine + /// or Debug.Log if compiled with UNITY flag + /// + public static class NetDebug + { + public static INetLogger Logger = null; + private static readonly object DebugLogLock = new object(); + private static void WriteLogic(NetLogLevel logLevel, string str, params object[] args) + { + lock (DebugLogLock) + { + if (Logger == null) + { +#if UNITY_4 || UNITY_5 || UNITY_5_3_OR_NEWER + UnityEngine.Debug.Log(string.Format(str, args)); +#else + Console.WriteLine(str, args); +#endif + } + else + { + Logger.WriteNet(logLevel, str, args); + } + } + } + + [Conditional("DEBUG_MESSAGES")] + internal static void Write(string str, params object[] args) + { + WriteLogic(NetLogLevel.Trace, str, args); + } + + [Conditional("DEBUG_MESSAGES")] + internal static void Write(NetLogLevel level, string str, params object[] args) + { + WriteLogic(level, str, args); + } + + [Conditional("DEBUG_MESSAGES"), Conditional("DEBUG")] + internal static void WriteForce(string str, params object[] args) + { + WriteLogic(NetLogLevel.Trace, str, args); + } + + [Conditional("DEBUG_MESSAGES"), Conditional("DEBUG")] + internal static void WriteForce(NetLogLevel level, string str, params object[] args) + { + WriteLogic(level, str, args); + } + + internal static void WriteError(string str, params object[] args) + { + WriteLogic(NetLogLevel.Error, str, args); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs.meta new file mode 100644 index 000000000..f317abc90 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetDebug.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 53705c73f5f5fc74c874927fe68f36a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs new file mode 100644 index 000000000..db999a642 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs @@ -0,0 +1,33 @@ +using System; +namespace LiteNetLib +{ + public class InvalidPacketException: ArgumentException + { + public InvalidPacketException() + { + } + + public InvalidPacketException(string message): base(message) + { + } + + public InvalidPacketException(string message, Exception innerException): base(message, innerException) + { + } + } + + public class TooBigPacketException : InvalidPacketException + { + public TooBigPacketException() + { + } + + public TooBigPacketException(string message) : base(message) + { + } + + public TooBigPacketException(string message, Exception innerException) : base(message, innerException) + { + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs.meta new file mode 100644 index 000000000..357ab1def --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetExceptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7db8d84382f2ec4419eb6583fdc44a3d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs new file mode 100644 index 000000000..8216ad355 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs @@ -0,0 +1,1588 @@ +#if DEBUG +#define STATS_ENABLED +#endif + +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using LiteNetLib.Layers; +using LiteNetLib.Utils; + +namespace LiteNetLib +{ + public sealed class NetPacketReader : NetDataReader + { + private NetPacket _packet; + private readonly NetManager _manager; + private readonly NetEvent _evt; + + internal NetPacketReader(NetManager manager, NetEvent evt) + { + _manager = manager; + _evt = evt; + } + + internal void SetSource(NetPacket packet) + { + if (packet == null) + return; + _packet = packet; + SetSource(packet.RawData, packet.GetHeaderSize(), packet.Size); + } + + internal void RecycleInternal() + { + Clear(); + if (_packet != null) + _manager.NetPacketPool.Recycle(_packet); + _packet = null; + _manager.RecycleEvent(_evt); + } + + public void Recycle() + { + if(_manager.AutoRecycle) + throw new Exception("Recycle called with AutoRecycle enabled"); + RecycleInternal(); + } + } + + internal sealed class NetEvent + { + public enum EType + { + Connect, + Disconnect, + Receive, + ReceiveUnconnected, + Error, + ConnectionLatencyUpdated, + Broadcast, + ConnectionRequest, + MessageDelivered + } + public EType Type; + + public NetPeer Peer; + public IPEndPoint RemoteEndPoint; + public object UserData; + public int Latency; + public SocketError ErrorCode; + public DisconnectReason DisconnectReason; + public ConnectionRequest ConnectionRequest; + public DeliveryMethod DeliveryMethod; + public readonly NetPacketReader DataReader; + + public NetEvent(NetManager manager) + { + DataReader = new NetPacketReader(manager, this); + } + } + + /// + /// Main class for all network operations. Can be used as client and/or server. + /// + public class NetManager : INetSocketListener, IEnumerable + { + private class IPEndPointComparer : IEqualityComparer + { + public bool Equals(IPEndPoint x, IPEndPoint y) + { + return x.Address.Equals(y.Address) && x.Port == y.Port; + } + + public int GetHashCode(IPEndPoint obj) + { + return obj.GetHashCode(); + } + } + + public struct NetPeerEnumerator : IEnumerator + { + private readonly NetPeer _initialPeer; + private NetPeer _p; + + public NetPeerEnumerator(NetPeer p) + { + _initialPeer = p; + _p = null; + } + + public void Dispose() + { + + } + + public bool MoveNext() + { + _p = _p == null ? _initialPeer : _p.NextPeer; + return _p != null; + } + + public void Reset() + { + throw new NotSupportedException(); + } + + public NetPeer Current + { + get { return _p; } + } + + object IEnumerator.Current + { + get { return _p; } + } + } + +#if DEBUG + private struct IncomingData + { + public byte[] Data; + public IPEndPoint EndPoint; + public DateTime TimeWhenGet; + } + private readonly List _pingSimulationList = new List(); + private readonly Random _randomGenerator = new Random(); + private const int MinLatencyThreshold = 5; +#endif + + private readonly NetSocket _socket; + private Thread _logicThread; + + private readonly Queue _netEventsQueue; + private readonly Stack _netEventsPool; + private readonly INetEventListener _netEventListener; + private readonly IDeliveryEventListener _deliveryEventListener; + + private readonly Dictionary _peersDict; + private readonly Dictionary _requestsDict; + private readonly ReaderWriterLockSlim _peersLock; + private volatile NetPeer _headPeer; + private volatile int _connectedPeersCount; + private readonly List _connectedPeerListCache; + private NetPeer[] _peersArray; + internal readonly PacketLayerBase _extraPacketLayer; + private int _lastPeerId; + private readonly Queue _peerIds; + private byte _channelsCount = 1; + + internal readonly NetPacketPool NetPacketPool; + + //config section + /// + /// Enable messages receiving without connection. (with SendUnconnectedMessage method) + /// + public bool UnconnectedMessagesEnabled = false; + + /// + /// Enable nat punch messages + /// + public bool NatPunchEnabled = false; + + /// + /// Library logic update and send period in milliseconds + /// + public int UpdateTime = 15; + + /// + /// Interval for latency detection and checking connection + /// + public int PingInterval = 1000; + + /// + /// If NetManager doesn't receive any packet from remote peer during this time then connection will be closed + /// (including library internal keepalive packets) + /// + public int DisconnectTimeout = 5000; + + /// + /// Simulate packet loss by dropping random amout of packets. (Works only in DEBUG mode) + /// + public bool SimulatePacketLoss = false; + + /// + /// Simulate latency by holding packets for random time. (Works only in DEBUG mode) + /// + public bool SimulateLatency = false; + + /// + /// Chance of packet loss when simulation enabled. value in percents (1 - 100). + /// + public int SimulationPacketLossChance = 10; + + /// + /// Minimum simulated latency + /// + public int SimulationMinLatency = 30; + + /// + /// Maximum simulated latency + /// + public int SimulationMaxLatency = 100; + + /// + /// Experimental feature. Events automatically will be called without PollEvents method from another thread + /// + public bool UnsyncedEvents = false; + + /// + /// If true - delivery event will be called from "receive" thread otherwise on PollEvents call + /// + public bool UnsyncedDeliveryEvent = false; + + /// + /// Allows receive broadcast packets + /// + public bool BroadcastReceiveEnabled = false; + + /// + /// Delay betwen initial connection attempts + /// + public int ReconnectDelay = 500; + + /// + /// Maximum connection attempts before client stops and call disconnect event. + /// + public int MaxConnectAttempts = 10; + + /// + /// Enables socket option "ReuseAddress" for specific purposes + /// + public bool ReuseAddress = false; + + /// + /// Statistics of all connections + /// + public readonly NetStatistics Statistics; + + //modules + /// + /// NatPunchModule for NAT hole punching operations + /// + public readonly NatPunchModule NatPunchModule; + + /// + /// Returns true if socket listening and update thread is running + /// + public bool IsRunning { get; private set; } + + /// + /// Local EndPoint (host and port) + /// + public int LocalPort { get { return _socket.LocalPort; } } + + /// + /// Automatically recycle NetPacketReader after OnReceive event + /// + public bool AutoRecycle; + + /// + /// IPv6 support + /// + public bool IPv6Enabled = true; + + /// + /// First peer. Useful for Client mode + /// + public NetPeer FirstPeer + { + get { return _headPeer; } + } + + /// + /// QoS channel count per message type (value must be between 1 and 64 channels) + /// + public byte ChannelsCount + { + get { return _channelsCount; } + set + { + if (value < 1 || value > 64) + throw new ArgumentException("Channels count must be between 1 and 64"); + _channelsCount = value; + } + } + + /// + /// Returns connected peers list (with internal cached list) + /// + public List ConnectedPeerList + { + get + { + GetPeersNonAlloc(_connectedPeerListCache, ConnectionState.Connected); + return _connectedPeerListCache; + } + } + + /// + /// Gets peer by peer id + /// + /// id of peer + /// Peer if peer with id exist, otherwise null + public NetPeer GetPeerById(int id) + { + return _peersArray[id]; + } + + /// + /// Returns connected peers count + /// + public int ConnectedPeersCount { get { return _connectedPeersCount; } } + + private bool TryGetPeer(IPEndPoint endPoint, out NetPeer peer) + { + _peersLock.EnterReadLock(); + bool result = _peersDict.TryGetValue(endPoint, out peer); + _peersLock.ExitReadLock(); + return result; + } + + private void AddPeer(NetPeer peer) + { + _peersLock.EnterWriteLock(); + if (_headPeer != null) + { + peer.NextPeer = _headPeer; + _headPeer.PrevPeer = peer; + } + _headPeer = peer; + _peersDict.Add(peer.EndPoint, peer); + if (peer.Id >= _peersArray.Length) + { + int newSize = _peersArray.Length * 2; + while (peer.Id >= newSize) + newSize *= 2; + Array.Resize(ref _peersArray, newSize); + } + _peersArray[peer.Id] = peer; + _peersLock.ExitWriteLock(); + } + + private void RemovePeer(NetPeer peer) + { + _peersLock.EnterWriteLock(); + RemovePeerInternal(peer); + _peersLock.ExitWriteLock(); + } + + private void RemovePeerInternal(NetPeer peer) + { + if (!_peersDict.Remove(peer.EndPoint)) + return; + if (peer == _headPeer) + _headPeer = peer.NextPeer; + + if (peer.PrevPeer != null) + peer.PrevPeer.NextPeer = peer.NextPeer; + if (peer.NextPeer != null) + peer.NextPeer.PrevPeer = peer.PrevPeer; + peer.PrevPeer = null; + + _peersArray[peer.Id] = null; + lock (_peerIds) + _peerIds.Enqueue(peer.Id); + } + + /// + /// NetManager constructor + /// + /// Network events listener (also can implement IDeliveryEventListener) + /// Extra processing of packages, like CRC checksum or encryption. All connected NetManagers must have same layer. + public NetManager(INetEventListener listener, PacketLayerBase extraPacketLayer = null) + { + _socket = new NetSocket(this); + _netEventListener = listener; + _deliveryEventListener = listener as IDeliveryEventListener; + _netEventsQueue = new Queue(); + _netEventsPool = new Stack(); + NetPacketPool = new NetPacketPool(); + NatPunchModule = new NatPunchModule(_socket); + Statistics = new NetStatistics(); + _connectedPeerListCache = new List(); + _peersDict = new Dictionary(new IPEndPointComparer()); + _requestsDict = new Dictionary(new IPEndPointComparer()); + _peersLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion); + _peerIds = new Queue(); + _peersArray = new NetPeer[32]; + _extraPacketLayer = extraPacketLayer; + } + + internal void ConnectionLatencyUpdated(NetPeer fromPeer, int latency) + { + CreateEvent(NetEvent.EType.ConnectionLatencyUpdated, fromPeer, latency: latency); + } + + internal void MessageDelivered(NetPeer fromPeer, object userData) + { + if(_deliveryEventListener != null) + CreateEvent(NetEvent.EType.MessageDelivered, fromPeer, userData: userData); + } + + internal int SendRawAndRecycle(NetPacket packet, IPEndPoint remoteEndPoint) + { + var result = SendRaw(packet.RawData, 0, packet.Size, remoteEndPoint); + NetPacketPool.Recycle(packet); + return result; + } + + internal int SendRaw(NetPacket packet, IPEndPoint remoteEndPoint) + { + return SendRaw(packet.RawData, 0, packet.Size, remoteEndPoint); + } + + internal int SendRaw(byte[] message, int start, int length, IPEndPoint remoteEndPoint) + { + if (!IsRunning) + return 0; + + SocketError errorCode = 0; + int result; + if (_extraPacketLayer != null) + { + var expandedPacket = NetPacketPool.GetPacket(length + _extraPacketLayer.ExtraPacketSizeForLayer); + Buffer.BlockCopy(message, start, expandedPacket.RawData, 0, length); + int newStart = 0; + _extraPacketLayer.ProcessOutBoundPacket(ref expandedPacket.RawData, ref newStart, ref length); + result = _socket.SendTo(expandedPacket.RawData, newStart, length, remoteEndPoint, ref errorCode); + NetPacketPool.Recycle(expandedPacket); + } + else + { + result = _socket.SendTo(message, start, length, remoteEndPoint, ref errorCode); + } + + NetPeer fromPeer; + switch (errorCode) + { + case SocketError.MessageSize: + NetDebug.Write(NetLogLevel.Trace, "[SRD] 10040, datalen: {0}", length); + return -1; + case SocketError.HostUnreachable: + if (TryGetPeer(remoteEndPoint, out fromPeer)) + DisconnectPeerForce(fromPeer, DisconnectReason.HostUnreachable, errorCode, null); + CreateEvent(NetEvent.EType.Error, remoteEndPoint: remoteEndPoint, errorCode: errorCode); + return -1; + case SocketError.NetworkUnreachable: + if (TryGetPeer(remoteEndPoint, out fromPeer)) + DisconnectPeerForce(fromPeer, DisconnectReason.NetworkUnreachable, errorCode, null); + CreateEvent(NetEvent.EType.Error, remoteEndPoint: remoteEndPoint, errorCode: errorCode); + return -1; + case SocketError.ConnectionReset: //connection reset (connection closed) + if (TryGetPeer(remoteEndPoint, out fromPeer)) + DisconnectPeerForce(fromPeer, DisconnectReason.RemoteConnectionClose, errorCode, null); + return -1; + } + if (result <= 0) + return 0; +#if STATS_ENABLED + Statistics.PacketsSent++; + Statistics.BytesSent += (uint)length; +#endif + return result; + } + + internal void DisconnectPeerForce(NetPeer peer, + DisconnectReason reason, + SocketError socketErrorCode, + NetPacket eventData) + { + DisconnectPeer(peer, reason, socketErrorCode, true, null, 0, 0, eventData); + } + + private void DisconnectPeer( + NetPeer peer, + DisconnectReason reason, + SocketError socketErrorCode, + bool force, + byte[] data, + int start, + int count, + NetPacket eventData) + { + bool wasConnected = peer.ConnectionState == ConnectionState.Connected; + if (!peer.Shutdown(data, start, count, force)) + return; + if(wasConnected) + _connectedPeersCount--; + CreateEvent( + NetEvent.EType.Disconnect, + peer, + errorCode: socketErrorCode, + disconnectReason: reason, + readerSource: eventData); + } + + private void CreateEvent( + NetEvent.EType type, + NetPeer peer = null, + IPEndPoint remoteEndPoint = null, + SocketError errorCode = 0, + int latency = 0, + DisconnectReason disconnectReason = DisconnectReason.ConnectionFailed, + ConnectionRequest connectionRequest = null, + DeliveryMethod deliveryMethod = DeliveryMethod.Unreliable, + NetPacket readerSource = null, + object userData = null) + { + NetEvent evt = null; + bool unsyncEvent = UnsyncedEvents; + + if (type == NetEvent.EType.Connect) + _connectedPeersCount++; + else if (type == NetEvent.EType.MessageDelivered) + unsyncEvent = UnsyncedDeliveryEvent; + + lock (_netEventsPool) + { + if (_netEventsPool.Count > 0) + evt = _netEventsPool.Pop(); + } + if(evt == null) + evt = new NetEvent(this); + evt.Type = type; + evt.DataReader.SetSource(readerSource); + evt.Peer = peer; + evt.RemoteEndPoint = remoteEndPoint; + evt.Latency = latency; + evt.ErrorCode = errorCode; + evt.DisconnectReason = disconnectReason; + evt.ConnectionRequest = connectionRequest; + evt.DeliveryMethod = deliveryMethod; + evt.UserData = userData; + + if (unsyncEvent) + { + ProcessEvent(evt); + } + else + { + lock (_netEventsQueue) + _netEventsQueue.Enqueue(evt); + } + } + + private void ProcessEvent(NetEvent evt) + { + NetDebug.Write("[NM] Processing event: " + evt.Type); + bool emptyData = evt.DataReader.IsNull; + switch (evt.Type) + { + case NetEvent.EType.Connect: + _netEventListener.OnPeerConnected(evt.Peer); + break; + case NetEvent.EType.Disconnect: + var info = new DisconnectInfo + { + Reason = evt.DisconnectReason, + AdditionalData = evt.DataReader, + SocketErrorCode = evt.ErrorCode + }; + _netEventListener.OnPeerDisconnected(evt.Peer, info); + break; + case NetEvent.EType.Receive: + _netEventListener.OnNetworkReceive(evt.Peer, evt.DataReader, evt.DeliveryMethod); + break; + case NetEvent.EType.ReceiveUnconnected: + _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.BasicMessage); + break; + case NetEvent.EType.Broadcast: + _netEventListener.OnNetworkReceiveUnconnected(evt.RemoteEndPoint, evt.DataReader, UnconnectedMessageType.Broadcast); + break; + case NetEvent.EType.Error: + _netEventListener.OnNetworkError(evt.RemoteEndPoint, evt.ErrorCode); + break; + case NetEvent.EType.ConnectionLatencyUpdated: + _netEventListener.OnNetworkLatencyUpdate(evt.Peer, evt.Latency); + break; + case NetEvent.EType.ConnectionRequest: + _netEventListener.OnConnectionRequest(evt.ConnectionRequest); + break; + case NetEvent.EType.MessageDelivered: + _deliveryEventListener.OnMessageDelivered(evt.Peer, evt.UserData); + break; + } + //Recycle if not message + if (emptyData) + RecycleEvent(evt); + else if (AutoRecycle) + evt.DataReader.RecycleInternal(); + } + + internal void RecycleEvent(NetEvent evt) + { + evt.Peer = null; + evt.ErrorCode = 0; + evt.RemoteEndPoint = null; + evt.ConnectionRequest = null; + lock (_netEventsPool) + _netEventsPool.Push(evt); + } + + //Update function + private void UpdateLogic() + { + var peersToRemove = new List(); + var stopwatch = new Stopwatch(); + stopwatch.Start(); + + while (IsRunning) + { +#if DEBUG + if (SimulateLatency) + { + var time = DateTime.UtcNow; + lock (_pingSimulationList) + { + for (int i = 0; i < _pingSimulationList.Count; i++) + { + var incomingData = _pingSimulationList[i]; + if (incomingData.TimeWhenGet <= time) + { + DataReceived(incomingData.Data, incomingData.Data.Length, incomingData.EndPoint); + _pingSimulationList.RemoveAt(i); + i--; + } + } + } + } +#endif + +#if STATS_ENABLED + ulong totalPacketLoss = 0; +#endif + int elapsed = (int)stopwatch.ElapsedMilliseconds; + if (elapsed <= 0) + elapsed = 1; + for(var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + { + if (netPeer.ConnectionState == ConnectionState.Disconnected && netPeer.TimeSinceLastPacket > DisconnectTimeout) + { + peersToRemove.Add(netPeer); + } + else + { + netPeer.Update(elapsed); +#if STATS_ENABLED + totalPacketLoss += netPeer.Statistics.PacketLoss; +#endif + } + } + if (peersToRemove.Count > 0) + { + _peersLock.EnterWriteLock(); + for (int i = 0; i < peersToRemove.Count; i++) + RemovePeerInternal(peersToRemove[i]); + _peersLock.ExitWriteLock(); + peersToRemove.Clear(); + } +#if STATS_ENABLED + Statistics.PacketLoss = totalPacketLoss; +#endif + int sleepTime = UpdateTime - (int)(stopwatch.ElapsedMilliseconds - elapsed); + stopwatch.Reset(); + stopwatch.Start(); + if (sleepTime > 0) + Thread.Sleep(sleepTime); + } + stopwatch.Stop(); + } + + void INetSocketListener.OnMessageReceived(byte[] data, int length, SocketError errorCode, IPEndPoint remoteEndPoint) + { + if (errorCode != 0) + { + CreateEvent(NetEvent.EType.Error, errorCode: errorCode); + NetDebug.WriteError("[NM] Receive error: {0}", errorCode); + return; + } +#if DEBUG + if (SimulatePacketLoss && _randomGenerator.NextDouble() * 100 < SimulationPacketLossChance) + { + //drop packet + return; + } + if (SimulateLatency) + { + int latency = _randomGenerator.Next(SimulationMinLatency, SimulationMaxLatency); + if (latency > MinLatencyThreshold) + { + byte[] holdedData = new byte[length]; + Buffer.BlockCopy(data, 0, holdedData, 0, length); + + lock (_pingSimulationList) + { + _pingSimulationList.Add(new IncomingData + { + Data = holdedData, + EndPoint = remoteEndPoint, + TimeWhenGet = DateTime.UtcNow.AddMilliseconds(latency) + }); + } + //hold packet + return; + } + } +#endif + try + { + //ProcessEvents + DataReceived(data, length, remoteEndPoint); + } + catch(Exception e) + { + //protects socket receive thread + NetDebug.WriteError("[NM] SocketReceiveThread error: " + e ); + } + } + + internal NetPeer OnConnectionSolved(ConnectionRequest request, byte[] rejectData, int start, int length) + { + NetPeer netPeer = null; + if (request.Result == ConnectionRequestResult.Reject) + { + netPeer = new NetPeer(this, request.RemoteEndPoint, GetNextPeerId()); + netPeer.Reject(request.ConnectionTime, request.ConnectionNumber, rejectData, start, length); + AddPeer(netPeer); + NetDebug.Write(NetLogLevel.Trace, "[NM] Peer connect reject."); + } + else if (request.Result == ConnectionRequestResult.RejectForce) + { + NetDebug.Write(NetLogLevel.Trace, "[NM] Peer connect reject force."); + if (rejectData != null && length > 0) + { + var shutdownPacket = NetPacketPool.GetWithProperty(PacketProperty.Disconnect, length); + shutdownPacket.ConnectionNumber = request.ConnectionNumber; + FastBitConverter.GetBytes(shutdownPacket.RawData, 1, request.ConnectionTime); + if (shutdownPacket.Size >= NetConstants.PossibleMtu[0]) + NetDebug.WriteError("[Peer] Disconnect additional data size more than MTU!"); + else + Buffer.BlockCopy(rejectData, start, shutdownPacket.RawData, 9, length); + SendRawAndRecycle(shutdownPacket, request.RemoteEndPoint); + } + } + else + { + //Accept + netPeer = new NetPeer(this, request.RemoteEndPoint, GetNextPeerId(), request.ConnectionTime, request.ConnectionNumber); + AddPeer(netPeer); + //TODO: sync + CreateEvent(NetEvent.EType.Connect, netPeer); + NetDebug.Write(NetLogLevel.Trace, "[NM] Received peer connection Id: {0}, EP: {1}", netPeer.ConnectTime, netPeer.EndPoint); + } + lock(_requestsDict) + _requestsDict.Remove(request.RemoteEndPoint); + + return netPeer; + } + + private int GetNextPeerId() + { + lock (_peerIds) + return _peerIds.Count == 0 ? _lastPeerId++ : _peerIds.Dequeue(); + } + + private void ProcessConnectRequest( + IPEndPoint remoteEndPoint, + NetPeer netPeer, + NetConnectRequestPacket connRequest) + { + byte connectionNumber = connRequest.ConnectionNumber; + ConnectionRequest req; + + //if we have peer + if (netPeer != null) + { + var processResult = netPeer.ProcessConnectRequest(connRequest); + NetDebug.Write("ConnectRequest LastId: {0}, NewId: {1}, EP: {2}, Result: {3}", + netPeer.ConnectTime, + connRequest.ConnectionTime, + remoteEndPoint, + processResult); + + switch (processResult) + { + case ConnectRequestResult.Reconnection: + DisconnectPeerForce(netPeer, DisconnectReason.RemoteConnectionClose, 0, null); + RemovePeer(netPeer); + //go to new connection + break; + case ConnectRequestResult.NewConnection: + RemovePeer(netPeer); + //go to new connection + break; + case ConnectRequestResult.P2PConnection: + lock (_requestsDict) + { + req = new ConnectionRequest( + netPeer.ConnectTime, + connectionNumber, + ConnectionRequestType.PeerToPeer, + connRequest.Data, + remoteEndPoint, + this); + _requestsDict.Add(remoteEndPoint, req); + } + CreateEvent(NetEvent.EType.ConnectionRequest, connectionRequest: req); + return; + default: + //no operations needed + return; + } + //ConnectRequestResult.NewConnection + //Set next connection number + connectionNumber = (byte)((netPeer.ConnectionNum + 1) % NetConstants.MaxConnectionNumber); + //To reconnect peer + } + else + { + NetDebug.Write("ConnectRequest Id: {0}, EP: {1}", connRequest.ConnectionTime, remoteEndPoint); + } + + lock (_requestsDict) + { + if (_requestsDict.TryGetValue(remoteEndPoint, out req)) + { + req.UpdateRequest(connRequest); + return; + } + req = new ConnectionRequest( + connRequest.ConnectionTime, + connectionNumber, + ConnectionRequestType.Incoming, + connRequest.Data, + remoteEndPoint, + this); + _requestsDict.Add(remoteEndPoint, req); + } + NetDebug.Write("[NM] Creating request event: " + connRequest.ConnectionTime); + CreateEvent(NetEvent.EType.ConnectionRequest, connectionRequest: req); + } + + private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEndPoint) + { +#if STATS_ENABLED + Statistics.PacketsReceived++; + Statistics.BytesReceived += (uint)count; +#endif + if (_extraPacketLayer != null) + { + _extraPacketLayer.ProcessInboundPacket(ref reusableBuffer, ref count); + } + + //Try read packet + NetPacket packet = NetPacketPool.GetPacket(count); + if (!packet.FromBytes(reusableBuffer, 0, count)) + { + NetPacketPool.Recycle(packet); + NetDebug.WriteError("[NM] DataReceived: bad!"); + return; + } + + NetPeer netPeer; + + //special case connect request + if (packet.Property == PacketProperty.ConnectRequest) + { + if (NetConnectRequestPacket.GetProtocolId(packet) != NetConstants.ProtocolId) + { + SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.InvalidProtocol), remoteEndPoint); + return; + } + var connRequest = NetConnectRequestPacket.FromData(packet); + if (connRequest != null) + { + _peersLock.EnterUpgradeableReadLock(); + _peersDict.TryGetValue(remoteEndPoint, out netPeer); + //here new peer can be created + ProcessConnectRequest(remoteEndPoint, netPeer, connRequest); + _peersLock.ExitUpgradeableReadLock(); + } + return; + } + + _peersLock.EnterReadLock(); + bool peerFound = _peersDict.TryGetValue(remoteEndPoint, out netPeer); + _peersLock.ExitReadLock(); + + //Check normal packets + switch (packet.Property) + { + case PacketProperty.PeerNotFound: + if (peerFound) + { + if (netPeer.ConnectionState != ConnectionState.Connected) + return; + if (packet.Size == 1) + { + //first reply + var p = NetPacketPool.GetWithProperty(PacketProperty.PeerNotFound, 9); + p.RawData[1] = 0; + FastBitConverter.GetBytes(p.RawData, 2, netPeer.ConnectTime); + SendRawAndRecycle(p, remoteEndPoint); + NetDebug.Write("PeerNotFound sending connectTime: {0}", netPeer.ConnectTime); + } + else if (packet.Size == 10 && packet.RawData[1] == 1 && BitConverter.ToInt64(packet.RawData, 2) == netPeer.ConnectTime) + { + //second reply + NetDebug.Write("PeerNotFound received our connectTime: {0}", netPeer.ConnectTime); + DisconnectPeerForce(netPeer, DisconnectReason.RemoteConnectionClose, 0, null); + } + } + else if (packet.Size == 10 && packet.RawData[1] == 0) + { + //send reply back + packet.RawData[1] = 1; + SendRawAndRecycle(packet, remoteEndPoint); + } + break; + case PacketProperty.Broadcast: + if (!BroadcastReceiveEnabled) + break; + CreateEvent(NetEvent.EType.Broadcast, remoteEndPoint: remoteEndPoint, readerSource: packet); + break; + + case PacketProperty.UnconnectedMessage: + if (!UnconnectedMessagesEnabled) + break; + CreateEvent(NetEvent.EType.ReceiveUnconnected, remoteEndPoint: remoteEndPoint, readerSource: packet); + break; + + case PacketProperty.NatIntroduction: + case PacketProperty.NatIntroductionRequest: + case PacketProperty.NatPunchMessage: + if (NatPunchEnabled) + NatPunchModule.ProcessMessage(remoteEndPoint, packet); + break; + case PacketProperty.InvalidProtocol: + if (peerFound && netPeer.ConnectionState == ConnectionState.Outgoing) + DisconnectPeerForce(netPeer, DisconnectReason.InvalidProtocol, 0, null); + break; + case PacketProperty.Disconnect: + if (peerFound) + { + var disconnectResult = netPeer.ProcessDisconnect(packet); + if (disconnectResult == DisconnectResult.None) + { + NetPacketPool.Recycle(packet); + return; + } + DisconnectPeerForce( + netPeer, + disconnectResult == DisconnectResult.Disconnect + ? DisconnectReason.RemoteConnectionClose + : DisconnectReason.ConnectionRejected, + 0, packet); + } + else + { + NetPacketPool.Recycle(packet); + } + //Send shutdown + SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.ShutdownOk), remoteEndPoint); + break; + + case PacketProperty.ConnectAccept: + var connAccept = NetConnectAcceptPacket.FromData(packet); + if (connAccept != null && peerFound && netPeer.ProcessConnectAccept(connAccept)) + CreateEvent(NetEvent.EType.Connect, netPeer); + break; + default: + if(peerFound) + netPeer.ProcessPacket(packet); + else + SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.PeerNotFound), remoteEndPoint); + break; + } + } + + internal void ReceiveFromPeer(NetPacket packet, NetPeer fromPeer) + { + var deliveryMethod = packet.Property == PacketProperty.Channeled + ? (DeliveryMethod) (packet.ChannelId % 4) + : DeliveryMethod.Unreliable; + CreateEvent(NetEvent.EType.Receive, fromPeer, deliveryMethod: deliveryMethod, readerSource: packet); + } + + /// + /// Send data to all connected peers (channel - 0) + /// + /// DataWriter with data + /// Send options (reliable, unreliable, etc.) + public void SendToAll(NetDataWriter writer, DeliveryMethod options) + { + SendToAll(writer.Data, 0, writer.Length, options); + } + + /// + /// Send data to all connected peers (channel - 0) + /// + /// Data + /// Send options (reliable, unreliable, etc.) + public void SendToAll(byte[] data, DeliveryMethod options) + { + SendToAll(data, 0, data.Length, options); + } + + /// + /// Send data to all connected peers (channel - 0) + /// + /// Data + /// Start of data + /// Length of data + /// Send options (reliable, unreliable, etc.) + public void SendToAll(byte[] data, int start, int length, DeliveryMethod options) + { + SendToAll(data, start, length, 0, options); + } + + /// + /// Send data to all connected peers + /// + /// DataWriter with data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + public void SendToAll(NetDataWriter writer, byte channelNumber, DeliveryMethod options) + { + SendToAll(writer.Data, 0, writer.Length, channelNumber, options); + } + + /// + /// Send data to all connected peers + /// + /// Data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + public void SendToAll(byte[] data, byte channelNumber, DeliveryMethod options) + { + SendToAll(data, 0, data.Length, channelNumber, options); + } + + /// + /// Send data to all connected peers + /// + /// Data + /// Start of data + /// Length of data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + public void SendToAll(byte[] data, int start, int length, byte channelNumber, DeliveryMethod options) + { + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + netPeer.Send(data, start, length, channelNumber, options); + } + + /// + /// Send data to all connected peers (channel - 0) + /// + /// DataWriter with data + /// Send options (reliable, unreliable, etc.) + /// Excluded peer + public void SendToAll(NetDataWriter writer, DeliveryMethod options, NetPeer excludePeer) + { + SendToAll(writer.Data, 0, writer.Length, 0, options, excludePeer); + } + + /// + /// Send data to all connected peers (channel - 0) + /// + /// Data + /// Send options (reliable, unreliable, etc.) + /// Excluded peer + public void SendToAll(byte[] data, DeliveryMethod options, NetPeer excludePeer) + { + SendToAll(data, 0, data.Length, 0, options, excludePeer); + } + + /// + /// Send data to all connected peers (channel - 0) + /// + /// Data + /// Start of data + /// Length of data + /// Send options (reliable, unreliable, etc.) + /// Excluded peer + public void SendToAll(byte[] data, int start, int length, DeliveryMethod options, NetPeer excludePeer) + { + SendToAll(data, start, length, 0, options, excludePeer); + } + + /// + /// Send data to all connected peers + /// + /// DataWriter with data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + /// Excluded peer + public void SendToAll(NetDataWriter writer, byte channelNumber, DeliveryMethod options, NetPeer excludePeer) + { + SendToAll(writer.Data, 0, writer.Length, channelNumber, options, excludePeer); + } + + /// + /// Send data to all connected peers + /// + /// Data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + /// Excluded peer + public void SendToAll(byte[] data, byte channelNumber, DeliveryMethod options, NetPeer excludePeer) + { + SendToAll(data, 0, data.Length, channelNumber, options, excludePeer); + } + + + /// + /// Send data to all connected peers + /// + /// Data + /// Start of data + /// Length of data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + /// Excluded peer + public void SendToAll(byte[] data, int start, int length, byte channelNumber, DeliveryMethod options, NetPeer excludePeer) + { + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + { + if (netPeer != excludePeer) + netPeer.Send(data, start, length, channelNumber, options); + } + } + + /// + /// Start logic thread and listening on available port + /// + public bool Start() + { + return Start(0); + } + + /// + /// Start logic thread and listening on selected port + /// + /// bind to specific ipv4 address + /// bind to specific ipv6 address + /// port to listen + public bool Start(IPAddress addressIPv4, IPAddress addressIPv6, int port) + { + if (IsRunning) + return false; + if (!_socket.Bind(addressIPv4, addressIPv6, port, ReuseAddress, IPv6Enabled)) + return false; + IsRunning = true; + _logicThread = new Thread(UpdateLogic) { Name = "LogicThread", IsBackground = true }; + _logicThread.Start(); + return true; + } + + /// + /// Start logic thread and listening on selected port + /// + /// bind to specific ipv4 address + /// bind to specific ipv6 address + /// port to listen + public bool Start(string addressIPv4, string addressIPv6, int port) + { + IPAddress ipv4 = NetUtils.ResolveAddress(addressIPv4); + IPAddress ipv6 = NetUtils.ResolveAddress(addressIPv6); + return Start(ipv4, ipv6, port); + } + + /// + /// Start logic thread and listening on selected port + /// + /// port to listen + public bool Start(int port) + { + return Start(IPAddress.Any, IPAddress.IPv6Any, port); + } + + /// + /// Send message without connection + /// + /// Raw data + /// Packet destination + /// Operation result + public bool SendUnconnectedMessage(byte[] message, IPEndPoint remoteEndPoint) + { + return SendUnconnectedMessage(message, 0, message.Length, remoteEndPoint); + } + + /// + /// Send message without connection + /// + /// Data serializer + /// Packet destination + /// Operation result + public bool SendUnconnectedMessage(NetDataWriter writer, IPEndPoint remoteEndPoint) + { + return SendUnconnectedMessage(writer.Data, 0, writer.Length, remoteEndPoint); + } + + /// + /// Send message without connection + /// + /// Raw data + /// data start + /// data length + /// Packet destination + /// Operation result + public bool SendUnconnectedMessage(byte[] message, int start, int length, IPEndPoint remoteEndPoint) + { + if (!IsRunning) + return false; + + //No need for CRC here, SendRaw does that + NetPacket packet = NetPacketPool.GetWithData(PacketProperty.UnconnectedMessage, message, start, length); + + return SendRawAndRecycle(packet, remoteEndPoint) > 0; + } + + public bool SendBroadcast(NetDataWriter writer, int port) + { + return SendBroadcast(writer.Data, 0, writer.Length, port); + } + + public bool SendBroadcast(byte[] data, int port) + { + return SendBroadcast(data, 0, data.Length, port); + } + + public bool SendBroadcast(byte[] data, int start, int length, int port) + { + if (!IsRunning) + return false; + + NetPacket packet; + if (_extraPacketLayer != null) + { + var headerSize = NetPacket.GetHeaderSize(PacketProperty.Broadcast); + packet = NetPacketPool.GetPacket(headerSize + length + _extraPacketLayer.ExtraPacketSizeForLayer); + packet.Property = PacketProperty.Broadcast; + Buffer.BlockCopy(data, start, packet.RawData, headerSize, length); + var checksumComputeStart = 0; + int preCrcLength = length + headerSize; + _extraPacketLayer.ProcessOutBoundPacket(ref packet.RawData, ref checksumComputeStart, ref preCrcLength); + } + else + { + packet = NetPacketPool.GetWithData(PacketProperty.Broadcast, data, start, length); + } + + bool result = _socket.SendBroadcast(packet.RawData, 0, packet.Size, port); + NetPacketPool.Recycle(packet); + return result; + } + + /// + /// Flush all queued packets of all peers + /// + public void Flush() + { + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + netPeer.Flush(); + } + + /// + /// Receive all pending events. Call this in game update code + /// + public void PollEvents() + { + if (UnsyncedEvents) + return; + while (true) + { + NetEvent evt; + lock (_netEventsQueue) + { + if (_netEventsQueue.Count > 0) + evt = _netEventsQueue.Dequeue(); + else + return; + } + ProcessEvent(evt); + } + } + + /// + /// Connect to remote host + /// + /// Server IP or hostname + /// Server Port + /// Connection key + /// New NetPeer if new connection, Old NetPeer if already connected + /// Manager is not running. Call + public NetPeer Connect(string address, int port, string key) + { + return Connect(address, port, NetDataWriter.FromString(key)); + } + + /// + /// Connect to remote host + /// + /// Server IP or hostname + /// Server Port + /// Additional data for remote peer + /// New NetPeer if new connection, Old NetPeer if already connected + /// Manager is not running. Call + public NetPeer Connect(string address, int port, NetDataWriter connectionData) + { + IPEndPoint ep; + try + { + ep = NetUtils.MakeEndPoint(address, port); + } + catch + { + CreateEvent(NetEvent.EType.Disconnect, disconnectReason: DisconnectReason.UnknownHost); + return null; + } + return Connect(ep, connectionData); + } + + /// + /// Connect to remote host + /// + /// Server end point (ip and port) + /// Connection key + /// New NetPeer if new connection, Old NetPeer if already connected + /// Manager is not running. Call + public NetPeer Connect(IPEndPoint target, string key) + { + return Connect(target, NetDataWriter.FromString(key)); + } + + /// + /// Connect to remote host + /// + /// Server end point (ip and port) + /// Additional data for remote peer + /// New NetPeer if new connection, Old NetPeer if already connected, null peer if there is ConnectionRequest awaiting + /// Manager is not running. Call + public NetPeer Connect(IPEndPoint target, NetDataWriter connectionData) + { + if (!IsRunning) + throw new InvalidOperationException("Client is not running"); + + NetPeer peer; + byte connectionNumber = 0; + + if (_requestsDict.ContainsKey(target)) + return null; + + _peersLock.EnterUpgradeableReadLock(); + if (_peersDict.TryGetValue(target, out peer)) + { + switch (peer.ConnectionState) + { + //just return already connected peer + case ConnectionState.Connected: + case ConnectionState.Outgoing: + _peersLock.ExitUpgradeableReadLock(); + return peer; + } + //else reconnect + connectionNumber = (byte)((peer.ConnectionNum + 1) % NetConstants.MaxConnectionNumber); + RemovePeer(peer); + } + + //Create reliable connection + //And send connection request + peer = new NetPeer(this, target, GetNextPeerId(), connectionNumber, connectionData); + AddPeer(peer); + _peersLock.ExitUpgradeableReadLock(); + + return peer; + } + + /// + /// Force closes connection and stop all threads. + /// + public void Stop() + { + Stop(true); + } + + /// + /// Force closes connection and stop all threads. + /// + /// Send disconnect messages + public void Stop(bool sendDisconnectMessages) + { + if (!IsRunning) + return; + NetDebug.Write("[NM] Stop"); + + //Send last disconnect + for(var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + netPeer.Shutdown(null, 0, 0, !sendDisconnectMessages); + + //For working send + IsRunning = false; + + //Stop + _logicThread.Join(); + _logicThread = null; + _socket.Close(); + + //clear peers + _peersLock.EnterWriteLock(); + _headPeer = null; + _peersDict.Clear(); + _peersArray = new NetPeer[32]; + _peersLock.ExitWriteLock(); + lock(_peerIds) + _peerIds.Clear(); +#if DEBUG + lock (_pingSimulationList) + _pingSimulationList.Clear(); +#endif + _connectedPeersCount = 0; + lock(_netEventsQueue) + _netEventsQueue.Clear(); + } + + /// + /// Return peers count with connection state + /// + /// peer connection state (you can use as bit flags) + /// peers count + public int GetPeersCount(ConnectionState peerState) + { + int count = 0; + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + { + if ((netPeer.ConnectionState & peerState) != 0) + count++; + } + return count; + } + + /// + /// Get copy of peers (without allocations) + /// + /// List that will contain result + /// State of peers + public void GetPeersNonAlloc(List peers, ConnectionState peerState) + { + peers.Clear(); + _peersLock.EnterReadLock(); + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + { + if ((netPeer.ConnectionState & peerState) != 0) + peers.Add(netPeer); + } + _peersLock.ExitReadLock(); + } + + /// + /// Disconnect all peers without any additional data + /// + public void DisconnectAll() + { + DisconnectAll(null, 0, 0); + } + + /// + /// Disconnect all peers with shutdown message + /// + /// Data to send (must be less or equal MTU) + /// Data start + /// Data count + public void DisconnectAll(byte[] data, int start, int count) + { + //Send disconnect packets + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + { + DisconnectPeer( + netPeer, + DisconnectReason.DisconnectPeerCalled, + 0, + false, + data, + start, + count, + null); + } + } + + /// + /// Immediately disconnect peer from server without additional data + /// + /// peer to disconnect + public void DisconnectPeerForce(NetPeer peer) + { + DisconnectPeerForce(peer, DisconnectReason.DisconnectPeerCalled, 0, null); + } + + /// + /// Disconnect peer from server + /// + /// peer to disconnect + public void DisconnectPeer(NetPeer peer) + { + DisconnectPeer(peer, null, 0, 0); + } + + /// + /// Disconnect peer from server and send additional data (Size must be less or equal MTU - 8) + /// + /// peer to disconnect + /// additional data + public void DisconnectPeer(NetPeer peer, byte[] data) + { + DisconnectPeer(peer, data, 0, data.Length); + } + + /// + /// Disconnect peer from server and send additional data (Size must be less or equal MTU - 8) + /// + /// peer to disconnect + /// additional data + public void DisconnectPeer(NetPeer peer, NetDataWriter writer) + { + DisconnectPeer(peer, writer.Data, 0, writer.Length); + } + + /// + /// Disconnect peer from server and send additional data (Size must be less or equal MTU - 8) + /// + /// peer to disconnect + /// additional data + /// data start + /// data length + public void DisconnectPeer(NetPeer peer, byte[] data, int start, int count) + { + DisconnectPeer( + peer, + DisconnectReason.DisconnectPeerCalled, + 0, + false, + data, + start, + count, + null); + } + + public NetPeerEnumerator GetEnumerator() + { + return new NetPeerEnumerator(_headPeer); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return new NetPeerEnumerator(_headPeer); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return new NetPeerEnumerator(_headPeer); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs.meta new file mode 100644 index 000000000..52a275451 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b345894274ec82c4e9560f0b146822c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs new file mode 100644 index 000000000..d578c990c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs @@ -0,0 +1,243 @@ +using System; +using LiteNetLib.Utils; + +namespace LiteNetLib +{ + internal enum PacketProperty : byte + { + Unreliable, + Channeled, + Ack, + Ping, + Pong, + ConnectRequest, + ConnectAccept, + Disconnect, + UnconnectedMessage, + NatIntroductionRequest, + NatIntroduction, + NatPunchMessage, + MtuCheck, + MtuOk, + Broadcast, + Merged, + ShutdownOk, + PeerNotFound, + InvalidProtocol + } + + internal sealed class NetPacket + { + private static readonly int LastProperty = Enum.GetValues(typeof(PacketProperty)).Length; + //Header + public PacketProperty Property + { + get { return (PacketProperty)(RawData[0] & 0x1F); } + set { RawData[0] = (byte)((RawData[0] & 0xE0) | (byte)value); } + } + + public byte ConnectionNumber + { + get { return (byte)((RawData[0] & 0x60) >> 5); } + set { RawData[0] = (byte) ((RawData[0] & 0x9F) | (value << 5)); } + } + + public ushort Sequence + { + get { return BitConverter.ToUInt16(RawData, 1); } + set { FastBitConverter.GetBytes(RawData, 1, value); } + } + + public bool IsFragmented + { + get { return (RawData[0] & 0x80) != 0; } + } + + public void MarkFragmented() + { + RawData[0] |= 0x80; //set first bit + } + + public byte ChannelId + { + get { return RawData[3]; } + set { RawData[3] = value; } + } + + public ushort FragmentId + { + get { return BitConverter.ToUInt16(RawData, 4); } + set { FastBitConverter.GetBytes(RawData, 4, value); } + } + + public ushort FragmentPart + { + get { return BitConverter.ToUInt16(RawData, 6); } + set { FastBitConverter.GetBytes(RawData, 6, value); } + } + + public ushort FragmentsTotal + { + get { return BitConverter.ToUInt16(RawData, 8); } + set { FastBitConverter.GetBytes(RawData, 8, value); } + } + + //Data + public byte[] RawData; + public ushort Size; + + //Delivery + public object UserData; + + public NetPacket(int size) + { + RawData = new byte[size]; + Size = (ushort)size; + } + + public NetPacket(PacketProperty property, int size) + { + size += GetHeaderSize(property); + RawData = new byte[size]; + Property = property; + Size = (ushort)size; + } + + public static int GetHeaderSize(PacketProperty property) + { + switch (property) + { + case PacketProperty.Channeled: + case PacketProperty.Ack: + return NetConstants.ChanneledHeaderSize; + case PacketProperty.Ping: + return NetConstants.HeaderSize + 2; + case PacketProperty.ConnectRequest: + return NetConnectRequestPacket.HeaderSize; + case PacketProperty.ConnectAccept: + return NetConnectAcceptPacket.Size; + case PacketProperty.Disconnect: + return NetConstants.HeaderSize + 8; + case PacketProperty.Pong: + return NetConstants.HeaderSize + 10; + default: + return NetConstants.HeaderSize; + } + } + + public int GetHeaderSize() + { + return GetHeaderSize(Property); + } + + //Packet contstructor from byte array + public bool FromBytes(byte[] data, int start, int packetSize) + { + //Reading property + byte property = (byte)(data[start] & 0x1F); + bool fragmented = (data[start] & 0x80) != 0; + int headerSize = GetHeaderSize((PacketProperty) property); + + if (property > LastProperty || packetSize < headerSize || + (fragmented && packetSize < headerSize + NetConstants.FragmentHeaderSize) || + data.Length < start + packetSize) + { + return false; + } + + Buffer.BlockCopy(data, start, RawData, 0, packetSize); + Size = (ushort)packetSize; + return true; + } + } + + internal sealed class NetConnectRequestPacket + { + public const int HeaderSize = 13; + public readonly long ConnectionTime; + public readonly byte ConnectionNumber; + public readonly NetDataReader Data; + + private NetConnectRequestPacket(long connectionId, byte connectionNumber, NetDataReader data) + { + ConnectionTime = connectionId; + ConnectionNumber = connectionNumber; + Data = data; + } + + public static int GetProtocolId(NetPacket packet) + { + return BitConverter.ToInt32(packet.RawData, 1); + } + + public static NetConnectRequestPacket FromData(NetPacket packet) + { + if (packet.ConnectionNumber >= NetConstants.MaxConnectionNumber) + return null; + + //Getting new id for peer + long connectionId = BitConverter.ToInt64(packet.RawData, 5); + + // Read data and create request + var reader = new NetDataReader(null, 0, 0); + if (packet.Size > HeaderSize) + reader.SetSource(packet.RawData, HeaderSize, packet.Size); + + return new NetConnectRequestPacket(connectionId, packet.ConnectionNumber, reader); + } + + public static NetPacket Make(NetDataWriter connectData, long connectId) + { + //Make initial packet + var packet = new NetPacket(PacketProperty.ConnectRequest, connectData.Length); + + //Add data + FastBitConverter.GetBytes(packet.RawData, 1, NetConstants.ProtocolId); + FastBitConverter.GetBytes(packet.RawData, 5, connectId); + Buffer.BlockCopy(connectData.Data, 0, packet.RawData, HeaderSize, connectData.Length); + return packet; + } + } + + internal sealed class NetConnectAcceptPacket + { + public const int Size = 11; + public readonly long ConnectionId; + public readonly byte ConnectionNumber; + public readonly bool IsReusedPeer; + + private NetConnectAcceptPacket(long connectionId, byte connectionNumber, bool isReusedPeer) + { + ConnectionId = connectionId; + ConnectionNumber = connectionNumber; + IsReusedPeer = isReusedPeer; + } + + public static NetConnectAcceptPacket FromData(NetPacket packet) + { + if (packet.Size > Size) + return null; + + long connectionId = BitConverter.ToInt64(packet.RawData, 1); + //check connect num + byte connectionNumber = packet.RawData[9]; + if (connectionNumber >= NetConstants.MaxConnectionNumber) + return null; + //check reused flag + byte isReused = packet.RawData[10]; + if (isReused > 1) + return null; + + return new NetConnectAcceptPacket(connectionId, connectionNumber, isReused == 1); + } + + public static NetPacket Make(long connectId, byte connectNum, bool reusedPeer) + { + var packet = new NetPacket(PacketProperty.ConnectAccept, 0); + FastBitConverter.GetBytes(packet.RawData, 1, connectId); + packet.RawData[9] = connectNum; + packet.RawData[10] = (byte)(reusedPeer ? 1 : 0); + return packet; + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs.meta new file mode 100644 index 000000000..f881e141f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0fce7a527c693d146bce2ee034ae5ccc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs new file mode 100644 index 000000000..ef97c9166 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs @@ -0,0 +1,86 @@ +using System; +using System.Threading; + +namespace LiteNetLib +{ + internal sealed class NetPacketPool + { + private readonly NetPacket[] _pool = new NetPacket[NetConstants.PacketPoolSize]; + private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion); + private int _count; + + public NetPacket GetWithData(PacketProperty property, byte[] data, int start, int length) + { + int headerSize = NetPacket.GetHeaderSize(property); + NetPacket packet = GetPacket(length + headerSize); + packet.Property = property; + Buffer.BlockCopy(data, start, packet.RawData, headerSize, length); + return packet; + } + + //Get packet with size + public NetPacket GetWithProperty(PacketProperty property, int size) + { + NetPacket packet = GetPacket(size + NetPacket.GetHeaderSize(property)); + packet.Property = property; + return packet; + } + + public NetPacket GetWithProperty(PacketProperty property) + { + NetPacket packet = GetPacket(NetPacket.GetHeaderSize(property)); + packet.Property = property; + return packet; + } + + public NetPacket GetPacket(int size) + { + if (size <= NetConstants.MaxPacketSize) + { + NetPacket packet = null; + _lock.EnterUpgradeableReadLock(); + if (_count > 0) + { + _lock.EnterWriteLock(); + _count--; + packet = _pool[_count]; + _pool[_count] = null; + _lock.ExitWriteLock(); + } + _lock.ExitUpgradeableReadLock(); + if (packet != null) + { + packet.Size = (ushort)size; + if (packet.RawData.Length < size) + packet.RawData = new byte[size]; + return packet; + } + } + return new NetPacket(size); + } + + public void Recycle(NetPacket packet) + { + if (packet.RawData.Length > NetConstants.MaxPacketSize) + { + //Dont pool big packets. Save memory + return; + } + + //Clean fragmented flag + packet.RawData[0] = 0; + + _lock.EnterUpgradeableReadLock(); + if (_count == NetConstants.PacketPoolSize) + { + _lock.ExitUpgradeableReadLock(); + return; + } + _lock.EnterWriteLock(); + _pool[_count] = packet; + _count++; + _lock.ExitWriteLock(); + _lock.ExitUpgradeableReadLock(); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs.meta new file mode 100644 index 000000000..062391f0f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPacketPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f777ff6a77fb43c4a9b50b59657d450e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs new file mode 100644 index 000000000..07af8044e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs @@ -0,0 +1,1131 @@ +#if DEBUG +#define STATS_ENABLED +#endif +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Net; +using LiteNetLib.Utils; + +namespace LiteNetLib +{ + /// + /// Peer connection state + /// + [Flags] + public enum ConnectionState : byte + { + Outgoing = 1 << 1, + Connected = 1 << 2, + ShutdownRequested = 1 << 3, + Disconnected = 1 << 4, + Any = Outgoing | Connected | ShutdownRequested + } + + internal enum ConnectRequestResult + { + None, + P2PConnection, //when peer connecting + Reconnection, //when peer was connected + NewConnection //when peer was disconnected + } + + internal enum DisconnectResult + { + None, + Reject, + Disconnect + } + + /// + /// Network peer. Main purpose is sending messages to specific peer. + /// + public class NetPeer + { + //Ping and RTT + private int _rtt; + private int _avgRtt; + private int _rttCount; + private double _resendDelay = 27.0; + private int _pingSendTimer; + private int _rttResetTimer; + private readonly Stopwatch _pingTimer = new Stopwatch(); + private int _timeSinceLastPacket; + private long _remoteDelta; + + //Common + private readonly NetPacketPool _packetPool; + private readonly object _flushLock = new object(); + private readonly object _sendLock = new object(); + private readonly object _shutdownLock = new object(); + + internal volatile NetPeer NextPeer; + internal NetPeer PrevPeer; + + internal byte ConnectionNum + { + get { return _connectNum; } + private set + { + _connectNum = value; + _mergeData.ConnectionNumber = value; + _pingPacket.ConnectionNumber = value; + _pongPacket.ConnectionNumber = value; + } + } + + //Channels + private readonly Queue _unreliableChannel; + private readonly BaseChannel[] _channels; + private BaseChannel _headChannel; + + //MTU + private int _mtu; + private int _mtuIdx; + private bool _finishMtu; + private int _mtuCheckTimer; + private int _mtuCheckAttempts; + private const int MtuCheckDelay = 1000; + private const int MaxMtuCheckAttempts = 4; + private readonly object _mtuMutex = new object(); + + //Fragment + private class IncomingFragments + { + public NetPacket[] Fragments; + public int ReceivedCount; + public int TotalSize; + public byte ChannelId; + } + private ushort _fragmentId; + private readonly Dictionary _holdedFragments; + private readonly Dictionary _deliveredFramgnets; + + //Merging + private readonly NetPacket _mergeData; + private int _mergePos; + private int _mergeCount; + + //Connection + private int _connectAttempts; + private int _connectTimer; + private long _connectTime; + private byte _connectNum; + private ConnectionState _connectionState; + private NetPacket _shutdownPacket; + private const int ShutdownDelay = 300; + private int _shutdownTimer; + private readonly NetPacket _pingPacket; + private readonly NetPacket _pongPacket; + private readonly NetPacket _connectRequestPacket; + private readonly NetPacket _connectAcceptPacket; + + /// + /// Peer ip address and port + /// + public readonly IPEndPoint EndPoint; + + /// + /// Peer parent NetManager + /// + public readonly NetManager NetManager; + + /// + /// Current connection state + /// + public ConnectionState ConnectionState { get { return _connectionState; } } + + /// + /// Connection time for internal purposes + /// + internal long ConnectTime { get { return _connectTime; } } + + /// + /// Peer id can be used as key in your dictionary of peers + /// + public readonly int Id; + + /// + /// Current ping in milliseconds + /// + public int Ping { get { return _avgRtt/2; } } + + /// + /// Current MTU - Maximum Transfer Unit ( maximum udp packet size without fragmentation ) + /// + public int Mtu { get { return _mtu; } } + + /// + /// Delta with remote time in ticks (not accurate) + /// positive - remote time > our time + /// + public long RemoteTimeDelta + { + get { return _remoteDelta; } + } + + /// + /// Remote UTC time (not accurate) + /// + public DateTime RemoteUtcTime + { + get { return new DateTime(DateTime.UtcNow.Ticks + _remoteDelta); } + } + + /// + /// Time since last packet received (including internal library packets) + /// + public int TimeSinceLastPacket { get { return _timeSinceLastPacket; } } + + internal double ResendDelay { get { return _resendDelay; } } + + /// + /// Application defined object containing data about the connection + /// + public object Tag; + + /// + /// Statistics of peer connection + /// + public readonly NetStatistics Statistics; + + //incoming connection constructor + internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id) + { + Id = id; + Statistics = new NetStatistics(); + _packetPool = netManager.NetPacketPool; + NetManager = netManager; + SetMtu(0); + + EndPoint = remoteEndPoint; + _connectionState = ConnectionState.Connected; + _mergeData = new NetPacket(PacketProperty.Merged, NetConstants.MaxPacketSize); + _pongPacket = new NetPacket(PacketProperty.Pong, 0); + _pingPacket = new NetPacket(PacketProperty.Ping, 0) {Sequence = 1}; + + _unreliableChannel = new Queue(64); + _headChannel = null; + _holdedFragments = new Dictionary(); + _deliveredFramgnets = new Dictionary(); + + _channels = new BaseChannel[netManager.ChannelsCount * 4]; + } + + private void SetMtu(int mtuIdx) + { + int extraLayerSpace = NetManager._extraPacketLayer != null ? NetManager._extraPacketLayer.ExtraPacketSizeForLayer : 0; + _mtu = NetConstants.PossibleMtu[mtuIdx] - extraLayerSpace; + } + + private BaseChannel CreateChannel(byte idx) + { + BaseChannel newChannel = _channels[idx]; + if (newChannel != null) + return newChannel; + switch ((DeliveryMethod)(idx % 4)) + { + case DeliveryMethod.ReliableUnordered: + newChannel = new ReliableChannel(this, false, idx); + break; + case DeliveryMethod.Sequenced: + newChannel = new SequencedChannel(this, false, idx); + break; + case DeliveryMethod.ReliableOrdered: + newChannel = new ReliableChannel(this, true, idx); + break; + case DeliveryMethod.ReliableSequenced: + newChannel = new SequencedChannel(this, true, idx); + break; + } + _channels[idx] = newChannel; + newChannel.Next = _headChannel; + _headChannel = newChannel; + return newChannel; + } + + //"Connect to" constructor + internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id, byte connectNum, NetDataWriter connectData) + : this(netManager, remoteEndPoint, id) + { + _connectTime = DateTime.UtcNow.Ticks; + _connectionState = ConnectionState.Outgoing; + ConnectionNum = connectNum; + + //Make initial packet + _connectRequestPacket = NetConnectRequestPacket.Make(connectData, _connectTime); + _connectRequestPacket.ConnectionNumber = connectNum; + + //Send request + NetManager.SendRaw(_connectRequestPacket, EndPoint); + + NetDebug.Write(NetLogLevel.Trace, "[CC] ConnectId: {0}, ConnectNum: {1}", _connectTime, connectNum); + } + + //"Accept" incoming constructor + internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id, long connectId, byte connectNum) + : this(netManager, remoteEndPoint, id) + { + _connectTime = connectId; + _connectionState = ConnectionState.Connected; + ConnectionNum = connectNum; + + //Make initial packet + _connectAcceptPacket = NetConnectAcceptPacket.Make(_connectTime, connectNum, false); + //Send + NetManager.SendRaw(_connectAcceptPacket, EndPoint); + + NetDebug.Write(NetLogLevel.Trace, "[CC] ConnectId: {0}", _connectTime); + } + + //Reject + internal void Reject(long connectionId, byte connectionNumber, byte[] data, int start, int length) + { + _connectTime = connectionId; + _connectNum = connectionNumber; + Shutdown(data, start, length, false); + } + + internal bool ProcessConnectAccept(NetConnectAcceptPacket packet) + { + if (_connectionState != ConnectionState.Outgoing) + return false; + + //check connection id + if (packet.ConnectionId != _connectTime) + { + NetDebug.Write(NetLogLevel.Trace, "[NC] Invalid connectId: {0}", _connectTime); + return false; + } + //check connect num + ConnectionNum = packet.ConnectionNumber; + + NetDebug.Write(NetLogLevel.Trace, "[NC] Received connection accept"); + _timeSinceLastPacket = 0; + _connectionState = ConnectionState.Connected; + return true; + } + + /// + /// Gets maximum size of packet that will be not fragmented. + /// + /// Type of packet that you want send + /// size in bytes + public int GetMaxSinglePacketSize(DeliveryMethod options) + { + return _mtu - NetPacket.GetHeaderSize(options == DeliveryMethod.Unreliable ? PacketProperty.Unreliable : PacketProperty.Channeled); + } + + /// + /// Send data to peer with delivery event called + /// + /// Data + /// Number of channel (from 0 to channelsCount - 1) + /// Delivery method (reliable, unreliable, etc.) + /// User data that will be received in DeliveryEvent + /// + /// If you trying to send unreliable packet type + /// + public void SendWithDeliveryEvent(byte[] data, byte channelNumber, DeliveryMethod deliveryMethod, object userData) + { + if (deliveryMethod != DeliveryMethod.ReliableOrdered && deliveryMethod != DeliveryMethod.ReliableUnordered) + throw new ArgumentException("Delivery event will work only for ReliableOrdered/Unordered packets"); + SendInternal(data, 0, data.Length, channelNumber, deliveryMethod, userData); + } + + /// + /// Send data to peer with delivery event called + /// + /// Data + /// Start of data + /// Length of data + /// Number of channel (from 0 to channelsCount - 1) + /// Delivery method (reliable, unreliable, etc.) + /// User data that will be received in DeliveryEvent + /// + /// If you trying to send unreliable packet type + /// + public void SendWithDeliveryEvent(byte[] data, int start, int length, byte channelNumber, DeliveryMethod deliveryMethod, object userData) + { + if (deliveryMethod != DeliveryMethod.ReliableOrdered && deliveryMethod != DeliveryMethod.ReliableUnordered) + throw new ArgumentException("Delivery event will work only for ReliableOrdered/Unordered packets"); + SendInternal(data, start, length, channelNumber, deliveryMethod, userData); + } + + /// + /// Send data to peer with delivery event called + /// + /// Data + /// Number of channel (from 0 to channelsCount - 1) + /// Delivery method (reliable, unreliable, etc.) + /// User data that will be received in DeliveryEvent + /// + /// If you trying to send unreliable packet type + /// + public void SendWithDeliveryEvent(NetDataWriter dataWriter, byte channelNumber, DeliveryMethod deliveryMethod, object userData) + { + if (deliveryMethod != DeliveryMethod.ReliableOrdered && deliveryMethod != DeliveryMethod.ReliableUnordered) + throw new ArgumentException("Delivery event will work only for ReliableOrdered/Unordered packets"); + SendInternal(dataWriter.Data, 0, dataWriter.Length, channelNumber, deliveryMethod, userData); + } + + /// + /// Send data to peer (channel - 0) + /// + /// Data + /// Send options (reliable, unreliable, etc.) + /// + /// If size exceeds maximum limit: + /// MTU - headerSize bytes for Unreliable + /// Fragment count exceeded ushort.MaxValue + /// + public void Send(byte[] data, DeliveryMethod deliveryMethod) + { + SendInternal(data, 0, data.Length, 0, deliveryMethod, null); + } + + /// + /// Send data to peer (channel - 0) + /// + /// DataWriter with data + /// Send options (reliable, unreliable, etc.) + /// + /// If size exceeds maximum limit: + /// MTU - headerSize bytes for Unreliable + /// Fragment count exceeded ushort.MaxValue + /// + public void Send(NetDataWriter dataWriter, DeliveryMethod deliveryMethod) + { + SendInternal(dataWriter.Data, 0, dataWriter.Length, 0, deliveryMethod, null); + } + + /// + /// Send data to peer (channel - 0) + /// + /// Data + /// Start of data + /// Length of data + /// Send options (reliable, unreliable, etc.) + /// + /// If size exceeds maximum limit: + /// MTU - headerSize bytes for Unreliable + /// Fragment count exceeded ushort.MaxValue + /// + public void Send(byte[] data, int start, int length, DeliveryMethod options) + { + SendInternal(data, start, length, 0, options, null); + } + + /// + /// Send data to peer + /// + /// Data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + /// + /// If size exceeds maximum limit: + /// MTU - headerSize bytes for Unreliable + /// Fragment count exceeded ushort.MaxValue + /// + public void Send(byte[] data, byte channelNumber, DeliveryMethod deliveryMethod) + { + SendInternal(data, 0, data.Length, channelNumber, deliveryMethod, null); + } + + /// + /// Send data to peer + /// + /// DataWriter with data + /// Number of channel (from 0 to channelsCount - 1) + /// Send options (reliable, unreliable, etc.) + /// + /// If size exceeds maximum limit: + /// MTU - headerSize bytes for Unreliable + /// Fragment count exceeded ushort.MaxValue + /// + public void Send(NetDataWriter dataWriter, byte channelNumber, DeliveryMethod deliveryMethod) + { + SendInternal(dataWriter.Data, 0, dataWriter.Length, channelNumber, deliveryMethod, null); + } + + /// + /// Send data to peer + /// + /// Data + /// Start of data + /// Length of data + /// Number of channel (from 0 to channelsCount - 1) + /// Delivery method (reliable, unreliable, etc.) + /// + /// If size exceeds maximum limit: + /// MTU - headerSize bytes for Unreliable + /// Fragment count exceeded ushort.MaxValue + /// + public void Send(byte[] data, int start, int length, byte channelNumber, DeliveryMethod deliveryMethod) + { + SendInternal(data, start, length, channelNumber, deliveryMethod, null); + } + + private void SendInternal( + byte[] data, + int start, + int length, + byte channelNumber, + DeliveryMethod deliveryMethod, + object userData) + { + if (_connectionState != ConnectionState.Connected || channelNumber >= _channels.Length) + return; + + //Select channel + PacketProperty property; + BaseChannel channel = null; + + if (deliveryMethod == DeliveryMethod.Unreliable) + { + property = PacketProperty.Unreliable; + } + else + { + property = PacketProperty.Channeled; + channel = CreateChannel((byte)(channelNumber*4 + (byte)deliveryMethod)); + } + + //Prepare + NetDebug.Write("[RS]Packet: " + property); + + //Check fragmentation + int headerSize = NetPacket.GetHeaderSize(property); + //Save mtu for multithread + int mtu = _mtu; + if (length + headerSize > mtu) + { + //if cannot be fragmented + if (deliveryMethod != DeliveryMethod.ReliableOrdered && deliveryMethod != DeliveryMethod.ReliableUnordered) + throw new TooBigPacketException("Unreliable packet size exceeded maximum of " + (mtu - headerSize) + " bytes"); + + int packetFullSize = mtu - headerSize; + int packetDataSize = packetFullSize - NetConstants.FragmentHeaderSize; + int totalPackets = length / packetDataSize + (length % packetDataSize == 0 ? 0 : 1); + + NetDebug.Write("FragmentSend:\n" + + " MTU: {0}\n" + + " headerSize: {1}\n" + + " packetFullSize: {2}\n" + + " packetDataSize: {3}\n" + + " totalPackets: {4}", + mtu, headerSize, packetFullSize, packetDataSize, totalPackets); + + if (totalPackets > ushort.MaxValue) + throw new TooBigPacketException("Data was split in " + totalPackets + " fragments, which exceeds " + ushort.MaxValue); + + ushort currentFramentId; + lock (_sendLock) + { + currentFramentId = _fragmentId; + _fragmentId++; + } + + for(ushort partIdx = 0; partIdx < totalPackets; partIdx++) + { + int sendLength = length > packetDataSize ? packetDataSize : length; + + NetPacket p = _packetPool.GetPacket(headerSize + sendLength + NetConstants.FragmentHeaderSize); + p.Property = property; + p.UserData = userData; + p.FragmentId = currentFramentId; + p.FragmentPart = partIdx; + p.FragmentsTotal = (ushort)totalPackets; + p.MarkFragmented(); + + Buffer.BlockCopy(data, partIdx * packetDataSize, p.RawData, NetConstants.FragmentTotalSize, sendLength); + channel.AddToQueue(p); + + length -= sendLength; + } + return; + } + + //Else just send + NetPacket packet = _packetPool.GetPacket(headerSize + length); + packet.Property = property; + Buffer.BlockCopy(data, start, packet.RawData, headerSize, length); + packet.UserData = userData; + + if (channel == null) //unreliable + _unreliableChannel.Enqueue(packet); + else + channel.AddToQueue(packet); + } + + public void Disconnect(byte[] data) + { + NetManager.DisconnectPeer(this, data); + } + + public void Disconnect(NetDataWriter writer) + { + NetManager.DisconnectPeer(this, writer); + } + + public void Disconnect(byte[] data, int start, int count) + { + NetManager.DisconnectPeer(this, data, start, count); + } + + public void Disconnect() + { + NetManager.DisconnectPeer(this); + } + + internal DisconnectResult ProcessDisconnect(NetPacket packet) + { + if ((_connectionState == ConnectionState.Connected || _connectionState == ConnectionState.Outgoing) && + packet.Size >= 9 && + BitConverter.ToInt64(packet.RawData, 1) == _connectTime && + packet.ConnectionNumber == _connectNum) + { + return _connectionState == ConnectionState.Connected + ? DisconnectResult.Disconnect + : DisconnectResult.Reject; + } + return DisconnectResult.None; + } + + internal bool Shutdown(byte[] data, int start, int length, bool force) + { + lock (_shutdownLock) + { + //trying to shutdown already disconnected + if (_connectionState == ConnectionState.Disconnected || + _connectionState == ConnectionState.ShutdownRequested) + { + return false; + } + + //don't send anything + if (force) + { + _connectionState = ConnectionState.Disconnected; + return true; + } + + //reset time for reconnect protection + _timeSinceLastPacket = 0; + + //send shutdown packet + _shutdownPacket = new NetPacket(PacketProperty.Disconnect, length); + _shutdownPacket.ConnectionNumber = _connectNum; + FastBitConverter.GetBytes(_shutdownPacket.RawData, 1, _connectTime); + if (_shutdownPacket.Size >= _mtu) + { + //Drop additional data + NetDebug.WriteError("[Peer] Disconnect additional data size more than MTU - 8!"); + } + else if (data != null && length > 0) + { + Buffer.BlockCopy(data, start, _shutdownPacket.RawData, 9, length); + } + _connectionState = ConnectionState.ShutdownRequested; + NetDebug.Write("[Peer] Send disconnect"); + NetManager.SendRaw(_shutdownPacket, EndPoint); + return true; + } + } + + private void UpdateRoundTripTime(int roundTripTime) + { + _rtt += roundTripTime; + _rttCount++; + _avgRtt = _rtt/_rttCount; + _resendDelay = 25.0 + _avgRtt * 2.1; // 25 ms + double rtt + } + + internal void AddIncomingPacket(NetPacket p) + { + if (p.IsFragmented) + { + NetDebug.Write("Fragment. Id: {0}, Part: {1}, Total: {2}", p.FragmentId, p.FragmentPart, p.FragmentsTotal); + //Get needed array from dictionary + ushort packetFragId = p.FragmentId; + IncomingFragments incomingFragments; + if (!_holdedFragments.TryGetValue(packetFragId, out incomingFragments)) + { + incomingFragments = new IncomingFragments + { + Fragments = new NetPacket[p.FragmentsTotal], + ChannelId = p.ChannelId + }; + _holdedFragments.Add(packetFragId, incomingFragments); + } + + //Cache + var fragments = incomingFragments.Fragments; + + //Error check + if (p.FragmentPart >= fragments.Length || + fragments[p.FragmentPart] != null || + p.ChannelId != incomingFragments.ChannelId) + { + _packetPool.Recycle(p); + NetDebug.WriteError("Invalid fragment packet"); + return; + } + //Fill array + fragments[p.FragmentPart] = p; + + //Increase received fragments count + incomingFragments.ReceivedCount++; + + //Increase total size + incomingFragments.TotalSize += p.Size - NetConstants.FragmentTotalSize; + + //Check for finish + if (incomingFragments.ReceivedCount != fragments.Length) + return; + + int resultingPacketHeaderSize = NetPacket.GetHeaderSize(p.Property); + + NetPacket resultingPacket = _packetPool.GetPacket(resultingPacketHeaderSize + incomingFragments.TotalSize); + resultingPacket.Property = p.Property; + resultingPacket.ChannelId = incomingFragments.ChannelId; + + int firstFragmentSize = fragments[0].Size - NetConstants.FragmentTotalSize; + for (int i = 0; i < incomingFragments.ReceivedCount; i++) + { + //Create resulting big packet + int fragmentSize = fragments[i].Size - NetConstants.FragmentTotalSize; + Buffer.BlockCopy( + fragments[i].RawData, + NetConstants.FragmentTotalSize, + resultingPacket.RawData, + resultingPacketHeaderSize + firstFragmentSize * i, + fragmentSize); + + //Free memory + _packetPool.Recycle(fragments[i]); + fragments[i] = null; + } + + //Send to process + NetManager.ReceiveFromPeer(resultingPacket, this); + + //Clear memory + _holdedFragments.Remove(packetFragId); + } + else //Just simple packet + { + NetManager.ReceiveFromPeer(p, this); + } + } + + private void ProcessMtuPacket(NetPacket packet) + { + //header + int + if (packet.Size < NetConstants.PossibleMtu[0]) + return; + + //first stage check (mtu check and mtu ok) + int receivedMtu = BitConverter.ToInt32(packet.RawData, 1); + int endMtuCheck = BitConverter.ToInt32(packet.RawData, packet.Size - 4); + if (receivedMtu != packet.Size || receivedMtu != endMtuCheck || receivedMtu > NetConstants.MaxPacketSize) + { + NetDebug.WriteError("[MTU] Broken packet. RMTU {0}, EMTU {1}, PSIZE {2}", receivedMtu, endMtuCheck, packet.Size); + return; + } + + if (packet.Property == PacketProperty.MtuCheck) + { + _mtuCheckAttempts = 0; + NetDebug.Write("[MTU] check. send back: " + receivedMtu); + packet.Property = PacketProperty.MtuOk; + NetManager.SendRawAndRecycle(packet, EndPoint); + } + else if(receivedMtu > _mtu && !_finishMtu) //MtuOk + { + //invalid packet + if (receivedMtu != NetConstants.PossibleMtu[_mtuIdx + 1]) + return; + + lock (_mtuMutex) + { + _mtuIdx++; + SetMtu(_mtuIdx); + } + //if maxed - finish. + if (_mtuIdx == NetConstants.PossibleMtu.Length - 1) + _finishMtu = true; + + NetDebug.Write("[MTU] ok. Increase to: " + _mtu); + } + } + + private void UpdateMtuLogic(int deltaTime) + { + if (_finishMtu) + return; + + _mtuCheckTimer += deltaTime; + if (_mtuCheckTimer < MtuCheckDelay) + return; + + _mtuCheckTimer = 0; + _mtuCheckAttempts++; + if (_mtuCheckAttempts >= MaxMtuCheckAttempts) + { + _finishMtu = true; + return; + } + + lock (_mtuMutex) + { + if (_mtuIdx >= NetConstants.PossibleMtu.Length - 1) + return; + + //Send increased packet + int newMtu = NetConstants.PossibleMtu[_mtuIdx + 1]; + var p = _packetPool.GetPacket(newMtu); + p.Property = PacketProperty.MtuCheck; + FastBitConverter.GetBytes(p.RawData, 1, newMtu); //place into start + FastBitConverter.GetBytes(p.RawData, p.Size - 4, newMtu);//and end of packet + + //Must check result for MTU fix + if (NetManager.SendRawAndRecycle(p, EndPoint) <= 0) + _finishMtu = true; + } + } + + internal ConnectRequestResult ProcessConnectRequest(NetConnectRequestPacket connRequest) + { + //current or new request + switch (_connectionState) + { + //P2P case or just ID update + case ConnectionState.Outgoing: + //change connect id if newer + if (connRequest.ConnectionTime >= _connectTime) + { + //Change connect id + _connectTime = connRequest.ConnectionTime; + ConnectionNum = connRequest.ConnectionNumber; + } + return ConnectRequestResult.P2PConnection; + + case ConnectionState.Connected: + //Old connect request + if (connRequest.ConnectionTime == _connectTime) + { + //just reply accept + NetManager.SendRaw(_connectAcceptPacket, EndPoint); + } + //New connect request + else if (connRequest.ConnectionTime > _connectTime) + { + return ConnectRequestResult.Reconnection; + } + break; + + case ConnectionState.Disconnected: + case ConnectionState.ShutdownRequested: + if (connRequest.ConnectionTime >= _connectTime) + { + return ConnectRequestResult.NewConnection; + } + break; + } + return ConnectRequestResult.None; + } + + //Process incoming packet + internal void ProcessPacket(NetPacket packet) + { + //not initialized + if (_connectionState == ConnectionState.Outgoing) + { + _packetPool.Recycle(packet); + return; + } + if (packet.ConnectionNumber != _connectNum && packet.Property != PacketProperty.ShutdownOk) //without connectionNum + { + NetDebug.Write(NetLogLevel.Trace, "[RR]Old packet"); + _packetPool.Recycle(packet); + return; + } + _timeSinceLastPacket = 0; + + NetDebug.Write("[RR]PacketProperty: {0}", packet.Property); + switch (packet.Property) + { + case PacketProperty.Merged: + int pos = NetConstants.HeaderSize; + while (pos < packet.Size) + { + ushort size = BitConverter.ToUInt16(packet.RawData, pos); + pos += 2; + NetPacket mergedPacket = _packetPool.GetPacket(size); + if (!mergedPacket.FromBytes(packet.RawData, pos, size)) + { + _packetPool.Recycle(packet); + break; + } + pos += size; + ProcessPacket(mergedPacket); + } + break; + //If we get ping, send pong + case PacketProperty.Ping: + if (NetUtils.RelativeSequenceNumber(packet.Sequence, _pongPacket.Sequence) > 0) + { + NetDebug.Write("[PP]Ping receive, send pong"); + FastBitConverter.GetBytes(_pongPacket.RawData, 3, DateTime.UtcNow.Ticks); + _pongPacket.Sequence = packet.Sequence; + NetManager.SendRaw(_pongPacket, EndPoint); + } + _packetPool.Recycle(packet); + break; + + //If we get pong, calculate ping time and rtt + case PacketProperty.Pong: + if (packet.Sequence == _pingPacket.Sequence) + { + _pingTimer.Stop(); + int elapsedMs = (int)_pingTimer.ElapsedMilliseconds; + _remoteDelta = BitConverter.ToInt64(packet.RawData, 3) + (elapsedMs * TimeSpan.TicksPerMillisecond ) / 2 - DateTime.UtcNow.Ticks; + UpdateRoundTripTime(elapsedMs); + NetManager.ConnectionLatencyUpdated(this, elapsedMs / 2); + NetDebug.Write("[PP]Ping: {0} - {1} - {2}", packet.Sequence, elapsedMs, _remoteDelta); + } + _packetPool.Recycle(packet); + break; + + case PacketProperty.Ack: + case PacketProperty.Channeled: + if (packet.ChannelId > _channels.Length) + { + _packetPool.Recycle(packet); + break; + } + var channel = _channels[packet.ChannelId] ?? (packet.Property == PacketProperty.Ack ? null : CreateChannel(packet.ChannelId)); + if (channel != null) + { + if (!channel.ProcessPacket(packet)) + _packetPool.Recycle(packet); + } + break; + + //Simple packet without acks + case PacketProperty.Unreliable: + AddIncomingPacket(packet); + return; + + case PacketProperty.MtuCheck: + case PacketProperty.MtuOk: + ProcessMtuPacket(packet); + break; + + case PacketProperty.ShutdownOk: + if(_connectionState == ConnectionState.ShutdownRequested) + _connectionState = ConnectionState.Disconnected; + _packetPool.Recycle(packet); + break; + + default: + NetDebug.WriteError("Error! Unexpected packet type: " + packet.Property); + break; + } + } + + private void SendMerged() + { + if (_mergeCount == 0) + return; + int bytesSent; + if (_mergeCount > 1) + { + NetDebug.Write("[P]Send merged: " + _mergePos + ", count: " + _mergeCount); + bytesSent = NetManager.SendRaw(_mergeData.RawData, 0, NetConstants.HeaderSize + _mergePos, EndPoint); + } + else + { + //Send without length information and merging + bytesSent = NetManager.SendRaw(_mergeData.RawData, NetConstants.HeaderSize + 2, _mergePos - 2, EndPoint); + } +#if STATS_ENABLED + Statistics.PacketsSent++; + Statistics.BytesSent += (ulong)bytesSent; +#endif + _mergePos = 0; + _mergeCount = 0; + } + + internal void SendUserData(NetPacket packet) + { + packet.ConnectionNumber = _connectNum; + int mergedPacketSize = NetConstants.HeaderSize + packet.Size + 2; + const int sizeTreshold = 20; + if (mergedPacketSize + sizeTreshold >= _mtu) + { + NetDebug.Write(NetLogLevel.Trace, "[P]SendingPacket: " + packet.Property); + int bytesSent = NetManager.SendRaw(packet, EndPoint); +#if STATS_ENABLED + Statistics.PacketsSent++; + Statistics.BytesSent += (ulong)bytesSent; +#endif + return; + } + if (_mergePos + mergedPacketSize > _mtu) + SendMerged(); + + FastBitConverter.GetBytes(_mergeData.RawData, _mergePos + NetConstants.HeaderSize, (ushort)packet.Size); + Buffer.BlockCopy(packet.RawData, 0, _mergeData.RawData, _mergePos + NetConstants.HeaderSize + 2, packet.Size); + _mergePos += packet.Size + 2; + _mergeCount++; + //DebugWriteForce("Merged: " + _mergePos + "/" + (_mtu - 2) + ", count: " + _mergeCount); + } + + /// + /// Flush all queued packets + /// + public void Flush() + { + if (_connectionState != ConnectionState.Connected) + return; + lock (_flushLock) + { + BaseChannel currentChannel = _headChannel; + while (currentChannel != null) + { + currentChannel.SendNextPackets(); + currentChannel = currentChannel.Next; + } + + lock (_unreliableChannel) + { + while (_unreliableChannel.Count > 0) + { + NetPacket packet = _unreliableChannel.Dequeue(); + SendUserData(packet); + NetManager.NetPacketPool.Recycle(packet); + } + } + + SendMerged(); + } + } + + internal void Update(int deltaTime) + { + _timeSinceLastPacket += deltaTime; + switch (_connectionState) + { + case ConnectionState.Connected: + if (_timeSinceLastPacket > NetManager.DisconnectTimeout) + { + NetDebug.Write( + "[UPDATE] Disconnect by timeout: {0} > {1}", + _timeSinceLastPacket, + NetManager.DisconnectTimeout); + NetManager.DisconnectPeerForce(this, DisconnectReason.Timeout, 0, null); + return; + } + break; + + case ConnectionState.ShutdownRequested: + if (_timeSinceLastPacket > NetManager.DisconnectTimeout) + { + _connectionState = ConnectionState.Disconnected; + } + else + { + _shutdownTimer += deltaTime; + if (_shutdownTimer >= ShutdownDelay) + { + _shutdownTimer = 0; + NetManager.SendRaw(_shutdownPacket, EndPoint); + } + } + return; + + case ConnectionState.Outgoing: + _connectTimer += deltaTime; + if (_connectTimer > NetManager.ReconnectDelay) + { + _connectTimer = 0; + _connectAttempts++; + if (_connectAttempts > NetManager.MaxConnectAttempts) + { + NetManager.DisconnectPeerForce(this, DisconnectReason.ConnectionFailed, 0, null); + return; + } + + //else send connect again + NetManager.SendRaw(_connectRequestPacket, EndPoint); + } + return; + + case ConnectionState.Disconnected: + return; + } + + //Send ping + _pingSendTimer += deltaTime; + if (_pingSendTimer >= NetManager.PingInterval) + { + NetDebug.Write("[PP] Send ping..."); + //reset timer + _pingSendTimer = 0; + //send ping + _pingPacket.Sequence++; + //ping timeout + if (_pingTimer.IsRunning) + UpdateRoundTripTime((int)_pingTimer.ElapsedMilliseconds); + _pingTimer.Reset(); + _pingTimer.Start(); + NetManager.SendRaw(_pingPacket, EndPoint); + } + + //RTT - round trip time + _rttResetTimer += deltaTime; + if (_rttResetTimer >= NetManager.PingInterval * 3) + { + _rttResetTimer = 0; + _rtt = _avgRtt; + _rttCount = 1; + } + + UpdateMtuLogic(deltaTime); + + //Pending send + Flush(); + } + + //For reliable channel + internal void RecycleAndDeliver(NetPacket packet) + { + if (packet.UserData != null) + { + if (packet.IsFragmented) + { + ushort fragCount; + _deliveredFramgnets.TryGetValue(packet.FragmentId, out fragCount); + fragCount++; + if (fragCount == packet.FragmentsTotal) + { + NetManager.MessageDelivered(this, packet.UserData); + _deliveredFramgnets.Remove(packet.FragmentId); + } + else + { + _deliveredFramgnets[packet.FragmentId] = fragCount; + } + } + else + { + NetManager.MessageDelivered(this, packet.UserData); + } + packet.UserData = null; + } + _packetPool.Recycle(packet); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs.meta new file mode 100644 index 000000000..b5898de09 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetPeer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7eb2b0a7228c144b8fe99ff08e4f93f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs new file mode 100644 index 000000000..02f65bc05 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs @@ -0,0 +1,339 @@ +#if UNITY_5_3_OR_NEWER +#define UNITY +#endif +#if NETSTANDARD || NETCOREAPP +using System.Runtime.InteropServices; +#endif + +using System; +using System.Net; +using System.Net.Sockets; +using System.Threading; + +namespace LiteNetLib +{ + internal interface INetSocketListener + { + void OnMessageReceived(byte[] data, int length, SocketError errorCode, IPEndPoint remoteEndPoint); + } + + internal sealed class NetSocket + { + public const int ReceivePollingTime = 500000; //0.5 second + private Socket _udpSocketv4; + private Socket _udpSocketv6; + private Thread _threadv4; + private Thread _threadv6; + private volatile bool _running; + private readonly INetSocketListener _listener; + private const int SioUdpConnreset = -1744830452; //SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + private static readonly IPAddress MulticastAddressV6 = IPAddress.Parse("FF02:0:0:0:0:0:0:1"); + internal static readonly bool IPv6Support; + + public int LocalPort { get; private set; } + + public short Ttl + { + get { return _udpSocketv4.Ttl; } + set { _udpSocketv4.Ttl = value; } + } + + static NetSocket() + { +#if DISABLE_IPV6 || (!UNITY_EDITOR && ENABLE_IL2CPP && !UNITY_2018_3_OR_NEWER) + IPv6Support = false; +#elif !UNITY_2019_1_OR_NEWER && !UNITY_2018_4_OR_NEWER && (!UNITY_EDITOR && ENABLE_IL2CPP && UNITY_2018_3_OR_NEWER) + string version = UnityEngine.Application.unityVersion; + IPv6Support = Socket.OSSupportsIPv6 && int.Parse(version.Remove(version.IndexOf('f')).Split('.')[2]) >= 6; +#elif UNITY_2018_2_OR_NEWER + IPv6Support = Socket.OSSupportsIPv6; +#elif UNITY +#pragma warning disable 618 + IPv6Support = Socket.SupportsIPv6; +#pragma warning restore 618 +#else + IPv6Support = Socket.OSSupportsIPv6; +#endif + } + + public NetSocket(INetSocketListener listener) + { + _listener = listener; + } + + private void ReceiveLogic(object state) + { + Socket socket = (Socket)state; + EndPoint bufferEndPoint = new IPEndPoint(socket.AddressFamily == AddressFamily.InterNetwork ? IPAddress.Any : IPAddress.IPv6Any, 0); + byte[] receiveBuffer = new byte[NetConstants.MaxPacketSize]; + + while (_running) + { + int result; + + //Reading data + try + { + if (socket.Available == 0 && !socket.Poll(ReceivePollingTime, SelectMode.SelectRead)) + continue; + result = socket.ReceiveFrom(receiveBuffer, 0, receiveBuffer.Length, SocketFlags.None, + ref bufferEndPoint); + } + catch (SocketException ex) + { + switch (ex.SocketErrorCode) + { + case SocketError.Interrupted: + case SocketError.NotSocket: + return; + case SocketError.ConnectionReset: + case SocketError.MessageSize: + case SocketError.TimedOut: + NetDebug.Write(NetLogLevel.Trace, "[R]Ignored error: {0} - {1}", + (int) ex.SocketErrorCode, ex.ToString()); + break; + default: + NetDebug.WriteError("[R]Error code: {0} - {1}", (int) ex.SocketErrorCode, + ex.ToString()); + _listener.OnMessageReceived(null, 0, ex.SocketErrorCode, (IPEndPoint) bufferEndPoint); + break; + } + + continue; + } + catch (ObjectDisposedException) + { + return; + } + + //All ok! + NetDebug.Write(NetLogLevel.Trace, "[R]Received data from {0}, result: {1}", bufferEndPoint.ToString(), result); + _listener.OnMessageReceived(receiveBuffer, result, 0, (IPEndPoint)bufferEndPoint); + } + } + + public bool Bind(IPAddress addressIPv4, IPAddress addressIPv6, int port, bool reuseAddress, bool ipv6) + { + _udpSocketv4 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + if (!BindSocket(_udpSocketv4, new IPEndPoint(addressIPv4, port), reuseAddress)) + return false; + LocalPort = ((IPEndPoint) _udpSocketv4.LocalEndPoint).Port; + _running = true; + _threadv4 = new Thread(ReceiveLogic); + _threadv4.Name = "SocketThreadv4(" + LocalPort + ")"; + _threadv4.IsBackground = true; + _threadv4.Start(_udpSocketv4); + + //Check IPv6 support + if (!IPv6Support || !ipv6) + return true; + + _udpSocketv6 = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); + //Use one port for two sockets + if (BindSocket(_udpSocketv6, new IPEndPoint(addressIPv6, LocalPort), reuseAddress)) + { + try + { +#if !UNITY + _udpSocketv6.SetSocketOption( + SocketOptionLevel.IPv6, + SocketOptionName.AddMembership, + new IPv6MulticastOption(MulticastAddressV6)); +#endif + } + catch(Exception) + { + // Unity3d throws exception - ignored + } + + _threadv6 = new Thread(ReceiveLogic); + _threadv6.Name = "SocketThreadv6(" + LocalPort + ")"; + _threadv6.IsBackground = true; + _threadv6.Start(_udpSocketv6); + } + + return true; + } + + private bool BindSocket(Socket socket, IPEndPoint ep, bool reuseAddress) + { + //Setup socket + socket.ReceiveTimeout = 500; + socket.SendTimeout = 500; + socket.ReceiveBufferSize = NetConstants.SocketBufferSize; + socket.SendBufferSize = NetConstants.SocketBufferSize; +#if !UNITY || UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN +#if NETSTANDARD || NETCOREAPP + if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) +#endif + try + { + socket.IOControl(SioUdpConnreset, new byte[] {0}, null); + } + catch + { + //ignored + } +#endif + + try + { + socket.ExclusiveAddressUse = !reuseAddress; + socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, reuseAddress); + } + catch + { + //Unity with IL2CPP throws an exception here, it doesn't matter in most cases so just ignore it + } + if (socket.AddressFamily == AddressFamily.InterNetwork) + { + socket.Ttl = NetConstants.SocketTTL; + +#if NETSTANDARD || NETCOREAPP + if(!RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) +#endif + try { socket.DontFragment = true; } + catch (SocketException e) + { + NetDebug.WriteError("[B]DontFragment error: {0}", e.SocketErrorCode); + } + + try { socket.EnableBroadcast = true; } + catch (SocketException e) + { + NetDebug.WriteError("[B]Broadcast error: {0}", e.SocketErrorCode); + } + } + + //Bind + try + { + socket.Bind(ep); + NetDebug.Write(NetLogLevel.Trace, "[B]Successfully binded to port: {0}", ((IPEndPoint)socket.LocalEndPoint).Port); + } + catch (SocketException bindException) + { + switch (bindException.SocketErrorCode) + { + //IPv6 bind fix + case SocketError.AddressAlreadyInUse: + if (socket.AddressFamily == AddressFamily.InterNetworkV6) + { + try + { + socket.SetSocketOption(SocketOptionLevel.IPv6, (SocketOptionName)27, true); + socket.Bind(ep); + } + catch (SocketException ex) + { + NetDebug.WriteError("[B]Bind exception: {0}, errorCode: {1}", ex.ToString(), ex.SocketErrorCode); + return false; + } + return true; + } + break; + //hack for iOS (Unity3D) + case SocketError.AddressFamilyNotSupported: + return true; + } + NetDebug.WriteError("[B]Bind exception: {0}, errorCode: {1}", bindException.ToString(), bindException.SocketErrorCode); + return false; + } + return true; + } + + public bool SendBroadcast(byte[] data, int offset, int size, int port) + { + bool broadcastSuccess = false; + bool multicastSuccess = false; + try + { + broadcastSuccess = _udpSocketv4.SendTo( + data, + offset, + size, + SocketFlags.None, + new IPEndPoint(IPAddress.Broadcast, port)) > 0; + + if (_udpSocketv6 != null) + { + multicastSuccess = _udpSocketv6.SendTo( + data, + offset, + size, + SocketFlags.None, + new IPEndPoint(MulticastAddressV6, port)) > 0; + } + } + catch (Exception ex) + { + NetDebug.WriteError("[S][MCAST]" + ex); + return broadcastSuccess; + } + return broadcastSuccess || multicastSuccess; + } + + public int SendTo(byte[] data, int offset, int size, IPEndPoint remoteEndPoint, ref SocketError errorCode) + { + try + { + var socket = _udpSocketv4; + if (remoteEndPoint.AddressFamily == AddressFamily.InterNetworkV6 && IPv6Support) + socket = _udpSocketv6; + int result = socket.SendTo(data, offset, size, SocketFlags.None, remoteEndPoint); + NetDebug.Write(NetLogLevel.Trace, "[S]Send packet to {0}, result: {1}", remoteEndPoint, result); + return result; + } + catch (SocketException ex) + { + switch (ex.SocketErrorCode) + { + case SocketError.NoBufferSpaceAvailable: + case SocketError.Interrupted: + return 0; + case SocketError.MessageSize: //do nothing + break; + default: + NetDebug.WriteError("[S]" + ex); + break; + } + errorCode = ex.SocketErrorCode; + return -1; + } + catch (Exception ex) + { + NetDebug.WriteError("[S]" + ex); + return -1; + } + } + + public void Close() + { + _running = false; + // first close sockets + if (_udpSocketv4 != null) + { + _udpSocketv4.Close(); + _udpSocketv4 = null; + } + if (_udpSocketv6 != null) + { + _udpSocketv6.Close(); + _udpSocketv6 = null; + } + // then join threads + if (_threadv4 != null) + { + if (_threadv4 != Thread.CurrentThread) + _threadv4.Join(); + _threadv4 = null; + } + if (_threadv6 != null) + { + if (_threadv6 != Thread.CurrentThread) + _threadv6.Join(); + _threadv6 = null; + } + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs.meta new file mode 100644 index 000000000..a0e7a3cc3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetSocket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 71e8682232879ef45ae5328feb39b1bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs new file mode 100644 index 000000000..e763e7add --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs @@ -0,0 +1,39 @@ +namespace LiteNetLib +{ + public sealed class NetStatistics + { + public ulong PacketsSent; + public ulong PacketsReceived; + public ulong BytesSent; + public ulong BytesReceived; + public ulong PacketLoss; + public ulong PacketLossPercent + { + get { return PacketsSent == 0 ? 0 : PacketLoss * 100 / PacketsSent; } + } + + public ulong SequencedPacketLoss; + + public void Reset() + { + PacketsSent = 0; + PacketsReceived = 0; + BytesSent = 0; + BytesReceived = 0; + PacketLoss = 0; + } + + public override string ToString() + { + return + string.Format( + "BytesReceived: {0}\nPacketsReceived: {1}\nBytesSent: {2}\nPacketsSent: {3}\nPacketLoss: {4}\nPacketLossPercent: {5}\n", + BytesReceived, + PacketsReceived, + BytesSent, + PacketsSent, + PacketLoss, + PacketLossPercent); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs.meta new file mode 100644 index 000000000..8345729c3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetStatistics.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0347c13bed7f2a34f853ace3fd250373 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs new file mode 100644 index 000000000..b99cfc3c9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs @@ -0,0 +1,197 @@ +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.Sockets; +using System.Net.NetworkInformation; + +namespace LiteNetLib +{ + /// + /// Address type that you want to receive from NetUtils.GetLocalIp method + /// + [Flags] + public enum LocalAddrType + { + IPv4 = 1, + IPv6 = 2, + All = IPv4 | IPv6 + } + + /// + /// Some specific network utilities + /// + public static class NetUtils + { + public static IPEndPoint MakeEndPoint(string hostStr, int port) + { + return new IPEndPoint(ResolveAddress(hostStr), port); + } + + public static IPAddress ResolveAddress(string hostStr) + { + if(hostStr == "localhost") + return IPAddress.Loopback; + + IPAddress ipAddress; + if (!IPAddress.TryParse(hostStr, out ipAddress)) + { + if (NetSocket.IPv6Support) + ipAddress = ResolveAddress(hostStr, AddressFamily.InterNetworkV6); + if (ipAddress == null) + ipAddress = ResolveAddress(hostStr, AddressFamily.InterNetwork); + } + if (ipAddress == null) + throw new ArgumentException("Invalid address: " + hostStr); + + return ipAddress; + } + + private static IPAddress ResolveAddress(string hostStr, AddressFamily addressFamily) + { + IPAddress[] addresses = ResolveAddresses(hostStr); + foreach (IPAddress ip in addresses) + { + if (ip.AddressFamily == addressFamily) + { + return ip; + } + } + return null; + } + + private static IPAddress[] ResolveAddresses(string hostStr) + { +#if NETSTANDARD || NETCOREAPP + var hostTask = Dns.GetHostEntryAsync(hostStr); + hostTask.GetAwaiter().GetResult(); + var host = hostTask.Result; +#else + var host = Dns.GetHostEntry(hostStr); +#endif + return host.AddressList; + } + + /// + /// Get all local ip addresses + /// + /// type of address (IPv4, IPv6 or both) + /// List with all local ip adresses + public static List GetLocalIpList(LocalAddrType addrType) + { + List targetList = new List(); + GetLocalIpList(targetList, addrType); + return targetList; + } + + /// + /// Get all local ip addresses (non alloc version) + /// + /// result list + /// type of address (IPv4, IPv6 or both) + public static void GetLocalIpList(IList targetList, LocalAddrType addrType) + { + bool ipv4 = (addrType & LocalAddrType.IPv4) == LocalAddrType.IPv4; + bool ipv6 = (addrType & LocalAddrType.IPv6) == LocalAddrType.IPv6; + try + { + foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) + { + //Skip loopback and disabled network interfaces + if (ni.NetworkInterfaceType == NetworkInterfaceType.Loopback || + ni.OperationalStatus != OperationalStatus.Up) + continue; + + var ipProps = ni.GetIPProperties(); + + //Skip address without gateway + if (ipProps.GatewayAddresses.Count == 0) + continue; + + foreach (UnicastIPAddressInformation ip in ipProps.UnicastAddresses) + { + var address = ip.Address; + if ((ipv4 && address.AddressFamily == AddressFamily.InterNetwork) || + (ipv6 && address.AddressFamily == AddressFamily.InterNetworkV6)) + targetList.Add(address.ToString()); + } + } + } + catch + { + //ignored + } + + //Fallback mode (unity android) + if (targetList.Count == 0) + { + IPAddress[] addresses = ResolveAddresses(Dns.GetHostName()); + foreach (IPAddress ip in addresses) + { + if((ipv4 && ip.AddressFamily == AddressFamily.InterNetwork) || + (ipv6 && ip.AddressFamily == AddressFamily.InterNetworkV6)) + targetList.Add(ip.ToString()); + } + } + if (targetList.Count == 0) + { + if(ipv4) + targetList.Add("127.0.0.1"); + if(ipv6) + targetList.Add("::1"); + } + } + + private static readonly List IpList = new List(); + /// + /// Get first detected local ip address + /// + /// type of address (IPv4, IPv6 or both) + /// IP address if available. Else - string.Empty + public static string GetLocalIp(LocalAddrType addrType) + { + lock (IpList) + { + IpList.Clear(); + GetLocalIpList(IpList, addrType); + return IpList.Count == 0 ? string.Empty : IpList[0]; + } + } + + // =========================================== + // Internal and debug log related stuff + // =========================================== + internal static void PrintInterfaceInfos() + { + NetDebug.WriteForce(NetLogLevel.Info, "IPv6Support: {0}", NetSocket.IPv6Support); + try + { + foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces()) + { + foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses) + { + if (ip.Address.AddressFamily == AddressFamily.InterNetwork || + ip.Address.AddressFamily == AddressFamily.InterNetworkV6) + { + NetDebug.WriteForce( + NetLogLevel.Info, + "Interface: {0}, Type: {1}, Ip: {2}, OpStatus: {3}", + ni.Name, + ni.NetworkInterfaceType.ToString(), + ip.Address.ToString(), + ni.OperationalStatus.ToString()); + } + } + } + } + catch (Exception e) + { + NetDebug.WriteForce(NetLogLevel.Info, "Error while getting interface infos: {0}", e.ToString()); + } + } + + internal static int RelativeSequenceNumber(int number, int expected) + { + return (number - expected + NetConstants.MaxSequence + NetConstants.HalfMaxSequence) % NetConstants.MaxSequence - NetConstants.HalfMaxSequence; + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs.meta new file mode 100644 index 000000000..c2fe006a4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/NetUtils.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea4eae4bfc7e9ff40aacd7c90f4109ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs new file mode 100644 index 000000000..0634e8065 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs @@ -0,0 +1,310 @@ +using System; + +namespace LiteNetLib +{ + internal sealed class ReliableChannel : BaseChannel + { + private struct PendingPacket + { + private NetPacket _packet; + private long _timeStamp; + private bool _isSent; + + public override string ToString() + { + return _packet == null ? "Empty" : _packet.Sequence.ToString(); + } + + public void Init(NetPacket packet) + { + _packet = packet; + _isSent = false; + } + + public void TrySend(long currentTime, NetPeer peer) + { + if (_packet == null) + return; + if (_isSent) //check send time + { + double resendDelay = peer.ResendDelay * TimeSpan.TicksPerMillisecond; + double packetHoldTime = currentTime - _timeStamp; + if (packetHoldTime < resendDelay) + return; + NetDebug.Write("[RC]Resend: {0} > {1}", (int)packetHoldTime, resendDelay); + } + _timeStamp = currentTime; + _isSent = true; + peer.SendUserData(_packet); + } + + public bool Clear(NetPeer peer) + { + if (_packet != null) + { + peer.RecycleAndDeliver(_packet); + _packet = null; + return true; + } + return false; + } + } + + private readonly NetPacket _outgoingAcks; //for send acks + private readonly PendingPacket[] _pendingPackets; //for unacked packets and duplicates + private readonly NetPacket[] _receivedPackets; //for order + private readonly bool[] _earlyReceived; //for unordered + + private int _localSeqence; + private int _remoteSequence; + private int _localWindowStart; + private int _remoteWindowStart; + + private bool _mustSendAcks; + + private readonly bool _ordered; + private readonly int _windowSize; + private const int BitsInByte = 8; + private readonly byte _id; + + public ReliableChannel(NetPeer peer, bool ordered, byte id) : base(peer) + { + _id = id; + _windowSize = NetConstants.DefaultWindowSize; + _ordered = ordered; + _pendingPackets = new PendingPacket[_windowSize]; + for (int i = 0; i < _pendingPackets.Length; i++) + _pendingPackets[i] = new PendingPacket(); + + if (_ordered) + _receivedPackets = new NetPacket[_windowSize]; + else + _earlyReceived = new bool[_windowSize]; + + _localWindowStart = 0; + _localSeqence = 0; + _remoteSequence = 0; + _remoteWindowStart = 0; + _outgoingAcks = new NetPacket(PacketProperty.Ack, (_windowSize - 1) / BitsInByte + 2) {ChannelId = id}; + } + + //ProcessAck in packet + private void ProcessAck(NetPacket packet) + { + if (packet.Size != _outgoingAcks.Size) + { + NetDebug.Write("[PA]Invalid acks packet size"); + return; + } + + ushort ackWindowStart = packet.Sequence; + int windowRel = NetUtils.RelativeSequenceNumber(_localWindowStart, ackWindowStart); + if (ackWindowStart >= NetConstants.MaxSequence || windowRel < 0) + { + NetDebug.Write("[PA]Bad window start"); + return; + } + + //check relevance + if (windowRel >= _windowSize) + { + NetDebug.Write("[PA]Old acks"); + return; + } + + byte[] acksData = packet.RawData; + lock (_pendingPackets) + { + for (int pendingSeq = _localWindowStart; + pendingSeq != _localSeqence; + pendingSeq = (pendingSeq + 1) % NetConstants.MaxSequence) + { + int rel = NetUtils.RelativeSequenceNumber(pendingSeq, ackWindowStart); + if (rel >= _windowSize) + { + NetDebug.Write("[PA]REL: " + rel); + break; + } + + int pendingIdx = pendingSeq % _windowSize; + int currentByte = NetConstants.ChanneledHeaderSize + pendingIdx / BitsInByte; + int currentBit = pendingIdx % BitsInByte; + if ((acksData[currentByte] & (1 << currentBit)) == 0) + { +#if STATS_ENABLED || DEBUG + Peer.Statistics.PacketLoss++; +#endif + //Skip false ack + NetDebug.Write("[PA]False ack: {0}", pendingSeq); + continue; + } + + if (pendingSeq == _localWindowStart) + { + //Move window + _localWindowStart = (_localWindowStart + 1) % NetConstants.MaxSequence; + } + + //clear packet + if (_pendingPackets[pendingIdx].Clear(Peer)) + NetDebug.Write("[PA]Removing reliableInOrder ack: {0} - true", pendingSeq); + } + } + } + + public override void SendNextPackets() + { + if (_mustSendAcks) + { + _mustSendAcks = false; + NetDebug.Write("[RR]SendAcks"); + lock(_outgoingAcks) + Peer.SendUserData(_outgoingAcks); + } + + long currentTime = DateTime.UtcNow.Ticks; + lock (_pendingPackets) + { + //get packets from queue + lock (OutgoingQueue) + { + while (OutgoingQueue.Count > 0) + { + int relate = NetUtils.RelativeSequenceNumber(_localSeqence, _localWindowStart); + if (relate >= _windowSize) + break; + + var netPacket = OutgoingQueue.Dequeue(); + netPacket.Sequence = (ushort) _localSeqence; + netPacket.ChannelId = _id; + _pendingPackets[_localSeqence % _windowSize].Init(netPacket); + _localSeqence = (_localSeqence + 1) % NetConstants.MaxSequence; + } + } + //send + for (int pendingSeq = _localWindowStart; pendingSeq != _localSeqence; pendingSeq = (pendingSeq + 1) % NetConstants.MaxSequence) + _pendingPackets[pendingSeq % _windowSize].TrySend(currentTime, Peer); + } + } + + //Process incoming packet + public override bool ProcessPacket(NetPacket packet) + { + if (packet.Property == PacketProperty.Ack) + { + ProcessAck(packet); + return false; + } + int seq = packet.Sequence; + if (seq >= NetConstants.MaxSequence) + { + NetDebug.Write("[RR]Bad sequence"); + return false; + } + + int relate = NetUtils.RelativeSequenceNumber(seq, _remoteWindowStart); + int relateSeq = NetUtils.RelativeSequenceNumber(seq, _remoteSequence); + + if (relateSeq > _windowSize) + { + NetDebug.Write("[RR]Bad sequence"); + return false; + } + + //Drop bad packets + if (relate < 0) + { + //Too old packet doesn't ack + NetDebug.Write("[RR]ReliableInOrder too old"); + return false; + } + if (relate >= _windowSize * 2) + { + //Some very new packet + NetDebug.Write("[RR]ReliableInOrder too new"); + return false; + } + + //If very new - move window + int ackIdx; + int ackByte; + int ackBit; + lock (_outgoingAcks) + { + if (relate >= _windowSize) + { + //New window position + int newWindowStart = (_remoteWindowStart + relate - _windowSize + 1) % NetConstants.MaxSequence; + _outgoingAcks.Sequence = (ushort) newWindowStart; + + //Clean old data + while (_remoteWindowStart != newWindowStart) + { + ackIdx = _remoteWindowStart % _windowSize; + ackByte = NetConstants.ChanneledHeaderSize + ackIdx / BitsInByte; + ackBit = ackIdx % BitsInByte; + _outgoingAcks.RawData[ackByte] &= (byte) ~(1 << ackBit); + _remoteWindowStart = (_remoteWindowStart + 1) % NetConstants.MaxSequence; + } + } + + //Final stage - process valid packet + //trigger acks send + _mustSendAcks = true; + ackIdx = seq % _windowSize; + ackByte = NetConstants.ChanneledHeaderSize + ackIdx / BitsInByte; + ackBit = ackIdx % BitsInByte; + if ((_outgoingAcks.RawData[ackByte] & (1 << ackBit)) != 0) + { + NetDebug.Write("[RR]ReliableInOrder duplicate"); + return false; + } + + //save ack + _outgoingAcks.RawData[ackByte] |= (byte) (1 << ackBit); + } + + //detailed check + if (seq == _remoteSequence) + { + NetDebug.Write("[RR]ReliableInOrder packet succes"); + Peer.AddIncomingPacket(packet); + _remoteSequence = (_remoteSequence + 1) % NetConstants.MaxSequence; + + if (_ordered) + { + NetPacket p; + while ((p = _receivedPackets[_remoteSequence % _windowSize]) != null) + { + //process holded packet + _receivedPackets[_remoteSequence % _windowSize] = null; + Peer.AddIncomingPacket(p); + _remoteSequence = (_remoteSequence + 1) % NetConstants.MaxSequence; + } + } + else + { + while (_earlyReceived[_remoteSequence % _windowSize]) + { + //process early packet + _earlyReceived[_remoteSequence % _windowSize] = false; + _remoteSequence = (_remoteSequence + 1) % NetConstants.MaxSequence; + } + } + return true; + } + + //holded packet + if (_ordered) + { + _receivedPackets[ackIdx] = packet; + } + else + { + _earlyReceived[ackIdx] = true; + Peer.AddIncomingPacket(packet); + } + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs.meta new file mode 100644 index 000000000..023d3372d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/ReliableChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da37505514c6d45409af7f26400c4ea9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs new file mode 100644 index 000000000..804ea6189 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs @@ -0,0 +1,93 @@ +using System; + +namespace LiteNetLib +{ + internal sealed class SequencedChannel : BaseChannel + { + private int _localSequence; + private ushort _remoteSequence; + private readonly bool _reliable; + private NetPacket _lastPacket; + private readonly NetPacket _ackPacket; + private bool _mustSendAck; + private readonly byte _id; + private long _lastPacketSendTime; + + public SequencedChannel(NetPeer peer, bool reliable, byte id) : base(peer) + { + _id = id; + _reliable = reliable; + if (_reliable) + _ackPacket = new NetPacket(PacketProperty.Ack, 0) {ChannelId = id}; + } + + public override void SendNextPackets() + { + if (_reliable && OutgoingQueue.Count == 0) + { + long currentTime = DateTime.UtcNow.Ticks; + long packetHoldTime = currentTime - _lastPacketSendTime; + if (packetHoldTime < Peer.ResendDelay * TimeSpan.TicksPerMillisecond) + return; + var packet = _lastPacket; + if (packet != null) + { + _lastPacketSendTime = currentTime; + Peer.SendUserData(packet); + } + } + else + { + lock (OutgoingQueue) + { + while (OutgoingQueue.Count > 0) + { + NetPacket packet = OutgoingQueue.Dequeue(); + _localSequence = (_localSequence + 1) % NetConstants.MaxSequence; + packet.Sequence = (ushort)_localSequence; + packet.ChannelId = _id; + Peer.SendUserData(packet); + + if (_reliable && OutgoingQueue.Count == 0) + { + _lastPacketSendTime = DateTime.UtcNow.Ticks; + _lastPacket = packet; + } + else + { + Peer.NetManager.NetPacketPool.Recycle(packet); + } + } + } + } + + if (_reliable && _mustSendAck) + { + _mustSendAck = false; + _ackPacket.Sequence = _remoteSequence; + Peer.SendUserData(_ackPacket); + } + } + + public override bool ProcessPacket(NetPacket packet) + { + if (packet.Property == PacketProperty.Ack) + { + if (_reliable && _lastPacket != null && packet.Sequence == _lastPacket.Sequence) + _lastPacket = null; + return false; + } + int relative = NetUtils.RelativeSequenceNumber(packet.Sequence, _remoteSequence); + bool packetProcessed = false; + if (packet.Sequence < NetConstants.MaxSequence && relative > 0) + { + Peer.Statistics.PacketLoss += (ulong)(relative - 1); + _remoteSequence = packet.Sequence; + Peer.AddIncomingPacket(packet); + packetProcessed = true; + } + _mustSendAck = true; + return packetProcessed; + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs.meta new file mode 100644 index 000000000..0d03725a7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/SequencedChannel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 52ca171ff6df1bf4da6c4fd55e8c0a1c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion/Utils.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils.meta similarity index 77% rename from Assets/Scripts/NIH/MagicOnion/Utils.meta rename to Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils.meta index 22e9d1313..d3eea7b2e 100644 --- a/Assets/Scripts/NIH/MagicOnion/Utils.meta +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cdcce6ca202dd2843abe07f3c5b13d32 +guid: 60daddd56681bec4a8d826c66bb9463b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs new file mode 100644 index 000000000..ed8692589 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs @@ -0,0 +1,102 @@ +#if NETCOREAPP3_0 +using System; +using System.Runtime.Intrinsics.X86; +#endif + +namespace LiteNetLib.Utils +{ + //Implemenatation from Crc32.NET + public static class CRC32C + { +#if NETCOREAPP3_0 + private static bool _x64Available; + private static bool _sseAvailable; +#endif + public const int ChecksumSize = 4; + private const uint Poly = 0x82F63B78u; + private static readonly uint[] Table; + + static CRC32C() + { +#if NETCOREAPP3_0 + _sseAvailable = Sse42.IsSupported; + _x64Available = Sse42.X64.IsSupported; + if(_sseAvailable) + return; +#endif + Table = new uint[16 * 256]; + for (uint i = 0; i < 256; i++) + { + uint res = i; + for (int t = 0; t < 16; t++) + { + for (int k = 0; k < 8; k++) + res = (res & 1) == 1 ? Poly ^ (res >> 1) : (res >> 1); + Table[t * 256 + i] = res; + } + } + } + + /// + /// Compute CRC32C for data + /// + /// input data + /// offset + /// length + /// CRC32C checksum + public static uint Compute(byte[] input, int offset, int length) + { + uint crcLocal = uint.MaxValue; +#if NETCOREAPP3_0 + if(_sseAvailable) + { + if (_x64Available) + { + while (length >= 8) + { + crcLocal = (uint)Sse42.X64.Crc32(crcLocal, BitConverter.ToUInt64(input, offset)); + offset += 8; + length -= 8; + } + } + while (length > 0) + { + crcLocal = Sse42.Crc32(crcLocal, input[offset]); + offset++; + length--; + } + return crcLocal ^ uint.MaxValue; + } +#endif + while (length >= 16) + { + var a = Table[(3 * 256) + input[offset + 12]] + ^ Table[(2 * 256) + input[offset + 13]] + ^ Table[(1 * 256) + input[offset + 14]] + ^ Table[(0 * 256) + input[offset + 15]]; + + var b = Table[(7 * 256) + input[offset + 8]] + ^ Table[(6 * 256) + input[offset + 9]] + ^ Table[(5 * 256) + input[offset + 10]] + ^ Table[(4 * 256) + input[offset + 11]]; + + var c = Table[(11 * 256) + input[offset + 4]] + ^ Table[(10 * 256) + input[offset + 5]] + ^ Table[(9 * 256) + input[offset + 6]] + ^ Table[(8 * 256) + input[offset + 7]]; + + var d = Table[(15 * 256) + ((byte)crcLocal ^ input[offset])] + ^ Table[(14 * 256) + ((byte)(crcLocal >> 8) ^ input[offset + 1])] + ^ Table[(13 * 256) + ((byte)(crcLocal >> 16) ^ input[offset + 2])] + ^ Table[(12 * 256) + ((crcLocal >> 24) ^ input[offset + 3])]; + + crcLocal = d ^ c ^ b ^ a; + offset += 16; + length -= 16; + } + while (--length >= 0) + crcLocal = Table[(byte)(crcLocal ^ input[offset++])] ^ crcLocal >> 8; + return crcLocal ^ uint.MaxValue; + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs.meta new file mode 100644 index 000000000..cb256114e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/CRC32C.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc6b10b9c0eaa3e4b9c8ec6318828d8e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs new file mode 100644 index 000000000..3693a027f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs @@ -0,0 +1,118 @@ +using System.Runtime.InteropServices; + +namespace LiteNetLib.Utils +{ + public static class FastBitConverter + { + [StructLayout(LayoutKind.Explicit)] + private struct ConverterHelperDouble + { + [FieldOffset(0)] + public ulong Along; + + [FieldOffset(0)] + public double Adouble; + } + + [StructLayout(LayoutKind.Explicit)] + private struct ConverterHelperFloat + { + [FieldOffset(0)] + public int Aint; + + [FieldOffset(0)] + public float Afloat; + } + + private static void WriteLittleEndian(byte[] buffer, int offset, ulong data) + { +#if BIGENDIAN + buffer[offset + 7] = (byte)(data); + buffer[offset + 6] = (byte)(data >> 8); + buffer[offset + 5] = (byte)(data >> 16); + buffer[offset + 4] = (byte)(data >> 24); + buffer[offset + 3] = (byte)(data >> 32); + buffer[offset + 2] = (byte)(data >> 40); + buffer[offset + 1] = (byte)(data >> 48); + buffer[offset ] = (byte)(data >> 56); +#else + buffer[offset] = (byte)(data); + buffer[offset + 1] = (byte)(data >> 8); + buffer[offset + 2] = (byte)(data >> 16); + buffer[offset + 3] = (byte)(data >> 24); + buffer[offset + 4] = (byte)(data >> 32); + buffer[offset + 5] = (byte)(data >> 40); + buffer[offset + 6] = (byte)(data >> 48); + buffer[offset + 7] = (byte)(data >> 56); +#endif + } + + private static void WriteLittleEndian(byte[] buffer, int offset, int data) + { +#if BIGENDIAN + buffer[offset + 3] = (byte)(data); + buffer[offset + 2] = (byte)(data >> 8); + buffer[offset + 1] = (byte)(data >> 16); + buffer[offset ] = (byte)(data >> 24); +#else + buffer[offset] = (byte)(data); + buffer[offset + 1] = (byte)(data >> 8); + buffer[offset + 2] = (byte)(data >> 16); + buffer[offset + 3] = (byte)(data >> 24); +#endif + } + + public static void WriteLittleEndian(byte[] buffer, int offset, short data) + { +#if BIGENDIAN + buffer[offset + 1] = (byte)(data); + buffer[offset ] = (byte)(data >> 8); +#else + buffer[offset] = (byte)(data); + buffer[offset + 1] = (byte)(data >> 8); +#endif + } + + public static void GetBytes(byte[] bytes, int startIndex, double value) + { + ConverterHelperDouble ch = new ConverterHelperDouble { Adouble = value }; + WriteLittleEndian(bytes, startIndex, ch.Along); + } + + public static void GetBytes(byte[] bytes, int startIndex, float value) + { + ConverterHelperFloat ch = new ConverterHelperFloat { Afloat = value }; + WriteLittleEndian(bytes, startIndex, ch.Aint); + } + + public static void GetBytes(byte[] bytes, int startIndex, short value) + { + WriteLittleEndian(bytes, startIndex, value); + } + + public static void GetBytes(byte[] bytes, int startIndex, ushort value) + { + WriteLittleEndian(bytes, startIndex, (short)value); + } + + public static void GetBytes(byte[] bytes, int startIndex, int value) + { + WriteLittleEndian(bytes, startIndex, value); + } + + public static void GetBytes(byte[] bytes, int startIndex, uint value) + { + WriteLittleEndian(bytes, startIndex, (int)value); + } + + public static void GetBytes(byte[] bytes, int startIndex, long value) + { + WriteLittleEndian(bytes, startIndex, (ulong)value); + } + + public static void GetBytes(byte[] bytes, int startIndex, ulong value) + { + WriteLittleEndian(bytes, startIndex, value); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs.meta new file mode 100644 index 000000000..ecf4e1ee7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/FastBitConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67f85f03b34cabd44a3887e3387526d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs new file mode 100644 index 000000000..92f14beed --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs @@ -0,0 +1,8 @@ +namespace LiteNetLib.Utils +{ + public interface INetSerializable + { + void Serialize(NetDataWriter writer); + void Deserialize(NetDataReader reader); + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs.meta new file mode 100644 index 000000000..9d2005059 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/INetSerializable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d9d31c9c132e47343bba2b0119bbe8f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs new file mode 100644 index 000000000..f31e6f801 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs @@ -0,0 +1,707 @@ +using System; +using System.Net; +using System.Text; + +namespace LiteNetLib.Utils +{ + public class NetDataReader + { + protected byte[] _data; + protected int _position; + protected int _dataSize; + private int _offset; + + public byte[] RawData + { + get { return _data; } + } + + public int RawDataSize + { + get { return _dataSize; } + } + + public int UserDataOffset + { + get { return _offset; } + } + + public int UserDataSize + { + get { return _dataSize - _offset; } + } + + public bool IsNull + { + get { return _data == null; } + } + + public int Position + { + get { return _position; } + } + + public bool EndOfData + { + get { return _position == _dataSize; } + } + + public int AvailableBytes + { + get { return _dataSize - _position; } + } + + public void SkipBytes(int count) + { + _position += count; + } + + public void SetSource(NetDataWriter dataWriter) + { + _data = dataWriter.Data; + _position = 0; + _offset = 0; + _dataSize = dataWriter.Length; + } + + public void SetSource(byte[] source) + { + _data = source; + _position = 0; + _offset = 0; + _dataSize = source.Length; + } + + public void SetSource(byte[] source, int offset) + { + _data = source; + _position = offset; + _offset = offset; + _dataSize = source.Length; + } + + public void SetSource(byte[] source, int offset, int maxSize) + { + _data = source; + _position = offset; + _offset = offset; + _dataSize = maxSize; + } + + public NetDataReader() + { + + } + + public NetDataReader(byte[] source) + { + SetSource(source); + } + + public NetDataReader(byte[] source, int offset) + { + SetSource(source, offset); + } + + public NetDataReader(byte[] source, int offset, int maxSize) + { + SetSource(source, offset, maxSize); + } + + #region GetMethods + public IPEndPoint GetNetEndPoint() + { + string host = GetString(1000); + int port = GetInt(); + return NetUtils.MakeEndPoint(host, port); + } + + public byte GetByte() + { + byte res = _data[_position]; + _position += 1; + return res; + } + + public sbyte GetSByte() + { + var b = (sbyte)_data[_position]; + _position++; + return b; + } + + public bool[] GetBoolArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new bool[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetBool(); + } + return arr; + } + + public ushort[] GetUShortArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new ushort[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetUShort(); + } + return arr; + } + + public short[] GetShortArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new short[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetShort(); + } + return arr; + } + + public long[] GetLongArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new long[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetLong(); + } + return arr; + } + + public ulong[] GetULongArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new ulong[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetULong(); + } + return arr; + } + + public int[] GetIntArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new int[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetInt(); + } + return arr; + } + + public uint[] GetUIntArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new uint[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetUInt(); + } + return arr; + } + + public float[] GetFloatArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new float[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetFloat(); + } + return arr; + } + + public double[] GetDoubleArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new double[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetDouble(); + } + return arr; + } + + public string[] GetStringArray() + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new string[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetString(); + } + return arr; + } + + public string[] GetStringArray(int maxStringLength) + { + ushort size = BitConverter.ToUInt16(_data, _position); + _position += 2; + var arr = new string[size]; + for (int i = 0; i < size; i++) + { + arr[i] = GetString(maxStringLength); + } + return arr; + } + + public bool GetBool() + { + bool res = _data[_position] > 0; + _position += 1; + return res; + } + + public char GetChar() + { + char result = BitConverter.ToChar(_data, _position); + _position += 2; + return result; + } + + public ushort GetUShort() + { + ushort result = BitConverter.ToUInt16(_data, _position); + _position += 2; + return result; + } + + public short GetShort() + { + short result = BitConverter.ToInt16(_data, _position); + _position += 2; + return result; + } + + public long GetLong() + { + long result = BitConverter.ToInt64(_data, _position); + _position += 8; + return result; + } + + public ulong GetULong() + { + ulong result = BitConverter.ToUInt64(_data, _position); + _position += 8; + return result; + } + + public int GetInt() + { + int result = BitConverter.ToInt32(_data, _position); + _position += 4; + return result; + } + + public uint GetUInt() + { + uint result = BitConverter.ToUInt32(_data, _position); + _position += 4; + return result; + } + + public float GetFloat() + { + float result = BitConverter.ToSingle(_data, _position); + _position += 4; + return result; + } + + public double GetDouble() + { + double result = BitConverter.ToDouble(_data, _position); + _position += 8; + return result; + } + + public string GetString(int maxLength) + { + int bytesCount = GetInt(); + if (bytesCount <= 0 || bytesCount > maxLength*2) + { + return string.Empty; + } + + int charCount = Encoding.UTF8.GetCharCount(_data, _position, bytesCount); + if (charCount > maxLength) + { + return string.Empty; + } + + string result = Encoding.UTF8.GetString(_data, _position, bytesCount); + _position += bytesCount; + return result; + } + + public string GetString() + { + int bytesCount = GetInt(); + if (bytesCount <= 0) + { + return string.Empty; + } + + string result = Encoding.UTF8.GetString(_data, _position, bytesCount); + _position += bytesCount; + return result; + } + + public ArraySegment GetRemainingBytesSegment() + { + ArraySegment segment = new ArraySegment(_data, _position, AvailableBytes); + _position = _data.Length; + return segment; + } + + public T Get() where T : INetSerializable, new() + { + var obj = new T(); + obj.Deserialize(this); + return obj; + } + + public byte[] GetRemainingBytes() + { + byte[] outgoingData = new byte[AvailableBytes]; + Buffer.BlockCopy(_data, _position, outgoingData, 0, AvailableBytes); + _position = _data.Length; + return outgoingData; + } + + public void GetBytes(byte[] destination, int start, int count) + { + Buffer.BlockCopy(_data, _position, destination, start, count); + _position += count; + } + + public void GetBytes(byte[] destination, int count) + { + Buffer.BlockCopy(_data, _position, destination, 0, count); + _position += count; + } + + public sbyte[] GetSBytesWithLength() + { + int length = GetInt(); + sbyte[] outgoingData = new sbyte[length]; + Buffer.BlockCopy(_data, _position, outgoingData, 0, length); + _position += length; + return outgoingData; + } + + public byte[] GetBytesWithLength() + { + int length = GetInt(); + byte[] outgoingData = new byte[length]; + Buffer.BlockCopy(_data, _position, outgoingData, 0, length); + _position += length; + return outgoingData; + } + #endregion + + #region PeekMethods + + public byte PeekByte() + { + return _data[_position]; + } + + public sbyte PeekSByte() + { + return (sbyte)_data[_position]; + } + + public bool PeekBool() + { + return _data[_position] > 0; + } + + public char PeekChar() + { + return BitConverter.ToChar(_data, _position); + } + + public ushort PeekUShort() + { + return BitConverter.ToUInt16(_data, _position); + } + + public short PeekShort() + { + return BitConverter.ToInt16(_data, _position); + } + + public long PeekLong() + { + return BitConverter.ToInt64(_data, _position); + } + + public ulong PeekULong() + { + return BitConverter.ToUInt64(_data, _position); + } + + public int PeekInt() + { + return BitConverter.ToInt32(_data, _position); + } + + public uint PeekUInt() + { + return BitConverter.ToUInt32(_data, _position); + } + + public float PeekFloat() + { + return BitConverter.ToSingle(_data, _position); + } + + public double PeekDouble() + { + return BitConverter.ToDouble(_data, _position); + } + + public string PeekString(int maxLength) + { + int bytesCount = BitConverter.ToInt32(_data, _position); + if (bytesCount <= 0 || bytesCount > maxLength * 2) + { + return string.Empty; + } + + int charCount = Encoding.UTF8.GetCharCount(_data, _position + 4, bytesCount); + if (charCount > maxLength) + { + return string.Empty; + } + + string result = Encoding.UTF8.GetString(_data, _position + 4, bytesCount); + return result; + } + + public string PeekString() + { + int bytesCount = BitConverter.ToInt32(_data, _position); + if (bytesCount <= 0) + { + return string.Empty; + } + + string result = Encoding.UTF8.GetString(_data, _position + 4, bytesCount); + return result; + } + #endregion + + #region TryGetMethods + public bool TryGetByte(out byte result) + { + if (AvailableBytes >= 1) + { + result = GetByte(); + return true; + } + result = 0; + return false; + } + + public bool TryGetSByte(out sbyte result) + { + if (AvailableBytes >= 1) + { + result = GetSByte(); + return true; + } + result = 0; + return false; + } + + public bool TryGetBool(out bool result) + { + if (AvailableBytes >= 1) + { + result = GetBool(); + return true; + } + result = false; + return false; + } + + public bool TryGetChar(out char result) + { + if (AvailableBytes >= 2) + { + result = GetChar(); + return true; + } + result = '\0'; + return false; + } + + public bool TryGetShort(out short result) + { + if (AvailableBytes >= 2) + { + result = GetShort(); + return true; + } + result = 0; + return false; + } + + public bool TryGetUShort(out ushort result) + { + if (AvailableBytes >= 2) + { + result = GetUShort(); + return true; + } + result = 0; + return false; + } + + public bool TryGetInt(out int result) + { + if (AvailableBytes >= 4) + { + result = GetInt(); + return true; + } + result = 0; + return false; + } + + public bool TryGetUInt(out uint result) + { + if (AvailableBytes >= 4) + { + result = GetUInt(); + return true; + } + result = 0; + return false; + } + + public bool TryGetLong(out long result) + { + if (AvailableBytes >= 8) + { + result = GetLong(); + return true; + } + result = 0; + return false; + } + + public bool TryGetULong(out ulong result) + { + if (AvailableBytes >= 8) + { + result = GetULong(); + return true; + } + result = 0; + return false; + } + + public bool TryGetFloat(out float result) + { + if (AvailableBytes >= 4) + { + result = GetFloat(); + return true; + } + result = 0; + return false; + } + + public bool TryGetDouble(out double result) + { + if (AvailableBytes >= 8) + { + result = GetDouble(); + return true; + } + result = 0; + return false; + } + + public bool TryGetString(out string result) + { + if (AvailableBytes >= 4) + { + var bytesCount = PeekInt(); + if (AvailableBytes >= bytesCount + 4) + { + result = GetString(); + return true; + } + } + result = null; + return false; + } + + public bool TryGetStringArray(out string[] result) + { + ushort size; + if (!TryGetUShort(out size)) + { + result = null; + return false; + } + + result = new string[size]; + for (int i = 0; i < size; i++) + { + if (!TryGetString(out result[i])) + { + result = null; + return false; + } + } + + return true; + } + + public bool TryGetBytesWithLength(out byte[] result) + { + if (AvailableBytes >= 4) + { + var length = PeekInt(); + if (length >= 0 && AvailableBytes >= length + 4) + { + result = GetBytesWithLength(); + return true; + } + } + result = null; + return false; + } + #endregion + + public void Clear() + { + _position = 0; + _dataSize = 0; + _data = null; + } + } +} + diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs.meta new file mode 100644 index 000000000..719fd3e54 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataReader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67de54bb0352d0f4da607ce4f55e3960 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs new file mode 100644 index 000000000..27268cb78 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs @@ -0,0 +1,415 @@ +using System; +using System.Net; +using System.Text; + +namespace LiteNetLib.Utils +{ + public class NetDataWriter + { + protected byte[] _data; + protected int _position; + private const int InitialSize = 64; + private readonly bool _autoResize; + + public int Capacity + { + get { return _data.Length; } + } + + public NetDataWriter() : this(true, InitialSize) + { + } + + public NetDataWriter(bool autoResize) : this(autoResize, InitialSize) + { + } + + public NetDataWriter(bool autoResize, int initialSize) + { + _data = new byte[initialSize]; + _autoResize = autoResize; + } + + /// + /// Creates NetDataWriter from existing ByteArray + /// + /// Source byte array + /// Copy array to new location or use existing + public static NetDataWriter FromBytes(byte[] bytes, bool copy) + { + if (copy) + { + var netDataWriter = new NetDataWriter(true, bytes.Length); + netDataWriter.Put(bytes); + return netDataWriter; + } + return new NetDataWriter(true, 0) {_data = bytes}; + } + + /// + /// Creates NetDataWriter from existing ByteArray (always copied data) + /// + /// Source byte array + /// Offset of array + /// Length of array + public static NetDataWriter FromBytes(byte[] bytes, int offset, int length) + { + var netDataWriter = new NetDataWriter(true, bytes.Length); + netDataWriter.Put(bytes, offset, length); + return netDataWriter; + } + + public static NetDataWriter FromString(string value) + { + var netDataWriter = new NetDataWriter(); + netDataWriter.Put(value); + return netDataWriter; + } + + public void ResizeIfNeed(int newSize) + { + int len = _data.Length; + if (len < newSize) + { + while (len < newSize) + len *= 2; + Array.Resize(ref _data, len); + } + } + + public void Reset(int size) + { + ResizeIfNeed(size); + _position = 0; + } + + public void Reset() + { + _position = 0; + } + + public byte[] CopyData() + { + byte[] resultData = new byte[_position]; + Buffer.BlockCopy(_data, 0, resultData, 0, _position); + return resultData; + } + + public byte[] Data + { + get { return _data; } + } + + public int Length + { + get { return _position; } + } + + public void Put(float value) + { + if (_autoResize) + ResizeIfNeed(_position + 4); + FastBitConverter.GetBytes(_data, _position, value); + _position += 4; + } + + public void Put(double value) + { + if (_autoResize) + ResizeIfNeed(_position + 8); + FastBitConverter.GetBytes(_data, _position, value); + _position += 8; + } + + public void Put(long value) + { + if (_autoResize) + ResizeIfNeed(_position + 8); + FastBitConverter.GetBytes(_data, _position, value); + _position += 8; + } + + public void Put(ulong value) + { + if (_autoResize) + ResizeIfNeed(_position + 8); + FastBitConverter.GetBytes(_data, _position, value); + _position += 8; + } + + public void Put(int value) + { + if (_autoResize) + ResizeIfNeed(_position + 4); + FastBitConverter.GetBytes(_data, _position, value); + _position += 4; + } + + public void Put(uint value) + { + if (_autoResize) + ResizeIfNeed(_position + 4); + FastBitConverter.GetBytes(_data, _position, value); + _position += 4; + } + + public void Put(char value) + { + if (_autoResize) + ResizeIfNeed(_position + 2); + FastBitConverter.GetBytes(_data, _position, value); + _position += 2; + } + + public void Put(ushort value) + { + if (_autoResize) + ResizeIfNeed(_position + 2); + FastBitConverter.GetBytes(_data, _position, value); + _position += 2; + } + + public void Put(short value) + { + if (_autoResize) + ResizeIfNeed(_position + 2); + FastBitConverter.GetBytes(_data, _position, value); + _position += 2; + } + + public void Put(sbyte value) + { + if (_autoResize) + ResizeIfNeed(_position + 1); + _data[_position] = (byte)value; + _position++; + } + + public void Put(byte value) + { + if (_autoResize) + ResizeIfNeed(_position + 1); + _data[_position] = value; + _position++; + } + + public void Put(byte[] data, int offset, int length) + { + if (_autoResize) + ResizeIfNeed(_position + length); + Buffer.BlockCopy(data, offset, _data, _position, length); + _position += length; + } + + public void Put(byte[] data) + { + if (_autoResize) + ResizeIfNeed(_position + data.Length); + Buffer.BlockCopy(data, 0, _data, _position, data.Length); + _position += data.Length; + } + + public void PutSBytesWithLength(sbyte[] data, int offset, int length) + { + if (_autoResize) + ResizeIfNeed(_position + length + 4); + FastBitConverter.GetBytes(_data, _position, length); + Buffer.BlockCopy(data, offset, _data, _position + 4, length); + _position += length + 4; + } + + public void PutSBytesWithLength(sbyte[] data) + { + if (_autoResize) + ResizeIfNeed(_position + data.Length + 4); + FastBitConverter.GetBytes(_data, _position, data.Length); + Buffer.BlockCopy(data, 0, _data, _position + 4, data.Length); + _position += data.Length + 4; + } + + public void PutBytesWithLength(byte[] data, int offset, int length) + { + if (_autoResize) + ResizeIfNeed(_position + length + 4); + FastBitConverter.GetBytes(_data, _position, length); + Buffer.BlockCopy(data, offset, _data, _position + 4, length); + _position += length + 4; + } + + public void PutBytesWithLength(byte[] data) + { + if (_autoResize) + ResizeIfNeed(_position + data.Length + 4); + FastBitConverter.GetBytes(_data, _position, data.Length); + Buffer.BlockCopy(data, 0, _data, _position + 4, data.Length); + _position += data.Length + 4; + } + + public void Put(bool value) + { + if (_autoResize) + ResizeIfNeed(_position + 1); + _data[_position] = (byte)(value ? 1 : 0); + _position++; + } + + public void PutArray(float[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 4 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(double[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 8 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(long[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 8 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(ulong[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 8 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(int[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 4 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(uint[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 4 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(ushort[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 2 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(short[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len * 2 + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(bool[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + if (_autoResize) + ResizeIfNeed(_position + len + 2); + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(string[] value) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + Put(len); + for (int i = 0; i < len; i++) + Put(value[i]); + } + + public void PutArray(string[] value, int maxLength) + { + ushort len = value == null ? (ushort)0 : (ushort)value.Length; + Put(len); + for (int i = 0; i < len; i++) + Put(value[i], maxLength); + } + + public void Put(IPEndPoint endPoint) + { + Put(endPoint.Address.ToString()); + Put(endPoint.Port); + } + + public void Put(string value) + { + if (string.IsNullOrEmpty(value)) + { + Put(0); + return; + } + + //put bytes count + int bytesCount = Encoding.UTF8.GetByteCount(value); + if (_autoResize) + ResizeIfNeed(_position + bytesCount + 4); + Put(bytesCount); + + //put string + Encoding.UTF8.GetBytes(value, 0, value.Length, _data, _position); + _position += bytesCount; + } + + public void Put(string value, int maxLength) + { + if (string.IsNullOrEmpty(value)) + { + Put(0); + return; + } + + int length = value.Length > maxLength ? maxLength : value.Length; + //calculate max count + int bytesCount = Encoding.UTF8.GetByteCount(value); + if (_autoResize) + ResizeIfNeed(_position + bytesCount + 4); + + //put bytes count + Put(bytesCount); + + //put string + Encoding.UTF8.GetBytes(value, 0, length, _data, _position); + + _position += bytesCount; + } + + public void Put(T obj) where T : INetSerializable + { + obj.Serialize(this); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs.meta new file mode 100644 index 000000000..9d4168461 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetDataWriter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 700694dd49f375345a338712f2a5cf34 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs new file mode 100644 index 000000000..b8304a511 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs @@ -0,0 +1,314 @@ +using System; +using System.Collections.Generic; + +namespace LiteNetLib.Utils +{ + public class NetPacketProcessor + { + private static class HashCache + { + public static bool Initialized; + public static ulong Id; + } + + protected delegate void SubscribeDelegate(NetDataReader reader, object userData); + private readonly NetSerializer _netSerializer; + private readonly Dictionary _callbacks = new Dictionary(); + private readonly NetDataWriter _netDataWriter = new NetDataWriter(); + + public NetPacketProcessor() + { + _netSerializer = new NetSerializer(); + } + + public NetPacketProcessor(int maxStringLength) + { + _netSerializer = new NetSerializer(maxStringLength); + } + + //FNV-1 64 bit hash + protected virtual ulong GetHash() + { + if(HashCache.Initialized) + return HashCache.Id; + + ulong hash = 14695981039346656037UL; //offset + string typeName = typeof(T).FullName; + for (var i = 0; i < typeName.Length; i++) + { + hash = hash ^ typeName[i]; + hash *= 1099511628211UL; //prime + } + HashCache.Initialized = true; + HashCache.Id = hash; + return hash; + } + + protected virtual SubscribeDelegate GetCallbackFromData(NetDataReader reader) + { + var hash = reader.GetULong(); + SubscribeDelegate action; + if (!_callbacks.TryGetValue(hash, out action)) + { + throw new ParseException("Undefined packet in NetDataReader"); + } + return action; + } + + protected virtual void WriteHash(NetDataWriter writer) + { + writer.Put(GetHash()); + } + + /// + /// Register nested property type + /// + /// INetSerializable structure + public void RegisterNestedType() where T : struct, INetSerializable + { + _netSerializer.RegisterNestedType(); + } + + /// + /// Register nested property type + /// + /// + /// + public void RegisterNestedType(Action writeDelegate, Func readDelegate) + { + _netSerializer.RegisterNestedType(writeDelegate, readDelegate); + } + + /// + /// Register nested property type + /// + /// INetSerializable class + public void RegisterNestedType(Func constructor) where T : class, INetSerializable + { + _netSerializer.RegisterNestedType(constructor); + } + + /// + /// Reads all available data from NetDataReader and calls OnReceive delegates + /// + /// NetDataReader with packets data + public void ReadAllPackets(NetDataReader reader) + { + while (reader.AvailableBytes > 0) + ReadPacket(reader); + } + + /// + /// Reads all available data from NetDataReader and calls OnReceive delegates + /// + /// NetDataReader with packets data + /// Argument that passed to OnReceivedEvent + /// Malformed packet + public void ReadAllPackets(NetDataReader reader, object userData) + { + while (reader.AvailableBytes > 0) + ReadPacket(reader, userData); + } + + /// + /// Reads one packet from NetDataReader and calls OnReceive delegate + /// + /// NetDataReader with packet + /// Malformed packet + public void ReadPacket(NetDataReader reader) + { + ReadPacket(reader, null); + } + + public void Send(NetPeer peer, T packet, DeliveryMethod options) where T : class, new() + { + _netDataWriter.Reset(); + Write(_netDataWriter, packet); + peer.Send(_netDataWriter, options); + } + + public void SendNetSerializable(NetPeer peer, T packet, DeliveryMethod options) where T : INetSerializable + { + _netDataWriter.Reset(); + WriteNetSerializable(_netDataWriter, packet); + peer.Send(_netDataWriter, options); + } + + public void Send(NetManager manager, T packet, DeliveryMethod options) where T : class, new() + { + _netDataWriter.Reset(); + Write(_netDataWriter, packet); + manager.SendToAll(_netDataWriter, options); + } + + public void SendNetSerializable(NetManager manager, T packet, DeliveryMethod options) where T : INetSerializable + { + _netDataWriter.Reset(); + WriteNetSerializable(_netDataWriter, packet); + manager.SendToAll(_netDataWriter, options); + } + + public void Write(NetDataWriter writer, T packet) where T : class, new() + { + WriteHash(writer); + _netSerializer.Serialize(writer, packet); + } + + public void WriteNetSerializable(NetDataWriter writer, T packet) where T : INetSerializable + { + WriteHash(writer); + packet.Serialize(writer); + } + + public byte[] Write(T packet) where T : class, new() + { + _netDataWriter.Reset(); + WriteHash(_netDataWriter); + _netSerializer.Serialize(_netDataWriter, packet); + return _netDataWriter.CopyData(); + } + + public byte[] WriteNetSerializable(T packet) where T : INetSerializable + { + _netDataWriter.Reset(); + WriteHash(_netDataWriter); + packet.Serialize(_netDataWriter); + return _netDataWriter.CopyData(); + } + + /// + /// Reads one packet from NetDataReader and calls OnReceive delegate + /// + /// NetDataReader with packet + /// Argument that passed to OnReceivedEvent + /// Malformed packet + public void ReadPacket(NetDataReader reader, object userData) + { + GetCallbackFromData(reader)(reader, userData); + } + + /// + /// Register and subscribe to packet receive event + /// + /// event that will be called when packet deserialized with ReadPacket method + /// Method that constructs packet intead of slow Activator.CreateInstance + /// 's fields are not supported, or it has no fields + public void Subscribe(Action onReceive, Func packetConstructor) where T : class, new() + { + _netSerializer.Register(); + _callbacks[GetHash()] = (reader, userData) => + { + var reference = packetConstructor(); + _netSerializer.Deserialize(reader, reference); + onReceive(reference); + }; + } + + /// + /// Register and subscribe to packet receive event (with userData) + /// + /// event that will be called when packet deserialized with ReadPacket method + /// Method that constructs packet intead of slow Activator.CreateInstance + /// 's fields are not supported, or it has no fields + public void Subscribe(Action onReceive, Func packetConstructor) where T : class, new() + { + _netSerializer.Register(); + _callbacks[GetHash()] = (reader, userData) => + { + var reference = packetConstructor(); + _netSerializer.Deserialize(reader, reference); + onReceive(reference, (TUserData)userData); + }; + } + + /// + /// Register and subscribe to packet receive event + /// This metod will overwrite last received packet class on receive (less garbage) + /// + /// event that will be called when packet deserialized with ReadPacket method + /// 's fields are not supported, or it has no fields + public void SubscribeReusable(Action onReceive) where T : class, new() + { + _netSerializer.Register(); + var reference = new T(); + _callbacks[GetHash()] = (reader, userData) => + { + _netSerializer.Deserialize(reader, reference); + onReceive(reference); + }; + } + + /// + /// Register and subscribe to packet receive event + /// This metod will overwrite last received packet class on receive (less garbage) + /// + /// event that will be called when packet deserialized with ReadPacket method + /// 's fields are not supported, or it has no fields + public void SubscribeReusable(Action onReceive) where T : class, new() + { + _netSerializer.Register(); + var reference = new T(); + _callbacks[GetHash()] = (reader, userData) => + { + _netSerializer.Deserialize(reader, reference); + onReceive(reference, (TUserData)userData); + }; + } + + public void SubscribeNetSerializable( + Action onReceive, + Func packetConstructor) where T : INetSerializable + { + _callbacks[GetHash()] = (reader, userData) => + { + var pkt = packetConstructor(); + pkt.Deserialize(reader); + onReceive(pkt, (TUserData)userData); + }; + } + + public void SubscribeNetSerializable( + Action onReceive, + Func packetConstructor) where T : INetSerializable + { + _callbacks[GetHash()] = (reader, userData) => + { + var pkt = packetConstructor(); + pkt.Deserialize(reader); + onReceive(pkt); + }; + } + + public void SubscribeNetSerializable( + Action onReceive) where T : INetSerializable, new() + { + var reference = new T(); + _callbacks[GetHash()] = (reader, userData) => + { + reference.Deserialize(reader); + onReceive(reference, (TUserData)userData); + }; + } + + public void SubscribeNetSerializable( + Action onReceive) where T : INetSerializable, new() + { + var reference = new T(); + _callbacks[GetHash()] = (reader, userData) => + { + reference.Deserialize(reader); + onReceive(reference); + }; + } + + /// + /// Remove any subscriptions by type + /// + /// Packet type + /// true if remove is success + public bool RemoveSubscription() + { + return _callbacks.Remove(GetHash()); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs.meta new file mode 100644 index 000000000..5c8f90027 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetPacketProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0eb4d84302e2c4499dccc229bc3668a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs new file mode 100644 index 000000000..42e401ae2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs @@ -0,0 +1,601 @@ +using System; +using System.Reflection; +using System.Collections.Generic; +using System.Net; + +namespace LiteNetLib.Utils +{ + public class InvalidTypeException : ArgumentException + { + public InvalidTypeException(string message) : base(message) { } + } + + public class ParseException : Exception + { + public ParseException(string message) : base(message) { } + } + + public class NetSerializer + { + private abstract class FastCall + { + public bool IsArray; + public virtual void Init(MethodInfo getMethod, MethodInfo setMethod, bool isArray) { IsArray = isArray; } + public abstract void Read(T inf, NetDataReader r); + public abstract void Write(T inf, NetDataWriter w); + public virtual void ReadArray(T inf, NetDataReader r) { throw new InvalidTypeException("Unsupported type: " + typeof(T) + "[]"); } + public virtual void WriteArray(T inf, NetDataWriter w) { throw new InvalidTypeException("Unsupported type: " + typeof(T) + "[]"); } + } + + private abstract class FastCallSpecific : FastCall + { + protected Func Getter; + protected Action Setter; + protected Func GetterArr; + protected Action SetterArr; + + protected TProperty[] ReadArrayHelper(TClass inf, NetDataReader r) + { + ushort count = r.GetUShort(); + var arr = GetterArr(inf); + return arr == null || arr.Length != count ? new TProperty[count] : arr; + } + + protected TProperty[] WriteArrayHelper(TClass inf, NetDataWriter w) + { + var arr = GetterArr(inf); + w.Put((ushort)arr.Length); + return arr; + } + + public override void Init(MethodInfo getMethod, MethodInfo setMethod, bool isArray) + { + base.Init(getMethod, setMethod, isArray); + if (IsArray) + { + GetterArr = (Func)Delegate.CreateDelegate(typeof(Func), getMethod); + SetterArr = (Action)Delegate.CreateDelegate(typeof(Action), setMethod); + } + else + { + Getter = (Func)Delegate.CreateDelegate(typeof(Func), getMethod); + Setter = (Action)Delegate.CreateDelegate(typeof(Action), setMethod); + } + } + } + + private abstract class FastCallSpecificAuto : FastCallSpecific + { + protected abstract void ElementRead(NetDataReader r, out TProperty prop); + protected abstract void ElementWrite(NetDataWriter w, ref TProperty prop); + + public override void Read(TClass inf, NetDataReader r) + { + TProperty elem; + ElementRead(r, out elem); + Setter(inf, elem); + } + + public override void Write(TClass inf, NetDataWriter w) + { + var elem = Getter(inf); + ElementWrite(w, ref elem); + } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + for (int i = 0; i < arr.Length; i++) + ElementRead(r, out arr[i]); + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + for (int i = 0; i < arr.Length; i++) + ElementWrite(w, ref arr[i]); + } + } + + private sealed class FastCallStatic : FastCallSpecific + { + private readonly Action _writer; + private readonly Func _reader; + + public FastCallStatic(Action write, Func read) + { + _writer = write; + _reader = read; + } + + public override void Read(TClass inf, NetDataReader r) { Setter(inf, _reader(r)); } + public override void Write(TClass inf, NetDataWriter w) { _writer(w, Getter(inf)); } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i] = _reader(r); + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + int len = arr.Length; + for (int i = 0; i < len; i++) + _writer(w, arr[i]); + } + } + + private sealed class FastCallStruct : FastCallSpecific where TProperty : struct, INetSerializable + { + private TProperty _p; + + public override void Read(TClass inf, NetDataReader r) + { + _p.Deserialize(r); + Setter(inf, _p); + } + + public override void Write(TClass inf, NetDataWriter w) + { + _p = Getter(inf); + _p.Serialize(w); + } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i].Deserialize(r); + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i].Serialize(w); + } + } + + private sealed class FastCallClass : FastCallSpecific where TProperty : class, INetSerializable + { + private readonly Func _constructor; + public FastCallClass(Func constructor) { _constructor = constructor; } + + public override void Read(TClass inf, NetDataReader r) + { + var p = _constructor(); + p.Deserialize(r); + Setter(inf, p); + } + + public override void Write(TClass inf, NetDataWriter w) + { + var p = Getter(inf); + if(p != null) + p.Serialize(w); + } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + int len = arr.Length; + for (int i = 0; i < len; i++) + { + arr[i] = _constructor(); + arr[i].Deserialize(r); + } + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i].Serialize(w); + } + } + + private class IntSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetInt()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetIntArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class UIntSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetUInt()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetUIntArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class ShortSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetShort()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetShortArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class UShortSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetUShort()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetUShortArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class LongSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetLong()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetLongArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class ULongSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetULong()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetULongArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class ByteSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetByte()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetBytesWithLength()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutBytesWithLength(GetterArr(inf)); } + } + + private class SByteSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetSByte()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetSBytesWithLength()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutSBytesWithLength(GetterArr(inf)); } + } + + private class FloatSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetFloat()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetFloatArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class DoubleSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetDouble()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetDoubleArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class BoolSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetBool()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetBoolArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class CharSerializer : FastCallSpecificAuto + { + protected override void ElementWrite(NetDataWriter w, ref char prop) { w.Put(prop); } + protected override void ElementRead(NetDataReader r, out char prop) { prop = r.GetChar(); } + } + + private class IPEndPointSerializer : FastCallSpecificAuto + { + protected override void ElementWrite(NetDataWriter w, ref IPEndPoint prop) { w.Put(prop); } + protected override void ElementRead(NetDataReader r, out IPEndPoint prop) { prop = r.GetNetEndPoint(); } + } + + private class StringSerializer : FastCallSpecific + { + private readonly int _maxLength; + public StringSerializer(int maxLength) { _maxLength = maxLength > 0 ? maxLength : short.MaxValue; } + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetString(_maxLength)); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf), _maxLength); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetStringArray(_maxLength)); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf), _maxLength); } + } + + private class EnumByteSerializer : FastCall + { + protected readonly PropertyInfo Property; + protected readonly Type PropertyType; + public EnumByteSerializer(PropertyInfo property, Type propertyType) + { + Property = property; + PropertyType = propertyType; + } + public override void Read(T inf, NetDataReader r) { Property.SetValue(inf, Enum.ToObject(PropertyType, r.GetByte()), null); } + public override void Write(T inf, NetDataWriter w) { w.Put((byte)Property.GetValue(inf, null)); } + } + + private class EnumIntSerializer : EnumByteSerializer + { + public EnumIntSerializer(PropertyInfo property, Type propertyType) : base(property, propertyType) { } + public override void Read(T inf, NetDataReader r) { Property.SetValue(inf, Enum.ToObject(PropertyType, r.GetInt()), null); } + public override void Write(T inf, NetDataWriter w) { w.Put((int)Property.GetValue(inf, null)); } + } + + private sealed class ClassInfo + { + public static ClassInfo Instance; + private readonly FastCall[] _serializers; + private readonly int _membersCount; + + public ClassInfo(List> serializers) + { + _membersCount = serializers.Count; + _serializers = serializers.ToArray(); + } + + public void Write(T obj, NetDataWriter writer) + { + for (int i = 0; i < _membersCount; i++) + { + var s = _serializers[i]; + if (s.IsArray) + s.WriteArray(obj, writer); + else + s.Write(obj, writer); + } + } + + public void Read(T obj, NetDataReader reader) + { + for (int i = 0; i < _membersCount; i++) + { + var s = _serializers[i]; + if (s.IsArray) + s.ReadArray(obj, reader); + else + s.Read(obj, reader); + } + } + } + + private abstract class CustomType + { + public abstract FastCall Get(); + } + + private sealed class CustomTypeStruct : CustomType where TProperty : struct, INetSerializable + { + public override FastCall Get() { return new FastCallStruct(); } + } + + private sealed class CustomTypeClass : CustomType where TProperty : class, INetSerializable + { + private readonly Func _constructor; + public CustomTypeClass(Func constructor) { _constructor = constructor; } + public override FastCall Get() { return new FastCallClass(_constructor); } + } + + private sealed class CustomTypeStatic : CustomType + { + private readonly Action _writer; + private readonly Func _reader; + public CustomTypeStatic(Action writer, Func reader) + { + _writer = writer; + _reader = reader; + } + public override FastCall Get() { return new FastCallStatic(_writer, _reader); } + } + + /// + /// Register custom property type + /// + /// INetSerializable structure + public void RegisterNestedType() where T : struct, INetSerializable + { + _registeredTypes.Add(typeof(T), new CustomTypeStruct()); + } + + /// + /// Register custom property type + /// + /// INetSerializable class + public void RegisterNestedType(Func constructor) where T : class, INetSerializable + { + _registeredTypes.Add(typeof(T), new CustomTypeClass(constructor)); + } + + /// + /// Register custom property type + /// + /// Any packet + /// custom type writer + /// custom type reader + public void RegisterNestedType(Action writer, Func reader) + { + _registeredTypes.Add(typeof(T), new CustomTypeStatic(writer, reader)); + } + + private NetDataWriter _writer; + private readonly int _maxStringLength; + private readonly Dictionary _registeredTypes = new Dictionary(); + + public NetSerializer() : this(0) + { + } + + public NetSerializer(int maxStringLength) + { + _maxStringLength = maxStringLength; + } + + private ClassInfo RegisterInternal() + { + if (ClassInfo.Instance != null) + return ClassInfo.Instance; + + Type t = typeof(T); + var props = t.GetProperties( + BindingFlags.Instance | + BindingFlags.Public | + BindingFlags.GetProperty | + BindingFlags.SetProperty); + var serializers = new List>(); + for (int i = 0; i < props.Length; i++) + { + var property = props[i]; + var propertyType = property.PropertyType; + var elementType = propertyType.IsArray ? propertyType.GetElementType() : propertyType; + var getMethod = property.GetGetMethod(); + var setMethod = property.GetSetMethod(); + if (getMethod == null || setMethod == null) + continue; + + FastCall serialzer = null; + if (propertyType.IsEnum) + { + var underlyingType = Enum.GetUnderlyingType(propertyType); + if (underlyingType == typeof(byte)) + serialzer = new EnumByteSerializer(property, propertyType); + else if (underlyingType == typeof(int)) + serialzer = new EnumIntSerializer(property, propertyType); + else + throw new InvalidTypeException("Not supported enum underlying type: " + underlyingType.Name); + } + else if (elementType == typeof(string)) + serialzer = new StringSerializer(_maxStringLength); + else if (elementType == typeof(bool)) + serialzer = new BoolSerializer(); + else if (elementType == typeof(byte)) + serialzer = new ByteSerializer(); + else if (elementType == typeof(sbyte)) + serialzer = new SByteSerializer(); + else if (elementType == typeof(short)) + serialzer = new ShortSerializer(); + else if (elementType == typeof(ushort)) + serialzer = new UShortSerializer(); + else if (elementType == typeof(int)) + serialzer = new IntSerializer(); + else if (elementType == typeof(uint)) + serialzer = new UIntSerializer(); + else if (elementType == typeof(long)) + serialzer = new LongSerializer(); + else if (elementType == typeof(ulong)) + serialzer = new ULongSerializer(); + else if (elementType == typeof(float)) + serialzer = new FloatSerializer(); + else if (elementType == typeof(double)) + serialzer = new DoubleSerializer(); + else if (elementType == typeof(char)) + serialzer = new CharSerializer(); + else if (elementType == typeof(IPEndPoint)) + serialzer = new IPEndPointSerializer(); + else + { + CustomType customType; + _registeredTypes.TryGetValue(elementType, out customType); + if (customType != null) + serialzer = customType.Get(); + } + + if (serialzer != null) + { + serialzer.Init(getMethod, setMethod, propertyType.IsArray); + serializers.Add(serialzer); + } + else + { + throw new InvalidTypeException("Unknown property type: " + propertyType.FullName); + } + } + ClassInfo.Instance = new ClassInfo(serializers); + return ClassInfo.Instance; + } + + /// 's fields are not supported, or it has no fields + public void Register() + { + RegisterInternal(); + } + + /// + /// Reads packet with known type + /// + /// NetDataReader with packet + /// Returns packet if packet in reader is matched type + /// 's fields are not supported, or it has no fields + public T Deserialize(NetDataReader reader) where T : class, new() + { + var info = RegisterInternal(); + var result = new T(); + try + { + info.Read(result, reader); + } + catch + { + return null; + } + return result; + } + + /// + /// Reads packet with known type (non alloc variant) + /// + /// NetDataReader with packet + /// Deserialization target + /// Returns true if packet in reader is matched type + /// 's fields are not supported, or it has no fields + public bool Deserialize(NetDataReader reader, T target) where T : class, new() + { + var info = RegisterInternal(); + try + { + info.Read(target, reader); + } + catch + { + return false; + } + return true; + } + + /// + /// Serialize struct to NetDataWriter (fast) + /// + /// Serialization target NetDataWriter + /// Object to serialize + /// 's fields are not supported, or it has no fields + public void Serialize(NetDataWriter writer, T obj) where T : class, new() + { + RegisterInternal().Write(obj, writer); + } + + /// + /// Serialize struct to byte array + /// + /// Object to serialize + /// byte array with serialized data + public byte[] Serialize(T obj) where T : class, new() + { + if (_writer == null) + _writer = new NetDataWriter(); + _writer.Reset(); + Serialize(_writer, obj); + return _writer.CopyData(); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs.meta new file mode 100644 index 000000000..5b48a248c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NetSerializer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8dacc6935fc9a0248918237d4fb6c1d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs new file mode 100644 index 000000000..52afdd5c4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs @@ -0,0 +1,428 @@ +using System; + +namespace LiteNetLib.Utils +{ + /// + /// Represents RFC4330 SNTP packet used for communication to and from a network time server. + /// + /// + /// + /// Most applications should just use the property. + /// + /// + /// The same data structure represents both request and reply packets. + /// Request and reply differ in which properties are set and to what values. + /// + /// + /// The only real property is . + /// All other properties read from and write to the underlying byte array + /// with the exception of , + /// which is not part of the packet on network and it is instead set locally after receiving the packet. + /// + /// + /// Copied from GuerrillaNtp project + /// with permission from Robert Vazan (@robertvazan) under MIT license, see https://github.com/RevenantX/LiteNetLib/pull/236 + /// + /// + public class NtpPacket + { + private static readonly DateTime Epoch = new DateTime(1900, 1, 1); + + /// + /// Gets RFC4330-encoded SNTP packet. + /// + /// + /// Byte array containing RFC4330-encoded SNTP packet. It is at least 48 bytes long. + /// + /// + /// This is the only real property. All other properties except + /// read from or write to this byte array. + /// + public byte[] Bytes { get; private set; } + + /// + /// Gets the leap second indicator. + /// + /// + /// Leap second warning, if any. Special value + /// indicates unsynchronized server clock. + /// Default is . + /// + /// + /// Only servers fill in this property. Clients can consult this property for possible leap second warning. + /// + public NtpLeapIndicator LeapIndicator + { + get { return (NtpLeapIndicator)((Bytes[0] & 0xC0) >> 6); } + } + + /// + /// Gets or sets protocol version number. + /// + /// + /// SNTP protocol version. Default is 4, which is the latest version at the time of this writing. + /// + /// + /// In request packets, clients should leave this property at default value 4. + /// Servers usually reply with the same protocol version. + /// + public int VersionNumber + { + get { return (Bytes[0] & 0x38) >> 3; } + private set { Bytes[0] = (byte)((Bytes[0] & ~0x38) | value << 3); } + } + + /// + /// Gets or sets SNTP packet mode, i.e. whether this is client or server packet. + /// + /// + /// SNTP packet mode. Default is in newly created packets. + /// Server reply should have this property set to . + /// + public NtpMode Mode + { + get { return (NtpMode)(Bytes[0] & 0x07); } + private set { Bytes[0] = (byte)((Bytes[0] & ~0x07) | (int)value); } + } + + /// + /// Gets server's distance from the reference clock. + /// + /// + /// + /// Distance from the reference clock. This property is set only in server reply packets. + /// Servers connected directly to reference clock hardware set this property to 1. + /// Statum number is incremented by 1 on every hop down the NTP server hierarchy. + /// + /// + /// Special value 0 indicates that this packet is a Kiss-o'-Death message + /// with kiss code stored in . + /// + /// + public int Stratum { get { return Bytes[1]; } } + + /// + /// Gets server's preferred polling interval. + /// + /// + /// Polling interval in log2 seconds, e.g. 4 stands for 16s and 17 means 131,072s. + /// + public int Poll { get { return Bytes[2]; } } + + /// + /// Gets the precision of server clock. + /// + /// + /// Clock precision in log2 seconds, e.g. -20 for microsecond precision. + /// + public int Precision { get { return (sbyte)Bytes[3]; } } + + /// + /// Gets the total round-trip delay from the server to the reference clock. + /// + /// + /// Round-trip delay to the reference clock. Normally a positive value smaller than one second. + /// + public TimeSpan RootDelay { get { return GetTimeSpan32(4); } } + + /// + /// Gets the estimated error in time reported by the server. + /// + /// + /// Estimated error in time reported by the server. Normally a positive value smaller than one second. + /// + public TimeSpan RootDispersion { get { return GetTimeSpan32(8); } } + + /// + /// Gets the ID of the time source used by the server or Kiss-o'-Death code sent by the server. + /// + /// + /// + /// ID of server's time source or Kiss-o'-Death code. + /// Purpose of this property depends on value of property. + /// + /// + /// Stratum 1 servers write here one of several special values that describe the kind of hardware clock they use. + /// + /// + /// Stratum 2 and lower servers set this property to IPv4 address of their upstream server. + /// If upstream server has IPv6 address, the address is hashed, because it doesn't fit in this property. + /// + /// + /// When server sets to special value 0, + /// this property contains so called kiss code that instructs the client to stop querying the server. + /// + /// + public uint ReferenceId { get { return GetUInt32BE(12); } } + + /// + /// Gets or sets the time when the server clock was last set or corrected. + /// + /// + /// Time when the server clock was last set or corrected or null when not specified. + /// + /// + /// This Property is usually set only by servers. It usually lags server's current time by several minutes, + /// so don't use this property for time synchronization. + /// + public DateTime? ReferenceTimestamp { get { return GetDateTime64(16); } } + + /// + /// Gets or sets the time when the client sent its request. + /// + /// + /// This property is null in request packets. + /// In reply packets, it is the time when the client sent its request. + /// Servers copy this value from + /// that they find in received request packet. + /// + /// + /// + public DateTime? OriginTimestamp { get { return GetDateTime64(24); } } + + /// + /// Gets or sets the time when the request was received by the server. + /// + /// + /// This property is null in request packets. + /// In reply packets, it is the time when the server received client request. + /// + /// + /// + public DateTime? ReceiveTimestamp { get { return GetDateTime64(32); } } + + /// + /// Gets or sets the time when the packet was sent. + /// + /// + /// Time when the packet was sent. It should never be null. + /// Default value is . + /// + /// + /// This property must be set by both clients and servers. + /// + /// + /// + public DateTime? TransmitTimestamp { get { return GetDateTime64(40); } private set { SetDateTime64(40, value); } } + + /// + /// Gets or sets the time of reception of response SNTP packet on the client. + /// + /// + /// Time of reception of response SNTP packet on the client. It is null in request packets. + /// + /// + /// This property is not part of the protocol and has to be set when reply packet is received. + /// + /// + /// + public DateTime? DestinationTimestamp { get; private set; } + + /// + /// Gets the round-trip time to the server. + /// + /// + /// Time the request spent travelling to the server plus the time the reply spent travelling back. + /// This is calculated from timestamps in the packet as (t1 - t0) + (t3 - t2) + /// where t0 is , + /// t1 is , + /// t2 is , + /// and t3 is . + /// This property throws an exception in request packets. + /// + public TimeSpan RoundTripTime + { + get + { + CheckTimestamps(); + return (ReceiveTimestamp.Value - OriginTimestamp.Value) + (DestinationTimestamp.Value - TransmitTimestamp.Value); + } + } + + /// + /// Gets the offset that should be added to local time to synchronize it with server time. + /// + /// + /// Time difference between server and client. It should be added to local time to get server time. + /// It is calculated from timestamps in the packet as 0.5 * ((t1 - t0) - (t3 - t2)) + /// where t0 is , + /// t1 is , + /// t2 is , + /// and t3 is . + /// This property throws an exception in request packets. + /// + public TimeSpan CorrectionOffset + { + get + { + CheckTimestamps(); + return TimeSpan.FromTicks(((ReceiveTimestamp.Value - OriginTimestamp.Value) - (DestinationTimestamp.Value - TransmitTimestamp.Value)).Ticks / 2); + } + } + + /// + /// Initializes default request packet. + /// + /// + /// Properties and + /// are set appropriately for request packet. Property + /// is set to . + /// + public NtpPacket() : this(new byte[48]) + { + Mode = NtpMode.Client; + VersionNumber = 4; + TransmitTimestamp = DateTime.UtcNow; + } + + /// + /// Initializes packet from received data. + /// + internal NtpPacket(byte[] bytes) + { + if (bytes.Length < 48) + throw new ArgumentException("SNTP reply packet must be at least 48 bytes long.", "bytes"); + Bytes = bytes; + } + + /// + /// Initializes packet from data received from a server. + /// + /// Data received from the server. + /// Utc time of reception of response SNTP packet on the client. + /// + public static NtpPacket FromServerResponse(byte[] bytes, DateTime destinationTimestamp) + { + var packet = new NtpPacket(bytes); + packet.DestinationTimestamp = destinationTimestamp; + return packet; + } + + internal void ValidateRequest() + { + if (Mode != NtpMode.Client) + throw new InvalidOperationException("This is not a request SNTP packet."); + if (VersionNumber == 0) + throw new InvalidOperationException("Protocol version of the request is not specified."); + if (TransmitTimestamp == null) + throw new InvalidOperationException("TransmitTimestamp must be set in request packet."); + } + + internal void ValidateReply() + { + if (Mode != NtpMode.Server) + throw new InvalidOperationException("This is not a reply SNTP packet."); + if (VersionNumber == 0) + throw new InvalidOperationException("Protocol version of the reply is not specified."); + if (Stratum == 0) + throw new InvalidOperationException(string.Format("Received Kiss-o'-Death SNTP packet with code 0x{0:x}.", ReferenceId)); + if (LeapIndicator == NtpLeapIndicator.AlarmCondition) + throw new InvalidOperationException("SNTP server has unsynchronized clock."); + CheckTimestamps(); + } + + private void CheckTimestamps() + { + if (OriginTimestamp == null) + throw new InvalidOperationException("Origin timestamp is missing."); + if (ReceiveTimestamp == null) + throw new InvalidOperationException("Receive timestamp is missing."); + if (TransmitTimestamp == null) + throw new InvalidOperationException("Transmit timestamp is missing."); + if (DestinationTimestamp == null) + throw new InvalidOperationException("Destination timestamp is missing."); + } + + private DateTime? GetDateTime64(int offset) + { + var field = GetUInt64BE(offset); + if (field == 0) + return null; + return new DateTime(Epoch.Ticks + Convert.ToInt64(field * (1.0 / (1L << 32) * 10000000.0))); + } + + private void SetDateTime64(int offset, DateTime? value) + { + SetUInt64BE(offset, value == null ? 0 : Convert.ToUInt64((value.Value.Ticks - Epoch.Ticks) * (0.0000001 * (1L << 32)))); + } + + private TimeSpan GetTimeSpan32(int offset) + { + return TimeSpan.FromSeconds(GetInt32BE(offset) / (double)(1 << 16)); + } + + private ulong GetUInt64BE(int offset) + { + return SwapEndianness(BitConverter.ToUInt64(Bytes, offset)); + } + + private void SetUInt64BE(int offset, ulong value) + { + FastBitConverter.GetBytes(Bytes, offset, SwapEndianness(value)); + } + + private int GetInt32BE(int offset) + { + return (int)GetUInt32BE(offset); + } + + private uint GetUInt32BE(int offset) + { + return SwapEndianness(BitConverter.ToUInt32(Bytes, offset)); + } + + private static uint SwapEndianness(uint x) + { + return ((x & 0xff) << 24) | ((x & 0xff00) << 8) | ((x & 0xff0000) >> 8) | ((x & 0xff000000) >> 24); + } + + private static ulong SwapEndianness(ulong x) + { + return ((ulong)SwapEndianness((uint)x) << 32) | SwapEndianness((uint)(x >> 32)); + } + } + + /// + /// Represents leap second warning from the server that instructs the client to add or remove leap second. + /// + /// + public enum NtpLeapIndicator + { + /// + /// No leap second warning. No action required. + /// + NoWarning, + + /// + /// Warns the client that the last minute of the current day has 61 seconds. + /// + LastMinuteHas61Seconds, + + /// + /// Warns the client that the last minute of the current day has 59 seconds. + /// + LastMinuteHas59Seconds, + + /// + /// Special value indicating that the server clock is unsynchronized and the returned time is unreliable. + /// + AlarmCondition + } + + /// + /// Describes SNTP packet mode, i.e. client or server. + /// + /// + public enum NtpMode + { + /// + /// Identifies client-to-server SNTP packet. + /// + Client = 3, + + /// + /// Identifies server-to-client SNTP packet. + /// + Server = 4, + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs.meta new file mode 100644 index 000000000..442fb695d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpPacket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed0377052ffa3144dba68fae2f29cbb3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs new file mode 100644 index 000000000..59cef8544 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs @@ -0,0 +1,142 @@ +using System; +using System.Net; +using System.Net.Sockets; + +namespace LiteNetLib.Utils +{ + /// + /// Make NTP request. + /// + /// 1. Create the object by method. + /// + /// + /// 2. Use method to send requests. 3. Call to release the socket + /// AFTER you have received the response or some timeout. If you close the socket too early, you may miss the response. + /// + /// + /// 3. Call to release the socket AFTER you have received the response or some timeout. + /// If you close the socket too early, you may miss the response. + /// + /// + public sealed class NtpRequest : INetSocketListener + { + public const int DefaultPort = 123; + + private readonly NetSocket _socket; + private readonly Action _onRequestComplete; + private readonly IPEndPoint _ntpEndPoint; + + /// + /// Initialize object, open socket. + /// + /// NTP Server endpoint + /// callback (called from other thread!) + private NtpRequest(IPEndPoint endPoint, Action onRequestComplete) + { + _ntpEndPoint = endPoint; + _onRequestComplete = onRequestComplete; + + // Create and start socket + _socket = new NetSocket(this); + _socket.Bind(IPAddress.Any, IPAddress.IPv6Any, 0, false, endPoint.AddressFamily == AddressFamily.InterNetworkV6); + } + + /// + /// Create the requests for NTP server, open socket. + /// + /// NTP Server address. + /// callback (called from other thread!) + public static NtpRequest Create(IPEndPoint endPoint, Action onRequestComplete) + { + return new NtpRequest(endPoint, onRequestComplete); + } + + /// + /// Create the requests for NTP server (default port), open socket. + /// + /// NTP Server address. + /// callback (called from other thread!) + public static NtpRequest Create(IPAddress ipAddress, Action onRequestComplete) + { + IPEndPoint endPoint = new IPEndPoint(ipAddress, DefaultPort); + return Create(endPoint, onRequestComplete); + } + + /// + /// Create the requests for NTP server, open socket. + /// + /// NTP Server address. + /// port + /// callback (called from other thread!) + public static NtpRequest Create(string ntpServerAddress, int port, Action onRequestComplete) + { + IPEndPoint endPoint = NetUtils.MakeEndPoint(ntpServerAddress, port); + return Create(endPoint, onRequestComplete); + } + + /// + /// Create the requests for NTP server (default port), open socket. + /// + /// NTP Server address. + /// callback (called from other thread!) + public static NtpRequest Create(string ntpServerAddress, Action onRequestComplete) + { + IPEndPoint endPoint = NetUtils.MakeEndPoint(ntpServerAddress, DefaultPort); + return Create(endPoint, onRequestComplete); + } + + /// + /// Send request to the NTP server calls callback (if success). + /// In case of error the callbacke is called with null param. + /// + public void Send() + { + SocketError errorCode = 0; + var packet = new NtpPacket(); + packet.ValidateRequest(); // not necessary + byte[] sendData = packet.Bytes; + var sendCount = _socket.SendTo(sendData, 0, sendData.Length, _ntpEndPoint, ref errorCode); + if (errorCode != 0 || sendCount != sendData.Length) + { + _onRequestComplete(null); + } + } + + /// + /// Close socket. + /// + public void Close() + { + _socket.Close(); + } + + /// + /// Handle received data: transform bytes to NtpPacket, close socket and call the callback. + /// + void INetSocketListener.OnMessageReceived(byte[] data, int length, SocketError errorCode, IPEndPoint remoteEndPoint) + { + DateTime destinationTimestamp = DateTime.UtcNow; + if (!remoteEndPoint.Equals(_ntpEndPoint)) + return; + + if (length < 48) + { + NetDebug.Write(NetLogLevel.Trace, "NTP response too short: {}", length); + _onRequestComplete(null); + return; + } + + NtpPacket packet = NtpPacket.FromServerResponse(data, destinationTimestamp); + try + { + packet.ValidateReply(); + } + catch (InvalidOperationException ex) + { + NetDebug.Write(NetLogLevel.Trace, "NTP response error: {}", ex.Message); + packet = null; + } + _onRequestComplete(packet); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs.meta b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs.meta new file mode 100644 index 000000000..b92dbf8c2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/LiteNetLib/Utils/NtpRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82b1cac1540e5824a8b78923fbc62bad +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/Client.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq.meta similarity index 77% rename from Assets/Scripts/NIH/MagicOnion.Abstractions/Client.meta rename to Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq.meta index 350a54a85..c6f05c415 100644 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/Client.meta +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: aca11e9577c2fb24c9ff99ccac34dbba +guid: a63fc00275e79cc43ac526c37980469d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes.meta similarity index 77% rename from Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices.meta rename to Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes.meta index 8f191aa17..1beb6fcba 100644 --- a/Assets/Scripts/NIH/MagicOnion.Abstractions/CompilerServices.meta +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cee65f2126c31d0418b29c422566e23b +guid: d5afeae59c88f504a9a6416494369a31 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs new file mode 100644 index 000000000..f4a3a1ce9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs @@ -0,0 +1,9 @@ +using System; + +namespace RethinkDb.Driver.Linq.Attributes +{ + public class PrimaryIndexAttribute : Attribute + { + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs.meta new file mode 100644 index 000000000..8f1d1b9e9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/PrimaryIndexAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1546d1a62ca72f14281d41cfb0b190b4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs new file mode 100644 index 000000000..20a1b56de --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs @@ -0,0 +1,8 @@ +using System; + +namespace RethinkDb.Driver.Linq.Attributes +{ + public class SecondaryIndexAttribute : Attribute + { + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs.meta new file mode 100644 index 000000000..d9a716d0c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/Attributes/SecondaryIndexAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 70880667ec2520243b121b4452e01fab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs new file mode 100644 index 000000000..dbd552d58 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs @@ -0,0 +1,26 @@ +using Remotion.Linq; +using Remotion.Linq.Parsing.Structure; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Net; + +namespace RethinkDb.Driver.Linq +{ + public static class LinqExtensions + { + public static RethinkQueryable AsQueryable( this Table term, IConnection conn ) + { + var executor = new RethinkQueryExecutor( term, conn ); + return new RethinkQueryable( + new DefaultQueryProvider( + typeof( RethinkQueryable<> ), + QueryParser.CreateDefault(), + executor ) + ); + } + + public static RethinkQueryable Table( this Db db, string tableName, IConnection conn ) + { + return db.Table( tableName ).AsQueryable( conn ); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs.meta new file mode 100644 index 000000000..154af3094 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/LinqExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 497b6d9e1e2415d448096fe5e67c4d2f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs new file mode 100644 index 000000000..1b84d3edb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using Remotion.Linq.Clauses.Expressions; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Linq +{ + public class MemberNameResolver + { + private readonly MemberExpression _expression; + + public MemberNameResolver( MemberExpression expression ) + { + _expression = expression; + } + + public ReqlExpr Resolve( ReqlExpr reqlExpr ) => ResolveMemberExpression( reqlExpr, _expression ); + + private static ReqlExpr ResolveMemberExpression( ReqlExpr reqlExpr, MemberExpression expression ) + { + if( expression.Expression.NodeType == ExpressionType.MemberAccess ) + reqlExpr = ResolveMemberExpression( reqlExpr, (MemberExpression)expression.Expression ); + if( expression.Expression.NodeType == ExpressionType.Extension && expression.Expression is SubQueryExpression ) + reqlExpr = ResolveExtensionExpression( reqlExpr, (SubQueryExpression)expression.Expression ); + return reqlExpr[QueryHelper.GetJsonMemberName( expression.Member )]; + } + + private static ReqlExpr ResolveExtensionExpression( ReqlExpr reqlExpr, SubQueryExpression expression ) + { + var subQueryVisitors = new List + { + new AnySubQueryVisitor(), + new AllSubQueryVisitor(), + new FirstAndLastSubQueryVisitor() + }; + + var subQueryVisitor = subQueryVisitors.FirstOrDefault( x => x.CanVisit( expression.QueryModel ) ); + + if( subQueryVisitor == null ) + throw new NotSupportedException( "subqueries not allowed ." ); + + return subQueryVisitor.Visit( reqlExpr, expression.QueryModel ); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs.meta new file mode 100644 index 000000000..5810840eb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/MemberNameResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6d58b735ecbbe44da23bc61faede0f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj new file mode 100644 index 000000000..8a7d7c1ed --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj @@ -0,0 +1,42 @@ + + + An experimental LINQ to ReQL provider for the RethinkDB C# Driver. + + + 0.0.0-localbuild + Brian Chavez;jrote1 + net45;netstandard2.0 + RethinkDb.Driver.Linq.ruleset + true + + + false + RethinkDb.Driver.Linq + rethinkdb;document;database;driver;reql;linq;nosql + https://raw.githubusercontent.com/wiki/bchavez/RethinkDb.Driver/logo.png + https://github.com/bchavez/RethinkDb.Driver + https://raw.githubusercontent.com/bchavez/RethinkDb.Driver/master/LICENSE + git + https://github.com/bchavez/RethinkDb.Driver + + true + false + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + + + $(DefineConstants);STANDARD + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj.meta new file mode 100644 index 000000000..48de53542 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.csproj.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ccd26d30308e3de449c758dc41125bbc +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset new file mode 100644 index 000000000..aefb0f998 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset @@ -0,0 +1,6 @@ + + + + + + diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset.meta new file mode 100644 index 000000000..5aa8a08f2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDb.Driver.Linq.ruleset.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4a29586679b0ef3489a21ca519dd6c41 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs new file mode 100644 index 000000000..490b45038 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; + +namespace RethinkDb.Driver.Linq +{ + public class RethinkDbGroup : IGrouping + { + public IEnumerator GetEnumerator() + { + return Reduction.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + + public T Key { get; set; } + + public List Reduction { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs.meta new file mode 100644 index 000000000..0a8dda486 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4dc1e08321f5894cbc97d340d1077c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs new file mode 100644 index 000000000..3892be1ab --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs @@ -0,0 +1,190 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using Remotion.Linq; +using Remotion.Linq.Clauses; +using Remotion.Linq.Clauses.Expressions; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Linq.Attributes; +using RethinkDb.Driver.Linq.WhereClauseParsers; +using ExpressionVisitor = RethinkDb.Driver.Linq.WhereClauseParsers.ExpressionVisitor; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Linq +{ + public class RethinkDbQueryModelVisitor : QueryModelVisitorBase + { + private readonly Table _table; + + public ReqlAst Query => Stack.Peek(); + public Stack Stack = new Stack(); + + public RethinkDbQueryModelVisitor( Table table ) + { + _table = table; + } + + public override void VisitQueryModel( QueryModel queryModel ) + { + Stack.Push( _table ); + base.VisitQueryModel( queryModel ); + } + + public override void VisitMainFromClause( MainFromClause fromClause, QueryModel queryModel ) + { + var subQuery = fromClause.FromExpression as SubQueryExpression; + if( subQuery != null ) + { + var query = subQuery.QueryModel; + VisitBodyClauses( query.BodyClauses, query ); + base.VisitMainFromClause( fromClause, queryModel ); + } + + base.VisitMainFromClause( fromClause, queryModel ); + } + + public override void VisitWhereClause( WhereClause whereClause, QueryModel queryModel, int index ) + { + var expressions = SplitWhereClause( whereClause.Predicate ); + + foreach( var expression in expressions.ToList() ) + { + var whereClauseParsers = new List + { + new GroupItemsParser(), + new PrimaryIndexParser(), + new SecondaryIndexParser(), + new DefaultParser() + }; + + var reql = Stack.Pop(); + var matchingParser = whereClauseParsers.FirstOrDefault( x => x.IsAppropriate( reql, expression, queryModel.ResultTypeOverride ) ); + if( matchingParser != null ) + Stack.Push( matchingParser.Parse( reql, queryModel, expression ) ); + else + throw new NotSupportedException( "Unable to vist Where clause" ); + } + } + + private static IEnumerable SplitWhereClause( Expression predicate ) + { + if( predicate.NodeType != ExpressionType.AndAlso ) + { + yield return predicate; + yield break; + } + + var binaryExpression = predicate as BinaryExpression; + if( binaryExpression == null ) + yield break; + + + foreach( var expression in SplitWhereClause( binaryExpression.Left ) ) + yield return expression; + yield return binaryExpression.Right; + } + + private static ReqlExpr GetSelectReqlAst( Expression selector ) + { + var visitor = new SelectionProjector(); + visitor.Visit( selector ); + return visitor.Current; + } + + public override void VisitOrderByClause( OrderByClause orderByClause, QueryModel queryModel, int index ) + { + var expression = orderByClause.Orderings[0].Expression as MemberExpression; + if( expression == null ) + return; + + OrderBy reql; + var currentStack = Stack.Pop(); + var memberName = QueryHelper.GetJsonMemberName( expression.Member ); + if( orderByClause.Orderings[0].OrderingDirection == OrderingDirection.Asc ) + reql = currentStack.OrderBy( memberName ); + else + reql = currentStack.OrderBy( RethinkDB.R.Desc( memberName ) ); + + if( currentStack is Table && expression.Member.CustomAttributes.Any( x => x.AttributeType == typeof( PrimaryIndexAttribute ) || x.AttributeType == typeof( SecondaryIndexAttribute ) ) ) + reql = reql.OptArg( "index", memberName ); + + Stack.Push( reql ); + } + + public override void VisitSelectClause( SelectClause selectClause, QueryModel queryModel ) + { + if( queryModel.ResultOperators.FirstOrDefault() is AverageResultOperator ) + { + var memberExpression = selectClause.Selector as MemberExpression; + var memberNameResolver = new MemberNameResolver( memberExpression ); + Stack.Push( Stack.Pop().Avg( x => memberNameResolver.Resolve( x ) ) ); + return; + } + + if( queryModel.ResultOperators.FirstOrDefault() is CountResultOperator ) + { + Stack.Push( Stack.Pop().Count( ) ); + return; + } + + var expr = GetSelectReqlAst( selectClause.Selector ); + if( !ReferenceEquals( expr, null ) ) + { + + } + + base.VisitSelectClause( selectClause, queryModel ); + } + + protected override void VisitBodyClauses( ObservableCollection bodyClauses, QueryModel queryModel ) + { + if( queryModel.ResultTypeOverride.GetTypeInfo().IsGenericTypeDefinition && queryModel.ResultTypeOverride.GetGenericArguments()[0].GetGenericTypeDefinition() != typeof( IGrouping<,> ) ) + { + base.VisitBodyClauses( bodyClauses, queryModel ); + return; + } + + var group = queryModel.ResultOperators.FirstOrDefault() as GroupResultOperator; + if( group == null ) + { + base.VisitBodyClauses( bodyClauses, queryModel ); + return; + } + + + var keySelector = (MemberExpression)group.KeySelector; + var groupReql = Stack.Pop().Group( QueryHelper.GetJsonMemberName( keySelector.Member ) ); + + var memberAccess = group.ElementSelector as MemberExpression; + Stack.Push( memberAccess != null ? groupReql.GetField( QueryHelper.GetJsonMemberName( memberAccess.Member ) ).Ungroup() : groupReql.Ungroup() ); + } + + public override void VisitResultOperator( ResultOperatorBase resultOperator, QueryModel queryModel, int index ) + { + if( resultOperator is AnyResultOperator ) + Stack.Push( Stack.Pop().Count() ); + else if( resultOperator is AllResultOperator ) + { + var allResultOperator = resultOperator as AllResultOperator; + Stack.Push( Stack.Pop().Filter( x => GetWhereReqlAst( x, allResultOperator.Predicate ).Not() ).Count() ); + } + else if( resultOperator is FirstResultOperator ) + Stack.Push( Stack.Pop().Nth( 0 ) ); + else if( resultOperator is LastResultOperator ) + Stack.Push( Stack.Pop().Nth( -1 ) ); + + base.VisitResultOperator( resultOperator, queryModel, index ); + } + + private static ReqlExpr GetWhereReqlAst( ReqlExpr reqlExpr, Expression predicate ) + { + var visitor = new ExpressionVisitor( reqlExpr, typeof( bool ) ); + visitor.Visit( predicate ); + return visitor.Current; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs.meta new file mode 100644 index 000000000..f39b74c06 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkDbQueryModelVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff262bcd2f16e574686b6a9cbf453bf7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs new file mode 100644 index 000000000..baf594002 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Remotion.Linq; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Net; + +namespace RethinkDb.Driver.Linq +{ + public class RethinkQueryExecutor : IQueryExecutor + { + private readonly Table table; + private readonly IConnection connection; + + public RethinkQueryExecutor( Table table, IConnection connection ) + { + this.table = table; + this.connection = connection; + } + + protected virtual void ProcessQuery( ReqlAst query ) + { + + } + + public T ExecuteScalar( QueryModel queryModel ) + { + var visitor = new RethinkDbQueryModelVisitor( table ); + + visitor.VisitQueryModel( queryModel ); + + var query = visitor.Query; + ProcessQuery( query ); + + var result = query.Run( connection ); + + if( queryModel.ResultOperators.FirstOrDefault() is AnyResultOperator ) + return result > 0; + if( queryModel.ResultOperators.FirstOrDefault() is AllResultOperator ) + return result == 0; + + return (T)result; + } + + + + public T ExecuteSingle( QueryModel queryModel, bool returnDefaultWhenEmpty ) + { + var visitor = new RethinkDbQueryModelVisitor( table ); + + visitor.VisitQueryModel( queryModel ); + + var query = visitor.Query; + ProcessQuery( query ); + + try + { + return query.RunResult( connection ); + } + catch( ReqlNonExistenceError ex ) + { + if( ShouldReturnDefault( queryModel ) ) + return default( T ); + throw new InvalidOperationException( ex.Message ); + } + } + + private static bool ShouldReturnDefault( QueryModel queryModel ) + { + var firstResultOperator = queryModel.ResultOperators.FirstOrDefault(); + return ( firstResultOperator as FirstResultOperator )?.ReturnDefaultWhenEmpty + ?? ( firstResultOperator as LastResultOperator )?.ReturnDefaultWhenEmpty + ?? false; + } + + public IEnumerable ExecuteCollection( QueryModel queryModel ) + { + var visitor = new RethinkDbQueryModelVisitor( table ); + + visitor.VisitQueryModel( queryModel ); + + var query = visitor.Query; + ProcessQuery( query ); + + if( typeof(T).GetTypeInfo().IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(IGrouping<,>) ) + { + + return typeof(RethinkQueryExecutor) + .GetMethod(nameof(DeserializeGrouping), + BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly) + .MakeGenericMethod( + typeof(T).GetGenericArguments()[0], + typeof(T).GetGenericArguments()[1]) + .Invoke(null, new object[] + { + query.Run(connection) as JArray + }) as IEnumerable; + } + + if( query is Get ) + { + return new List + { + query.RunResult(connection) + }; + } + + return query.RunResult>( connection ); + } + + private static List> DeserializeGrouping( JArray groups ) + { + var result = new List>(); + + foreach( var group in groups ) + { + var groupArray = (JObject)group; + result.Add( new RethinkDbGroup + { + Key = groupArray["group"].ToObject(), + Reduction = JsonConvert.DeserializeObject>( groupArray["reduction"].ToString() ) + } ); + } + + return result; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs.meta new file mode 100644 index 000000000..d6dbac478 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryExecutor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28b39bfa0ac130949b5d48021a4edf10 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs new file mode 100644 index 000000000..1e1eaf580 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs @@ -0,0 +1,22 @@ +using System.Linq; +using System.Linq.Expressions; +using Remotion.Linq; +using Remotion.Linq.Parsing.Structure; + +namespace RethinkDb.Driver.Linq +{ + public class RethinkQueryable : QueryableBase + { + public RethinkQueryable( IQueryParser queryParser, IQueryExecutor executor ) : base( queryParser, executor ) + { + } + + public RethinkQueryable( IQueryProvider provider ) : base( provider ) + { + } + + public RethinkQueryable( IQueryProvider provider, Expression expression ) : base( provider, expression ) + { + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs.meta new file mode 100644 index 000000000..27781bf38 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/RethinkQueryable.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30f22ad9c416ee6428e4bc7c1aff8cb0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs new file mode 100644 index 000000000..27dbae98c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using Remotion.Linq.Clauses.Expressions; +using Remotion.Linq.Parsing; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq +{ + public class SelectionProjector : ThrowingExpressionVisitor + { + private readonly Stack _stack = new Stack(); + + public ReqlExpr Current => _stack.Count > 0 ? _stack.Peek() : null; + + protected override Exception CreateUnhandledItemException( T unhandledItem, string visitMethod ) + { + throw new NotImplementedException(); + } + + protected override Expression VisitQuerySourceReference( QuerySourceReferenceExpression expression ) + { + return expression; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs.meta new file mode 100644 index 000000000..d36a09024 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/SelectionProjector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e51a9e666bbd9484f94c924bb2310d16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers.meta new file mode 100644 index 000000000..e2987b4f5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5b588de5b68f5314d9eb711c7e248322 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs new file mode 100644 index 000000000..6414ba506 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs @@ -0,0 +1,40 @@ +using System; +using System.Linq; +using System.Linq.Expressions; +using Remotion.Linq; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public abstract class BaseIndexParser : IWhereClauseParser + { + public bool IsAppropriate( ReqlAst reql, Expression expression, Type resultType ) + { + var binaryExpression = expression as BinaryExpression; + + if( !( reql is Table ) || binaryExpression?.NodeType != ExpressionType.Equal ) + return false; + + var left = binaryExpression.Left as MemberExpression; + if( left != null ) + return IsIndex( left ); + + var right = binaryExpression.Right as MemberExpression; + + return right != null && IsIndex( right ); + } + + private static bool IsIndex( MemberExpression left ) + { + return left.Member.CustomAttributes.Any( x => x.AttributeType == typeof( T ) ); + } + + public abstract ReqlExpr Parse( ReqlExpr expression, QueryModel queryModel, Expression predicate ); + + protected static object GetValue( BinaryExpression binaryExpression ) + { + var left = binaryExpression.Left as ConstantExpression; + return left != null ? left.Value : ( (ConstantExpression)binaryExpression.Right ).Value; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs.meta new file mode 100644 index 000000000..dda83ab81 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/BaseIndexParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40d9953e7cea4ff4da4a1a50a3c01de9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs new file mode 100644 index 000000000..ba1dc8417 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs @@ -0,0 +1,32 @@ +using System; +using System.Linq.Expressions; +using System.Reflection; +using Remotion.Linq; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public class DefaultParser : IWhereClauseParser + { + public bool IsAppropriate( ReqlAst reql, Expression expression, Type resultType ) => true; + + public ReqlExpr Parse( ReqlExpr expression, QueryModel queryModel, Expression predicate ) + { + return expression.Filter( reqlExpr => GetWhereReqlAst( reqlExpr, predicate, queryModel ) ); + } + + private static ReqlExpr GetWhereReqlAst( ReqlExpr reqlExpr, Expression predicate, QueryModel queryModel ) + { + var visitor = new ExpressionVisitor( reqlExpr, GetResultType( queryModel ) ); + visitor.Visit( predicate ); + return visitor.Current; + } + + private static Type GetResultType( QueryModel queryModel ) + { + if( !queryModel.ResultTypeOverride.GetTypeInfo().IsGenericType ) + return queryModel.ResultTypeOverride; + return queryModel.ResultTypeOverride.GetTypeInfo().GenericTypeArguments[0]; + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs.meta new file mode 100644 index 000000000..eca98496b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/DefaultParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 86144ea44b1a9f54d8828051a8230119 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs new file mode 100644 index 000000000..ae469f4d4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs @@ -0,0 +1,60 @@ +using System; +using System.Linq.Expressions; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public static class ExprHelper + { + public static ReqlExpr TranslateUnary( ExpressionType type, ReqlExpr term ) + { + switch( type ) + { + case ExpressionType.Not: + return term.Not(); + default: + throw new NotSupportedException( "Unary term not supported." ); + } + } + + public static ReqlExpr TranslateBinary( ExpressionType type, ReqlExpr left, ReqlExpr right ) + { + switch( type ) + { + case ExpressionType.Equal: + return left.Eq( right ); + case ExpressionType.NotEqual: + return left.Eq( right ).Not(); + case ExpressionType.LessThan: + return left.Lt( right ); + case ExpressionType.LessThanOrEqual: + return left.Le( right ); + case ExpressionType.GreaterThan: + return left.Gt( right ); + case ExpressionType.GreaterThanOrEqual: + return left.Ge( right ); + case ExpressionType.And: + case ExpressionType.AndAlso: + return left.And( right ); + case ExpressionType.Or: + case ExpressionType.OrElse: + return left.Or( right ); + case ExpressionType.Not: + throw new InvalidOperationException( "ExpresionType:Not cannot be called on a binary translation." ); + case ExpressionType.Add: + return left.Add( right ); + case ExpressionType.Subtract: + return left.Sub( right ); + case ExpressionType.Multiply: + return left.Mul( right ); + case ExpressionType.Divide: + return left.Div( right ); + case ExpressionType.Modulo: + return left.Mod( right ); + default: + throw new NotSupportedException( "Binary expression not supported." ); + } + } + + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs.meta new file mode 100644 index 000000000..a829321c3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExprHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc0cb29a01a918646a8592cf88c954f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs new file mode 100644 index 000000000..389bd7965 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using Remotion.Linq.Clauses.Expressions; +using Remotion.Linq.Parsing; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public class ExpressionVisitor : ThrowingExpressionVisitor + { + private readonly ReqlExpr _reqlExpr; + private readonly Type _type; + private readonly Stack _stack = new Stack(); + + public ExpressionVisitor( ReqlExpr reqlExpr, Type type ) + { + _type = type; + _reqlExpr = reqlExpr; + } + + public ReqlExpr Current => _stack.Peek(); + + protected override Exception CreateUnhandledItemException( T unhandledItem, string visitMethod ) + { + string itemText = unhandledItem.ToString(); + var message = $"The expression '{itemText}' (type: {typeof( T )}) is not supported by RethinkDB LINQ provider."; + return new NotSupportedException( message ); + } + + private ReqlExpr VistSide( Expression expression ) + { + if( expression.NodeType == ExpressionType.Extension && expression is QuerySourceReferenceExpression ) + return _reqlExpr; + Visit( expression ); + return _stack.Pop(); + } + + protected override Expression VisitBinary( BinaryExpression expression ) + { + var left = VistSide( expression.Left ); + var right = VistSide( expression.Right ); + + var operation = ExprHelper.TranslateBinary( expression.NodeType, left, right ); + _stack.Push( operation ); + + return expression; + } + + protected override Expression VisitUnary( UnaryExpression expression ) + { + if( expression.NodeType == ExpressionType.Not ) + { + Visit( expression.Operand ); + _stack.Push( _stack.Pop().Not() ); + return null; + } + return base.VisitUnary( expression ); + } + + protected override Expression VisitConstant( ConstantExpression expression ) + { + var datum = Util.ToReqlExpr( expression.Value ); + _stack.Push( datum ); + return expression; + } + + protected override Expression VisitMember( MemberExpression expression ) + { + Visit( expression.Expression ); + + var fieldName = expression.Member.Name; + if( _type.GetTypeInfo().IsGenericType && _type.GetGenericTypeDefinition() == typeof( IGrouping<,> ) && fieldName == "Key" ) + _stack.Push( _reqlExpr["group"] ); + else + { + var memberNameResolver = new MemberNameResolver( expression ); + _stack.Push( memberNameResolver.Resolve( _reqlExpr ) ); + } + + return expression; + } + + protected override Expression VisitSubQuery( SubQueryExpression expression ) + { + var subQueryVisitors = new List + { + new AnySubQueryVisitor(), + new AllSubQueryVisitor(), + new FirstAndLastSubQueryVisitor(), + new CountSubQueryVisitor(), + new ContainsSubQueryVisitor() + }; + + var subQueryVisitor = subQueryVisitors.FirstOrDefault( x => x.CanVisit( expression.QueryModel ) ); + + if( subQueryVisitor == null ) throw new NotSupportedException( "subqueries not allowed ." ); + + _stack.Push( subQueryVisitor.Visit( _reqlExpr, expression.QueryModel ) ); + return null; + } + + protected override Expression VisitQuerySourceReference( QuerySourceReferenceExpression expression ) + { + return expression; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs.meta new file mode 100644 index 000000000..d730d876b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/ExpressionVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f9875af41ba85e742beeddccd1b460ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs new file mode 100644 index 000000000..e8c23a9e5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs @@ -0,0 +1,49 @@ +using System; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using Remotion.Linq; +using Remotion.Linq.Clauses; +using Remotion.Linq.Clauses.Expressions; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public class GroupItemsParser : IWhereClauseParser + { + public bool IsAppropriate( ReqlAst reql, Expression expression, Type resultType ) + { + var subQueryExpression = expression as SubQueryExpression; + if( subQueryExpression == null ) + return false; + + var type = subQueryExpression.QueryModel.MainFromClause.FromExpression.Type; + + if( type.GetTypeInfo().IsGenericType + && type.GetGenericTypeDefinition() == typeof( IGrouping<,> ) ) + { + if( subQueryExpression.QueryModel.ResultOperators[0] is AnyResultOperator ) + return true; + throw new NotImplementedException( "This filter is not supported for GroupBy" ); + } + + return false; + } + + public ReqlExpr Parse( ReqlExpr expression, QueryModel queryModel, Expression predicate ) + { + return expression.Filter( x => x["reduction"].Contains( reqlExpr => GetWhereReqlAst( reqlExpr, predicate ) ) ); + } + + private static ReqlExpr GetWhereReqlAst( ReqlExpr reqlExpr, Expression predicate ) + { + var subQueryExpression = predicate as SubQueryExpression; + var where = subQueryExpression.QueryModel.BodyClauses[0] as WhereClause; + + var visitor = new ExpressionVisitor( reqlExpr, subQueryExpression.QueryModel.MainFromClause.ItemType ); + visitor.Visit( where.Predicate ); + return visitor.Current; + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs.meta new file mode 100644 index 000000000..4b07acbfc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/GroupItemsParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bae9ddf53cce69543be098c155e50c24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs new file mode 100644 index 000000000..e3a96ec69 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs @@ -0,0 +1,13 @@ +using System; +using System.Linq.Expressions; +using Remotion.Linq; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public interface IWhereClauseParser + { + bool IsAppropriate( ReqlAst reql, Expression expression, Type resultType ); + ReqlExpr Parse( ReqlExpr expression, QueryModel queryModel, Expression predicate ); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs.meta new file mode 100644 index 000000000..d7806e679 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/IWhereClauseParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e2c572257c646e42abea70e540719e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs new file mode 100644 index 000000000..fd394a734 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs @@ -0,0 +1,18 @@ +using System.Linq.Expressions; +using Remotion.Linq; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Linq.Attributes; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public class PrimaryIndexParser : BaseIndexParser + { + public override ReqlExpr Parse( ReqlExpr expression, QueryModel queryModel, Expression predicate ) + { + var binaryExpression = (BinaryExpression)predicate; + var value = GetValue( binaryExpression ); + + return ( (Table)expression ).Get( value ); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs.meta new file mode 100644 index 000000000..a75850ec6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/PrimaryIndexParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 14365077527b4b348b68c74cd25ea232 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs new file mode 100644 index 000000000..83eefeb11 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs @@ -0,0 +1,26 @@ +using System.Linq.Expressions; +using Remotion.Linq; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Linq.Attributes; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers +{ + public class SecondaryIndexParser : BaseIndexParser + { + public override ReqlExpr Parse( ReqlExpr expression, QueryModel queryModel, Expression predicate ) + { + var binaryExpression = (BinaryExpression)predicate; + var value = GetValue( binaryExpression ); + + return ( (Table)expression ).GetAll( value ).OptArg( "index", GetIndexName( binaryExpression ) ); + } + + private static string GetIndexName( BinaryExpression binaryExpression ) + { + var left = binaryExpression.Left as MemberExpression; + var memberExpression = left ?? ( (MemberExpression)binaryExpression.Right ); + return QueryHelper.GetJsonMemberName( memberExpression.Member ); + } + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs.meta new file mode 100644 index 000000000..c2341f4f2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SecondaryIndexParser.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b3abba98413de94ba476d5d649d5605 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor.meta new file mode 100644 index 000000000..a812dcd25 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 85dec746696fa1d46aa7a4d74a50272a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs new file mode 100644 index 000000000..bf4c3487b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs @@ -0,0 +1,19 @@ +using System.Linq.Expressions; +using Remotion.Linq; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public class AllSubQueryVisitor : BaseSubQueryVisitor + { + public override ReqlExpr Visit( ReqlExpr reqlExpr, QueryModel queryModel ) + { + var fromExpression = queryModel.MainFromClause.FromExpression as MemberExpression; + var memberNameResolver = new MemberNameResolver( fromExpression ); + reqlExpr = memberNameResolver.Resolve( reqlExpr ); + reqlExpr = reqlExpr.Filter( expr => GetWhereReqlAst( expr, ( (AllResultOperator)queryModel.ResultOperators[0] ).Predicate, queryModel ).Not() ); + return reqlExpr.Count().Eq( 0 ); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs.meta new file mode 100644 index 000000000..39b8115ad --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AllSubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1d0bf98818a618e44895a5207ab54668 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs new file mode 100644 index 000000000..b312a7b9c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs @@ -0,0 +1,11 @@ +using Remotion.Linq; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public class AnySubQueryVisitor : BaseFilterableSubQueryVisitor + { + protected override ReqlExpr BuildReql( ReqlExpr reqlExpr, QueryModel queryModel ) => reqlExpr.Count().Gt( 0 ); + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs.meta new file mode 100644 index 000000000..bd53ba4a9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/AnySubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4128f9aaf789fd84d9283d76c74428a5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs new file mode 100644 index 000000000..322de169f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs @@ -0,0 +1,23 @@ +using System.Linq; +using System.Linq.Expressions; +using Remotion.Linq; +using Remotion.Linq.Clauses; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public abstract class BaseFilterableSubQueryVisitor : BaseSubQueryVisitor + { + public override ReqlExpr Visit( ReqlExpr reqlExpr, QueryModel queryModel ) + { + var fromExpression = queryModel.MainFromClause.FromExpression as MemberExpression; + var memberNameResolver = new MemberNameResolver( fromExpression ); + reqlExpr = memberNameResolver.Resolve( reqlExpr ); + if( queryModel.BodyClauses.Any() ) + reqlExpr = reqlExpr.Filter( expr => GetWhereReqlAst( expr, ( (WhereClause)queryModel.BodyClauses[0] ).Predicate, queryModel ) ); + return BuildReql( reqlExpr, queryModel ); + } + + protected abstract ReqlExpr BuildReql( ReqlExpr reqlExpr, QueryModel queryModel ); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs.meta new file mode 100644 index 000000000..eabe830cd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseFilterableSubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44789e40a3709604581ae5adcaf85635 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs new file mode 100644 index 000000000..b0511e959 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs @@ -0,0 +1,33 @@ +using System; +using System.Linq; +using System.Linq.Expressions; +using System.Reflection; +using Remotion.Linq; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public abstract class BaseSubQueryVisitor : ISubQueryVisitor + { + protected static ReqlExpr GetWhereReqlAst( ReqlExpr reqlExpr, Expression predicate, QueryModel queryModel ) + { + var visitor = new ExpressionVisitor( reqlExpr, GetResultType( queryModel ) ); + visitor.Visit( predicate ); + return visitor.Current; + } + + protected static Type GetResultType( QueryModel queryModel ) + { + if( !queryModel.ResultTypeOverride.GetTypeInfo().IsGenericType ) + return queryModel.ResultTypeOverride; + return queryModel.ResultTypeOverride.GetTypeInfo().GenericTypeArguments[0]; + } + + public virtual bool CanVisit( QueryModel queryModel ) + { + return queryModel.ResultOperators.Any( x => x is T ); + } + + public abstract ReqlExpr Visit( ReqlExpr reqlExpr, QueryModel queryModel ); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs.meta new file mode 100644 index 000000000..669561575 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/BaseSubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a6871f9c44490c4ca39b77bfa55b9e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs new file mode 100644 index 000000000..9e42d05e0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using System.Linq.Expressions; +using Remotion.Linq; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public class ContainsSubQueryVisitor : BaseSubQueryVisitor + { + public override ReqlExpr Visit( ReqlExpr reqlExpr, QueryModel queryModel ) + { + var fromExpression = queryModel.MainFromClause.FromExpression as ConstantExpression; + var array = RethinkDB.R.Expr( fromExpression.Value as IEnumerable ); + + var resultOperator = queryModel.ResultOperators[0] as ContainsResultOperator; + + var memberNameResolver = new MemberNameResolver( (MemberExpression)resultOperator.Item ); + return array.Contains( memberNameResolver.Resolve( reqlExpr ) ); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs.meta new file mode 100644 index 000000000..36caa9ef7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ContainsSubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 67ccfb3b1d003a047840914b856e8ca0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs new file mode 100644 index 000000000..7cc38a318 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs @@ -0,0 +1,11 @@ +using Remotion.Linq; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public class CountSubQueryVisitor : BaseFilterableSubQueryVisitor + { + protected override ReqlExpr BuildReql( ReqlExpr reqlExpr, QueryModel queryModel ) => reqlExpr.Count(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs.meta new file mode 100644 index 000000000..2652c436e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/CountSubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef10c4e44e8129e46af3a951b3b93c70 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs new file mode 100644 index 000000000..44a888471 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs @@ -0,0 +1,24 @@ +using System.Linq; +using Remotion.Linq; +using Remotion.Linq.Clauses.ResultOperators; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public class FirstAndLastSubQueryVisitor : BaseFilterableSubQueryVisitor + { + public override bool CanVisit( QueryModel queryModel ) + { + return queryModel.ResultOperators.Any( x => x is FirstResultOperator || x is LastResultOperator ); + } + + protected override ReqlExpr BuildReql( ReqlExpr reqlExpr, QueryModel queryModel ) + { + reqlExpr = reqlExpr.Nth( queryModel.ResultOperators[0] is FirstResultOperator ? 0 : -1 ); + var resultOperator = (ChoiceResultOperatorBase)queryModel.ResultOperators[0]; + if( resultOperator.ReturnDefaultWhenEmpty ) + reqlExpr = reqlExpr.Default_( (object)null ); + return reqlExpr; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs.meta new file mode 100644 index 000000000..83f7518e2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/FirstSubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c678f74d3d4cb2547a76ae96990b94db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs new file mode 100644 index 000000000..016cc33cf --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs @@ -0,0 +1,11 @@ +using Remotion.Linq; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Linq.WhereClauseParsers.SubQueryVisitor +{ + public interface ISubQueryVisitor + { + bool CanVisit( QueryModel queryModel ); + ReqlExpr Visit( ReqlExpr reqlExpr, QueryModel queryModel ); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs.meta new file mode 100644 index 000000000..ea99d28f2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.Linq/WhereClauseParsers/SubQueryVisitor/ISubQueryVisitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e05c835bd205def4a8157c933b5f5133 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.meta new file mode 100644 index 000000000..db491070d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 441bcdda98c551544a4710798510ab01 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast.meta new file mode 100644 index 000000000..c61cc09de --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3817a16ad2ea504a9e2b2a2581b0412 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs new file mode 100644 index 000000000..b4445cc7f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Ast +{ + /// + /// Extension helpers for working with the AST. + /// + public static class ExtensionHelper + { + internal static JObject ToJObject(this object anonType) + { + return anonType == null ? null : JObject.FromObject(anonType); + } + + internal static IDictionary ToDict(this object anonType) + { + return anonType == null ? null : PropertyHelper.ObjectToDictionary(anonType); + } + /// + /// Uses a collection as parameters for a method call. + /// + /// Same as calling params object[] overload. Instead of specifying each param, ICollection can be used for convenience. + public static object[] AsParams(this ICollection args) + { + return args.OfType().ToArray(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs.meta new file mode 100644 index 000000000..d170de9fb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ExtensionHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4a823fc8988297f4aabe8019ae3310cd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs new file mode 100644 index 000000000..06de9ec99 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs @@ -0,0 +1,45 @@ +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Net; +using RethinkDb.Driver.Proto; + +namespace RethinkDb.Driver.Ast +{ + internal class Poco : ReqlExpr + { + private readonly object obj; + + public Poco(object obj) : base(new TermType(), null, null) + { + this.obj = obj; + } + + + internal class PocoWriter : JTokenWriter + { + public override void WriteStartArray() + { + base.WriteStartArray(); + this.WriteValue(Proto.TermType.MAKE_ARRAY); + base.WriteStartArray(); + } + + public override void WriteEndArray() + { + base.WriteEndArray(); + base.WriteEndArray(); + } + } + + + protected internal override object Build() + { + JToken token; + using( var writer = new PocoWriter() ) + { + Converter.Serializer.Serialize(writer, this.obj); + token = writer.Token; + } + return token; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs.meta new file mode 100644 index 000000000..afa89e103 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Poco.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 977e5c4e6b4f6364d9f1675f07332c78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs new file mode 100644 index 000000000..299502a6d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs @@ -0,0 +1,515 @@ +#pragma warning disable 419 + +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Reflection; + +namespace RethinkDb.Driver.Ast +{ + internal class PropertyHelper + { + // Delegate type for a by-ref property getter + private delegate TValue ByRefFunc(ref TDeclaringType arg); + + private static readonly MethodInfo CallPropertyGetterOpenGenericMethod = + typeof(PropertyHelper).GetTypeInfo().GetDeclaredMethod(nameof(CallPropertyGetter)); + + private static readonly MethodInfo CallPropertyGetterByReferenceOpenGenericMethod = + typeof(PropertyHelper).GetTypeInfo().GetDeclaredMethod(nameof(CallPropertyGetterByReference)); + + private static readonly MethodInfo CallNullSafePropertyGetterOpenGenericMethod = + typeof(PropertyHelper).GetTypeInfo().GetDeclaredMethod(nameof(CallNullSafePropertyGetter)); + + private static readonly MethodInfo CallNullSafePropertyGetterByReferenceOpenGenericMethod = + typeof(PropertyHelper).GetTypeInfo().GetDeclaredMethod(nameof(CallNullSafePropertyGetterByReference)); + + private static readonly MethodInfo CallPropertySetterOpenGenericMethod = + typeof(PropertyHelper).GetTypeInfo().GetDeclaredMethod(nameof(CallPropertySetter)); + + // Using an array rather than IEnumerable, as target will be called on the hot path numerous times. + private static readonly ConcurrentDictionary PropertiesCache = + new ConcurrentDictionary(); + + private static readonly ConcurrentDictionary VisiblePropertiesCache = + new ConcurrentDictionary(); + + private Action _valueSetter; + + /// + /// Initializes a fast . + /// This constructor does not cache the helper. For caching, use . + /// + public PropertyHelper(PropertyInfo property) + { + if( property == null ) + { + throw new ArgumentNullException(nameof(property)); + } + + Property = property; + Name = property.Name; + ValueGetter = MakeFastPropertyGetter(property); + } + + /// + /// Gets the backing . + /// + public PropertyInfo Property { get; } + + /// + /// Gets (or sets in derived types) the property name. + /// + public virtual string Name { get; protected set; } + + /// + /// Gets the property value getter. + /// + public Func ValueGetter { get; } + + /// + /// Gets the property value setter. + /// + public Action ValueSetter + { + get + { + if( _valueSetter == null ) + { + // We'll allow safe races here. + _valueSetter = MakeFastPropertySetter(Property); + } + + return _valueSetter; + } + } + + /// + /// Returns the property value for the specified . + /// + /// The object whose property value will be returned. + /// The property value. + public object GetValue(object instance) + { + return ValueGetter(instance); + } + + /// + /// Sets the property value for the specified . + /// + /// The object whose property value will be set. + /// The property value. + public void SetValue(object instance, object value) + { + ValueSetter(instance, value); + } + + /// + /// Creates and caches fast property helpers that expose getters for every public get property on the + /// underlying type. + /// + /// the instance to extract property accessors for. + /// a cached array of all public property getters from the underlying type of target instance. + /// + public static PropertyHelper[] GetProperties(object instance) + { + return GetProperties(instance.GetType()); + } + + /// + /// Creates and caches fast property helpers that expose getters for every public get property on the + /// specified type. + /// + /// the type to extract property accessors for. + /// a cached array of all public property getters from the type of target instance. + /// + public static PropertyHelper[] GetProperties(Type type) + { + return GetProperties(type, CreateInstance, PropertiesCache); + } + + /// + /// + /// Creates and caches fast property helpers that expose getters for every non-hidden get property + /// on the specified type. + /// + /// + /// excludes properties defined on base types that have been + /// hidden by definitions using the new keyword. + /// + /// + /// The instance to extract property accessors for. + /// + /// A cached array of all public property getters from the instance's type. + /// + public static PropertyHelper[] GetVisibleProperties(object instance) + { + return GetVisibleProperties(instance.GetType(), CreateInstance, PropertiesCache, VisiblePropertiesCache); + } + + /// + /// + /// Creates a caches fast property helpers that expose getters for every non-hidden get property + /// on the specified type. + /// + /// + /// excludes properties defined on base types that have been + /// hidden by definitions using the new keyword. + /// + /// + /// The type to extract property accessors for. + /// + /// A cached array of all public property getters from the type. + /// + public static PropertyHelper[] GetVisibleProperties(Type type) + { + return GetVisibleProperties(type, CreateInstance, PropertiesCache, VisiblePropertiesCache); + } + + /// + /// Creates a single fast property getter. The result is not cached. + /// + /// propertyInfo to extract the getter for. + /// a fast getter. + /// + /// This method is more memory efficient than a dynamically compiled lambda, and about the + /// same speed. + /// + public static Func MakeFastPropertyGetter(PropertyInfo propertyInfo) + { + Debug.Assert(propertyInfo != null); + + return MakeFastPropertyGetter( + propertyInfo, + CallPropertyGetterOpenGenericMethod, + CallPropertyGetterByReferenceOpenGenericMethod); + } + + /// + /// Creates a single fast property getter which is safe for a null input object. The result is not cached. + /// + /// propertyInfo to extract the getter for. + /// a fast getter. + /// + /// This method is more memory efficient than a dynamically compiled lambda, and about the + /// same speed. + /// + public static Func MakeNullSafeFastPropertyGetter(PropertyInfo propertyInfo) + { + Debug.Assert(propertyInfo != null); + + return MakeFastPropertyGetter( + propertyInfo, + CallNullSafePropertyGetterOpenGenericMethod, + CallNullSafePropertyGetterByReferenceOpenGenericMethod); + } + + private static Func MakeFastPropertyGetter( + PropertyInfo propertyInfo, + MethodInfo propertyGetterWrapperMethod, + MethodInfo propertyGetterByRefWrapperMethod) + { + Debug.Assert(propertyInfo != null); + + // Must be a generic method with a Func<,> parameter + Debug.Assert(propertyGetterWrapperMethod != null); + Debug.Assert(propertyGetterWrapperMethod.IsGenericMethodDefinition); + Debug.Assert(propertyGetterWrapperMethod.GetParameters().Length == 2); + + // Must be a generic method with a ByRefFunc<,> parameter + Debug.Assert(propertyGetterByRefWrapperMethod != null); + Debug.Assert(propertyGetterByRefWrapperMethod.IsGenericMethodDefinition); + Debug.Assert(propertyGetterByRefWrapperMethod.GetParameters().Length == 2); + + var getMethod = propertyInfo.GetMethod; + Debug.Assert(getMethod != null); + Debug.Assert(!getMethod.IsStatic); + Debug.Assert(getMethod.GetParameters().Length == 0); + + // Instance methods in the CLR can be turned into static methods where the first parameter + // is open over "target". This parameter is always passed by reference, so we have a code + // path for value types and a code path for reference types. + if( getMethod.DeclaringType.GetTypeInfo().IsValueType ) + { + // Create a delegate (ref TDeclaringType) -> TValue + return MakeFastPropertyGetter( + typeof(ByRefFunc<,>), + getMethod, + propertyGetterByRefWrapperMethod); + } + else + { + // Create a delegate TDeclaringType -> TValue + return MakeFastPropertyGetter( + typeof(Func<,>), + getMethod, + propertyGetterWrapperMethod); + } + } + + private static Func MakeFastPropertyGetter( + Type openGenericDelegateType, + MethodInfo propertyGetMethod, + MethodInfo openGenericWrapperMethod) + { + var typeInput = propertyGetMethod.DeclaringType; + var typeOutput = propertyGetMethod.ReturnType; + + var delegateType = openGenericDelegateType.MakeGenericType(typeInput, typeOutput); + var propertyGetterDelegate = propertyGetMethod.CreateDelegate(delegateType); + + var wrapperDelegateMethod = openGenericWrapperMethod.MakeGenericMethod(typeInput, typeOutput); + var accessorDelegate = wrapperDelegateMethod.CreateDelegate( + typeof(Func), + propertyGetterDelegate); + + return (Func)accessorDelegate; + } + + /// + /// Creates a single fast property setter for reference types. The result is not cached. + /// + /// propertyInfo to extract the setter for. + /// a fast getter. + /// + /// This method is more memory efficient than a dynamically compiled lambda, and about the + /// same speed. This only works for reference types. + /// + public static Action MakeFastPropertySetter(PropertyInfo propertyInfo) + { + Debug.Assert(propertyInfo != null); + Debug.Assert(!propertyInfo.DeclaringType.GetTypeInfo().IsValueType); + + var setMethod = propertyInfo.SetMethod; + Debug.Assert(setMethod != null); + Debug.Assert(!setMethod.IsStatic); + Debug.Assert(setMethod.ReturnType == typeof(void)); + var parameters = setMethod.GetParameters(); + Debug.Assert(parameters.Length == 1); + + // Instance methods in the CLR can be turned into static methods where the first parameter + // is open over "target". This parameter is always passed by reference, so we have a code + // path for value types and a code path for reference types. + var typeInput = setMethod.DeclaringType; + var parameterType = parameters[0].ParameterType; + + // Create a delegate TDeclaringType -> { TDeclaringType.Property = TValue; } + var propertySetterAsAction = + setMethod.CreateDelegate(typeof(Action<,>).MakeGenericType(typeInput, parameterType)); + var callPropertySetterClosedGenericMethod = + CallPropertySetterOpenGenericMethod.MakeGenericMethod(typeInput, parameterType); + var callPropertySetterDelegate = + callPropertySetterClosedGenericMethod.CreateDelegate( + typeof(Action), propertySetterAsAction); + + return (Action)callPropertySetterDelegate; + } + + /// + /// Given an object, adds each instance property with a public get method as a key and its + /// associated value to a dictionary. + /// + /// If the object is already an IDictionary{string,object} instance, then a copy + /// is returned. + /// + /// + /// The implementation of PropertyHelper will cache the property accessors per-type. This is + /// faster when the same type is used multiple times with ObjectToDictionary. + /// + public static IDictionary ObjectToDictionary(object value) + { + var dictionary = value as IDictionary; + if( dictionary != null ) + { + return new Dictionary(dictionary, StringComparer.OrdinalIgnoreCase); + } + + dictionary = new Dictionary(StringComparer.OrdinalIgnoreCase); + + if( value != null ) + { + foreach( var helper in GetProperties(value) ) + { + dictionary[helper.Name] = helper.GetValue(value); + } + } + + return dictionary; + } + + private static PropertyHelper CreateInstance(PropertyInfo property) + { + return new PropertyHelper(property); + } + + // Called via reflection + private static object CallPropertyGetter( + Func getter, + object target) + { + return getter((TDeclaringType)target); + } + + // Called via reflection + private static object CallPropertyGetterByReference( + ByRefFunc getter, + object target) + { + var unboxed = (TDeclaringType)target; + return getter(ref unboxed); + } + + // Called via reflection + private static object CallNullSafePropertyGetter( + Func getter, + object target) + { + if( target == null ) + { + return null; + } + + return getter((TDeclaringType)target); + } + + // Called via reflection + private static object CallNullSafePropertyGetterByReference( + ByRefFunc getter, + object target) + { + if( target == null ) + { + return null; + } + + var unboxed = (TDeclaringType)target; + return getter(ref unboxed); + } + + private static void CallPropertySetter( + Action setter, + object target, + object value) + { + setter((TDeclaringType)target, (TValue)value); + } + + protected static PropertyHelper[] GetVisibleProperties( + Type type, + Func createPropertyHelper, + ConcurrentDictionary allPropertiesCache, + ConcurrentDictionary visiblePropertiesCache) + { + PropertyHelper[] result; + if( visiblePropertiesCache.TryGetValue(type, out result) ) + { + return result; + } + + // The simple and common case, this is normal POCO object - no need to allocate. + var allPropertiesDefinedOnType = true; + var allProperties = GetProperties(type, createPropertyHelper, allPropertiesCache); + foreach( var propertyHelper in allProperties ) + { + if( propertyHelper.Property.DeclaringType != type ) + { + allPropertiesDefinedOnType = false; + break; + } + } + + if( allPropertiesDefinedOnType ) + { + result = allProperties; + visiblePropertiesCache.TryAdd(type, result); + return result; + } + + // There's some inherited properties here, so we need to check for hiding via 'new'. + var filteredProperties = new List(allProperties.Length); + foreach( var propertyHelper in allProperties ) + { + var declaringType = propertyHelper.Property.DeclaringType; + if( declaringType == type ) + { + filteredProperties.Add(propertyHelper); + continue; + } + + // If this property was declared on a base type then look for the definition closest to the + // the type to see if we should include it. + var ignoreProperty = false; + + // Walk up the hierarchy until we find the type that actually declares this + // PropertyInfo. + var currentTypeInfo = type.GetTypeInfo(); + var declaringTypeInfo = declaringType.GetTypeInfo(); + while( currentTypeInfo != null && currentTypeInfo != declaringTypeInfo ) + { + // We've found a 'more proximal' public definition + var declaredProperty = currentTypeInfo.GetDeclaredProperty(propertyHelper.Name); + if( declaredProperty != null ) + { + ignoreProperty = true; + break; + } + + currentTypeInfo = currentTypeInfo.BaseType?.GetTypeInfo(); + } + + if( !ignoreProperty ) + { + filteredProperties.Add(propertyHelper); + } + } + + result = filteredProperties.ToArray(); + visiblePropertiesCache.TryAdd(type, result); + return result; + } + + protected static PropertyHelper[] GetProperties( + Type type, + Func createPropertyHelper, + ConcurrentDictionary cache) + { + // Unwrap nullable types. This means Nullable.Value and Nullable.HasValue will not be + // part of the sequence of properties returned by this method. + type = Nullable.GetUnderlyingType(type) ?? type; + + PropertyHelper[] helpers; + if( !cache.TryGetValue(type, out helpers) ) + { + // We avoid loading indexed properties using the Where statement. + var properties = type.GetRuntimeProperties().Where(IsInterestingProperty); + + var typeInfo = type.GetTypeInfo(); + if( typeInfo.IsInterface ) + { + // Reflection does not return information about inherited properties on the interface itself. + properties = properties.Concat(typeInfo.ImplementedInterfaces.SelectMany( + interfaceType => interfaceType.GetRuntimeProperties().Where(IsInterestingProperty))); + } + + helpers = properties.Select(p => createPropertyHelper(p)).ToArray(); + cache.TryAdd(type, helpers); + } + + return helpers; + } + + // Indexed properties are not useful (or valid) for grabbing properties off an object. + private static bool IsInterestingProperty(PropertyInfo property) + { + return property.GetIndexParameters().Length == 0 && + property.GetMethod != null && + property.GetMethod.IsPublic && + !property.GetMethod.IsStatic; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs.meta new file mode 100644 index 000000000..de9b66488 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/PropertyHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1dffb6ae397451d4984cf8a0dce3796e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs new file mode 100644 index 000000000..d1112aa4f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs @@ -0,0 +1,80 @@ +#pragma warning disable 1591 + +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; + +namespace RethinkDb.Driver.Ast +{ + /* An instance for a query that has been sent to the server. Keeps + * track of its token, the args to .run() it was called with, and its + * query type. + */ + + /// + /// DO NOT USE DIRECTLY + /// + public class Query + { + public QueryType Type { get; } + public long Token { get; } + public ReqlAst Term { get; } + public OptArgs GlobalOptions { get; } + + public Query(QueryType type, long token, ReqlAst term, OptArgs globalOptions) + { + this.Type = type; + this.Token = token; + this.Term = term; + this.GlobalOptions = globalOptions; + } + + public Query(QueryType type, long token) : this(type, token, null, null) + { + } + + public static Query Stop(long token) + { + return new Query(QueryType.STOP, token, null, null); + } + + public static Query Continue(long token) + { + return new Query(QueryType.CONTINUE, token, null, null); + } + + public static Query Start(long token, ReqlAst term, OptArgs globalOptions) + { + return new Query(QueryType.START, token, term, globalOptions); + } + + public static Query ServerInfo(long token) + { + return new Query(QueryType.SERVER_INFO, token, null, null); + } + + public static Query NoReplyWait(long token) + { + return new Query(QueryType.NOREPLY_WAIT, token, null, null); + } + + public virtual string Serialize() + { + var queryArr = new JArray(); + + queryArr.Add(Type); + + if( Term != null ) + { + queryArr.Add(Term.Build()); + } + if( GlobalOptions != null ) + { + queryArr.Add(ReqlAst.BuildOptarg(GlobalOptions)); + } + + return queryArr.ToString(Formatting.None); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs.meta new file mode 100644 index 000000000..25eab489d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Query.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cef144145ff323247ab108fe4eaa76c5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs new file mode 100644 index 000000000..baf9f5fdc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs @@ -0,0 +1,450 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Net; +using RethinkDb.Driver.Proto; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Ast +{ + /// + /// Base class for all reql queries. + /// + public class ReqlAst + { +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + protected internal TermType TermType { get; } + protected internal Arguments Args { get; } + protected internal OptArgs OptArgs { get; } + + protected internal ReqlAst(TermType termType, Arguments args, OptArgs optargs) + { + this.TermType = termType; + this.Args = args ?? new Arguments(); + this.OptArgs = optargs ?? new OptArgs(); + } + + protected internal virtual object Build() + { + // Create a JSON object from the Ast + JArray list = new JArray(); + list.Add(TermType); + if( Args.Count > 0 ) + { + var collect = Args.Select(a => { return a.Build(); }); + list.Add(new JArray(collect)); + } + else + { + list.Add(new JArray()); + } + + if( OptArgs.Count > 0 ) + { + list.Add(BuildOptarg(this.OptArgs)); + } + return list; + } + + protected internal static JObject BuildOptarg(OptArgs opts) + { + var dict = opts.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Build()); + return JObject.FromObject(dict); + } +#pragma warning restore CS1591 // Missing XML comment for publicly visible type or member + + #region DYNAMIC LANGUAGE RUNTIME (DLR) RUNNERS + + /// + /// Runs the query on the connection. If you know the response type + /// of your query, T (SUCCESS_ATOM) or Cursor[T] (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) + /// it's recommended to use `.RunAtom`, `.RunCursor` or `.RunResult` helpers + /// as they offer a slight edge in performance since both bypass the + /// dynamic language runtime execution engine. + /// + /// Returns T or Cursor[T] + public virtual Task RunAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return conn.RunAsync(this, runOpts, cancelToken); + } + + /// + /// Runs the query on the connection. If you know the response type + /// of your query, T (SUCCESS_ATOM) or Cursor[T] (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) + /// it's recommended to use `.RunAtom`, `.RunCursor` or `.RunResult` helpers + /// as they offer a slight edge in performance since both bypass the + /// dynamic language runtime execution engine. + /// + /// Returns T or Cursor[T] + public virtual Task RunAsync(IConnection conn, CancellationToken cancelToken) + { + return RunAsync(conn, null, cancelToken); + } + + + /// + /// Runs the query on the connection. If you know the response type + /// of your query, T (SUCCESS_ATOM) or Cursor[T] (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) + /// it's recommended to use `.RunAtom`, `.RunCursor` or `.RunResult` helpers + /// as they offer a slight edge in performance since both bypass the + /// dynamic language runtime execution engine. + /// + /// Returns T or Cursor[T] + /// /// connection + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return RunAsync(conn, runOpts, cancelToken); + } + + /// + /// Runs the query on the connection. If you know the response type + /// of your query, T (SUCCESS_ATOM) or Cursor[T] (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) + /// it's recommended to use `.RunAtom`, `.RunCursor` or `.RunResult` helpers + /// as they offer a slight edge in performance since both bypass the + /// dynamic language runtime execution engine. + /// + /// Returns T or Cursor[T] + /// /// connection + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunAsync(IConnection conn, CancellationToken cancelToken) + { + return RunAsync(conn, null, cancelToken); + } + + + /// + /// Runs the query on the connection. If you know the response type + /// of your query, T (SUCCESS_ATOM) or Cursor[T] (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) + /// it's recommended to use `.RunAtom`, `.RunCursor` or `.RunResult` helpers + /// as they offer a slight edge in performance since both bypass the + /// dynamic language runtime execution engine. + /// + /// Returns T or Cursor[T] + public virtual dynamic Run(IConnection conn, object runOpts = null) + { + return RunAsync(conn, runOpts).WaitSync(); + } + + /// + /// Runs the query on the connection. If you know the response type + /// of your query, T (SUCCESS_ATOM) or Cursor[T] (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) + /// it's recommended to use `.RunAtom`, `.RunCursor` or `.RunResult` helpers + /// as they offer a slight edge in performance since both bypass the + /// dynamic language runtime execution engine. + /// + /// Returns T or Cursor[T] + public virtual dynamic Run(IConnection conn, object runOpts = null) + { + return Run(conn, runOpts); + } + + #endregion + + #region RESPONSE TYPED RUNNERS + + /// + /// Executes a query with no expected response. Useful for fire-and-forget queries like insert, update. + /// + public void RunNoReply(IConnection conn, object runOpts = null) + { + conn.RunNoReply(this, runOpts); + } + + /// + /// Use this method if you're expecting a cursor (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) response + /// from your query. This method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. + /// + /// + /// connection + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + /// A Cursor + public virtual Task> RunCursorAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return conn.RunCursorAsync(this, runOpts, cancelToken); + } + + /// + /// Use this method if you're expecting a cursor (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) response + /// from your query. This method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. + /// + /// + /// connection + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + /// A Cursor + public virtual Task> RunCursorAsync(IConnection conn, CancellationToken cancelToken) + { + return RunCursorAsync(conn, null, cancelToken); + } + + /// + /// Use this method if you're expecting a cursor (SUCCESS_SEQUENCE or SUCCESS_PARTIAL) response + /// from your query. This method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. + /// + /// + /// connection + /// global anonymous type optional arguments + /// A Cursor + public virtual Cursor RunCursor(IConnection conn, object runOpts = null) + { + return RunCursorAsync(conn, runOpts).WaitSync(); + } + + /// + /// Use this method if you're expecting SUCCESS_ATOM response from your query. This + /// method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. + /// + /// connection + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunAtomAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return conn.RunAtomAsync(this, runOpts, cancelToken); + } + + /// + /// Use this method if you're expecting SUCCESS_ATOM response from your query. This + /// method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. + /// + /// connection + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunAtomAsync(IConnection conn, CancellationToken cancelToken) + { + return RunAtomAsync(conn, null, cancelToken); + } + + /// + /// Use this method if you're expecting SUCCESS_ATOM response from your query. This + /// method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. + /// + /// connection + /// global anonymous type optional arguments + public virtual T RunAtom(IConnection conn, object runOpts = null) + { + return RunAtomAsync(conn, runOpts).WaitSync(); + } + + /// + /// Use this method if you're expecting SUCCESS_ATOM or SUCCESS_SEQUENCE response from your query. This + /// method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. Consider using RunAtom or RunCursor if your + /// response is either SUCCESS_ATOM or SUCCESS_SEQUENCE respectively. Exercise caution using this method + /// with large datasets as the server can switch responses from SUCESS_SEQUENCE to SUCCESS_PARTIAL for the + /// same exact query. Refer to the online documentation for this run helper. + /// + /// connection + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunResultAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return conn.RunResultAsync(this, runOpts, cancelToken); + } + + /// + /// Use this method if you're expecting SUCCESS_ATOM or SUCCESS_SEQUENCE response from your query. This + /// method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. Consider using RunAtom or RunCursor if your + /// response is either SUCCESS_ATOM or SUCCESS_SEQUENCE respectively. Exercise caution using this method + /// with large datasets as the server can switch responses from SUCESS_SEQUENCE to SUCCESS_PARTIAL for the + /// same exact query. Refer to the online documentation for this run helper. + /// + /// connection + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunResultAsync(IConnection conn, CancellationToken cancelToken) + { + return RunResultAsync(conn, null, cancelToken); + } + + /// + /// Use this method if you're expecting SUCCESS_ATOM or SUCCESS_SEQUENCE response from your query. This + /// method offers a slight edge in performance without the need for the + /// dynamic language runtime like the run() method uses. Consider using RunAtom or RunCursor if your + /// response is either SUCCESS_ATOM or SUCCESS_SEQUENCE respectively. Exercise caution using this method + /// with large datasets as the server can switch responses from SUCESS_SEQUENCE to SUCCESS_PARTIAL for the + /// same exact query. Refer to the online documentation for this run helper. + /// + /// connection + /// global anonymous type optional arguments + public virtual T RunResult(IConnection conn, object runOpts = null) + { + return RunResultAsync(conn, runOpts).WaitSync(); + } + + #endregion + + #region EXTRA RUN HELPERS + + /// + /// OBSOLETE: Please use the .RunWriteAsync() method instead. + /// + [Obsolete("The .RunResultAsync() method has been renamed to .RunWriteAsync(). Please use the new method name instead.", error: false)] + public virtual Task RunResultAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return RunWriteAsync(conn, runOpts, cancelToken); + } + + /// + /// OBSOLETE: Please use .RunWriteAsync() method instead. + /// + [Obsolete("The .RunResultAsync() method has been renamed to .RunWriteAsync(). Please use the new method name instead.", error: false)] + public virtual Task RunResultAsync(IConnection conn, CancellationToken cancelToken) + { + return RunWriteAsync(conn, null, cancelToken); + } + + /// + /// OBSOLETE: Please use .RunWrite() method instead. + /// + [Obsolete("The .RunResult() method has been renamed to .RunWrite(). Please use the new method name instead.", error: false)] + public virtual Result RunResult(IConnection conn, object runOpts = null) + { + return RunWriteAsync(conn, runOpts).WaitSync(); + } + + + /// + /// Helper shortcut for DML type of queries that returns # of inserts, deletes, errors. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// connection + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunWriteAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return conn.RunAtomAsync(this, runOpts, cancelToken); + } + + /// + /// Helper shortcut for DML type of queries that returns # of inserts, deletes, errors. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// connection + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunWriteAsync(IConnection conn, CancellationToken cancelToken) + { + return RunWriteAsync(conn, null, cancelToken); + } + + /// + /// Helper shortcut for DML type of queries that returns # of inserts, deletes, errors. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// connection + /// global anonymous type optional arguments + public virtual Result RunWrite(IConnection conn, object runOpts = null) + { + return RunWriteAsync(conn, runOpts).WaitSync(); + } + + + + /// + /// Runs a query on the server and returns the raw object in an unsafe way + /// with minimal client-side processing. The unbridled use of this method can + /// lead to memory leaks on both the client and server. This method should only + /// be used in well-understood and advanced scenarios. + /// + /// The connection object + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task RunUnsafeAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return conn.RunUnsafeAsync(this, runOpts, cancelToken); + } + + + + /// + /// Helper shortcut for change feeds, use if your query is expecting an infinite changes() stream. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// The document type of new/old value + /// connection + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task>> RunChangesAsync(IConnection conn, object runOpts = null, CancellationToken cancelToken = default) + { + return conn.RunCursorAsync>(this, runOpts, cancelToken); + } + + /// + /// Helper shortcut for change feeds, use if your query is expecting an infinite changes() stream. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// The document type of new/old value + /// connection + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task>> RunChangesAsync(IConnection conn, CancellationToken cancelToken) + { + return RunChangesAsync(conn, null, cancelToken); + } + + /// + /// Helper shortcut for change feeds, use if your query is expecting an infinite changes() stream. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// The document type of new/old value + /// connection + /// global anonymous type optional arguments + public virtual Cursor> RunChanges(IConnection conn, object runOpts = null) + { + return RunChangesAsync(conn, runOpts).WaitSync(); + } + + #endregion + + /// + /// Helper shortcut for grouping queries. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// The key type of how items are grouped + /// The type of items + /// connection + /// global anonymous type optional arguments + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual async Task>> RunGroupingAsync(IConnection conn, object runOpts = null, + CancellationToken cancelToken = default) + { + var tsk = await RunAtomAsync>(conn, runOpts, cancelToken).ConfigureAwait(false); + return tsk; + } + + /// + /// Helper shortcut for grouping queries. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// The key type of how items are grouped + /// The type of items + /// connection + /// Cancellation token used to stop *waiting* for a query response. The cancellation token does not cancel the query's execution on the server. + public virtual Task>> RunGroupingAsync(IConnection conn, CancellationToken cancelToken) + { + return RunGroupingAsync(conn, null, cancelToken); + } + + /// + /// Helper shortcut for grouping queries. + /// This method bypasses the dynamic language runtime for extra performance. + /// + /// The key type of how items are grouped + /// The type of items + /// connection + /// global anonymous type optional arguments + public virtual IEnumerable> RunGrouping(IConnection conn, object runOpts = null) + { + return RunAtomAsync>(conn, runOpts).WaitSync(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs.meta new file mode 100644 index 000000000..100799dd3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlAst.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 525d7b2d52e0ac044a7b5761bed6ef78 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs new file mode 100644 index 000000000..e5736f887 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs @@ -0,0 +1,194 @@ +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + + +using System; + +namespace RethinkDb.Driver.Ast +{ + //Partial class for overloads expression overloads! :) + //Cool man. Yeeah. That's right. So 1337. +#pragma warning disable 660,661 + public partial class ReqlExpr +#pragma warning restore 660,661 + { + #region INDEXERS, READ WARNING + // WARNING: + // ANY ADDITIONAL INDEXERS YOU SPECIFY HERE MUST BE NEWLY + // IMPLEMENTED IN THE AST SUBCLASS TEMPLATE TO BE PROPERLY + // RESOLVED DURING OPERATOR RESOLUTION. REGEN OF THE AST + // IS REQUIRED. + // + // SEE ReqlExprHelpers SECTION IN AstSublcassTemplate FOR + // MORE INFORMATION. + /// + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public Bracket this[string bracket] => this.bracket(bracket); + + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public Bracket this[int bracket] => this.bracket(bracket); + #endregion + + public static ReqlExpr operator >(ReqlExpr a, ReqlExpr b) + { + return a.gt(b); + } + + public static ReqlExpr operator <(ReqlExpr a, ReqlExpr b) + { + return a.lt(b); + } + + public static ReqlExpr operator >=(ReqlExpr a, ReqlExpr b) + { + return a.ge(b); + } + + public static ReqlExpr operator <=(ReqlExpr a, ReqlExpr b) + { + return a.le(b); + } + + public static ReqlExpr operator ==(ReqlExpr a, ReqlExpr b) + { + return a.eq(b); + } + + public static ReqlExpr operator !=(ReqlExpr a, ReqlExpr b) + { + return a.ne(b); + } + + public static ReqlExpr operator +(ReqlExpr a, ReqlExpr b) + { + return a.add(b); + } + + public static ReqlExpr operator -(ReqlExpr a, ReqlExpr b) + { + return a.sub(b); + } + + public static ReqlExpr operator *(ReqlExpr a, ReqlExpr b) + { + return a.mul(b); + } + + public static ReqlExpr operator /(ReqlExpr a, ReqlExpr b) + { + return a.div(b); + } + + public static ReqlExpr operator %(ReqlExpr a, ReqlExpr b) + { + return a.mod(b); + } + + public static ReqlExpr operator !(ReqlExpr a) + { + return a.not(); + } + + + //&& and || might be a bit tricky here. + public static bool operator false(ReqlExpr a) + { + return false; + } + + public static bool operator true(ReqlExpr a) + { + return false; //forces evaluation of & and | ? + //this might be a bug here. + } + + public static ReqlExpr operator &(ReqlExpr a, ReqlExpr b) + { + return a.and(b); + } + + public static ReqlExpr operator |(ReqlExpr a, ReqlExpr b) + { + return a.or(b); + } + + + //Can we do implicit operators??? + public static implicit operator ReqlExpr(string a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(int a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(uint a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(byte a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(sbyte a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(long a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(ulong a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(double a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(decimal a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(float a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(DateTime a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(DateTimeOffset a) + { + return Util.ToReqlExpr(a); + } + + public static implicit operator ReqlExpr(Delegate a) + { + return Util.ToReqlExpr(a); + } + + public string ToRawString() + { + return ReqlRaw.ToRawString(this); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs.meta new file mode 100644 index 000000000..95a9e383a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlExpr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 32b53a1e5fbf70e48bd6200f09e30341 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs new file mode 100644 index 000000000..f6ee2ac9b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs @@ -0,0 +1,116 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; + +namespace RethinkDb.Driver.Ast +{ + /// + /// Used to inject raw protocol strings when the AST is dumped on the wire. + /// + public class ReqlRawExpr : ReqlExpr + { + private string RawProtocol { get; } + + /// + /// Create an AST mid-flight with the raw protocol string. + /// + /// Raw protocol string from ReqlAst.Build() + internal ReqlRawExpr(string rawProtocol) : base(new TermType(), null, null) + { + this.RawProtocol = rawProtocol; + } + + /// + /// Return the JToken representation of the raw protocol + /// + protected internal override object Build() + { + return JToken.Parse(this.RawProtocol); + } + } + + /// + /// Used to inject raw protocol strings when the AST is dumped on the wire. + /// + public class ReqlRaw : ReqlAst + { + private string RawProtocol { get; } + + /// + /// Create an AST mid-flight with the raw protocol string. + /// + /// Raw protocol string from ReqlAst.Build() + internal ReqlRaw(string rawProtocol) : base(new TermType(), null, null) + { + this.RawProtocol = rawProtocol; + } + + /// + /// Return the JToken representation of the raw protocol + /// + protected internal override object Build() + { + return JToken.Parse(this.RawProtocol); + } + + private const string RawTokenType = "$reql_reqlraw$"; + + /// + /// Convert an AST item into a raw protocol string representation. + /// Useful for serialization. + /// + /// Can be anything, ReqlFunction or otherwise + public static string ToRawString(object astItem) + { + var list = new List(); + var token = Util.ToReqlAst(astItem, o => HookFuncTypes(o, list)).Build() as JToken; + var query = token.ToString(Formatting.None); + //pack + return $"{string.Join("|", list)}{RawTokenType}{query}"; + } + + internal static string HydrateProtocolString(string reqlRawString) + { + var tokenLocation = reqlRawString.IndexOf(RawTokenType, StringComparison.Ordinal); + var guidStrings = reqlRawString.Substring(0, tokenLocation); + var query = reqlRawString.Substring(tokenLocation + RawTokenType.Length); + + //unpack + var replaceTokens = guidStrings.Split('|') + .Select(g => new { GuidString = $@"""{g}""", VarId = Func.NextVarId() }); + + foreach (var token in replaceTokens) + { + query = query.Replace(token.GuidString, token.VarId.ToString()); + } + return query; + } + + /// + /// Convert a raw protocol string into an AST term that will + /// be injected when the AST is serialized. + /// + /// The raw protocol string to inject + /// A raw AST term + public static ReqlRaw FromRawString(string reqlRawString) + { + var query = HydrateProtocolString(reqlRawString); + return new ReqlRaw(query); + } + + + private static ReqlAst HookFuncTypes(object val, List context) + { + var del = val as Delegate; + if( del != null ) + { + return Func.Serialize(del, context); + } + return null; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs.meta new file mode 100644 index 000000000..d1a88c50c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/ReqlRaw.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 97581729a9e4faf43bd2272864fd6bc7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs new file mode 100644 index 000000000..6c122e254 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs @@ -0,0 +1,52 @@ +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + +using System; +using RethinkDb.Driver.Net.JsonConverters; + +namespace RethinkDb.Driver.Ast +{ + public partial class TopLevel + { + /// + /// Type-safe helper method for R.Iso8601 + /// + public Iso8601 Iso8601(DateTime? datetime) + { + var str = datetime?.ToString("o"); + return Ast.Iso8601.FromString(str); + } + /// + /// Type-safe helper method for R.Iso8601 + /// + public Iso8601 Iso8601(DateTimeOffset? datetime) + { + var str = datetime?.ToString("o"); + return Ast.Iso8601.FromString(str); + } + + /// + /// Type-safe helper for R.EpochTime + /// + public EpochTime EpochTime(DateTime? datetime) + { + var ticks = datetime?.ToUniversalTime().Ticks; + var epoch = ReqlDateTimeConverter.ToUnixTime(ticks.Value); + return EpochTime(epoch); + } + /// + /// Type-safe helper for R.EpochTime + /// + public EpochTime EpochTime(DateTimeOffset? datetime) + { + var ticks = datetime?.UtcTicks; + var epoch = ReqlDateTimeConverter.ToUnixTime(ticks.Value); + return EpochTime(epoch); + } + + public ReqlRawExpr FromRawString(string reqlRawString) + { + var rawProtocol = ReqlRaw.HydrateProtocolString(reqlRawString); + return new ReqlRawExpr(rawProtocol); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs.meta new file mode 100644 index 000000000..10461235b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/TopLevel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d17489d39926b8b4096c3d0f3d00600c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs new file mode 100644 index 000000000..b4ccaa637 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs @@ -0,0 +1,142 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Model; + +namespace RethinkDb.Driver.Ast +{ + internal static class Util + { + public static ReqlAst ToReqlAst(object val) + { + return ToReqlAst(val, 100, null); + } + public static ReqlAst ToReqlAst(object val, Func hook) + { + return ToReqlAst(val, 100, hook); + } + + public static ReqlExpr ToReqlExpr(object val) + { + var converted = ToReqlAst(val); + var reqlAst = converted as ReqlExpr; + if( !ReferenceEquals(reqlAst, null) ) + { + return reqlAst; + } + throw new ReqlDriverError($"Cannot convert {val} to ReqlExpr"); + } + + private static ReqlAst ToReqlAst(object val, int remainingDepth, Func hook = null ) + { + if( remainingDepth <= 0 ) + { + throw new ReqlDriverCompileError("Recursion limit reached converting to ReqlAst"); + } + if( hook != null ) + { + var converted = hook(val); + if( !ReferenceEquals(converted, null) ) + { + return converted; + } + } + var ast = val as ReqlAst; + if( !ReferenceEquals(ast, null) ) + { + return ast; + } + + if( val is JToken token ) + { + return new Poco(token); + } + + if( val is IList lst ) + { + Arguments innerValues = new Arguments(); + foreach( object innerValue in lst ) + { + innerValues.Add(ToReqlAst(innerValue, remainingDepth - 1)); + } + return new MakeArray(innerValues, null); + } + + if( val is IDictionary dict ) + { + var obj = new Dictionary(); + foreach( var keyObj in dict.Keys ) + { + var key = keyObj as string; + if( key == null ) + { + throw new ReqlDriverCompileError("Object keys can only be strings"); + } + + obj[key] = ToReqlAst(dict[keyObj]); + } + return MakeObj.fromMap(obj); + } + + if( val is Delegate del ) + { + return Func.FromLambda(del); + } + + var dt = val as DateTime?; + if( dt != null ) + { + return new Poco(dt); + } + var dto = val as DateTimeOffset?; + if( dto != null ) + { + return new Poco(dto); + } + + var @int = val as int?; + if( @int != null ) + { + return new Datum(@int); + } + + if( IsNumber(val) ) + { + return new Datum(val); + } + + var @bool = val as bool?; + if( @bool != null ) + { + return new Datum(@bool); + } + + if( val is string str ) + { + return new Datum(str); + } + if( val == null ) + { + return new Datum(null); + } + + return new Poco(val); + } + + public static bool IsNumber(object value) + { + return value is sbyte + || value is byte //maybe have char here? + || value is short + || value is ushort + || value is int + || value is uint + || value is long + || value is ulong + || value is float + || value is double + || value is decimal; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs.meta new file mode 100644 index 000000000..e51235ee0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Ast/Util.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82410c8fb9920e940aa61c94125dd688 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs new file mode 100644 index 000000000..edea9ca7b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs @@ -0,0 +1,95 @@ +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; + +namespace RethinkDb.Driver +{ + internal class ErrorBuilder + { + internal string Msg { get; } + internal ResponseType? ResponseType { get; } + internal Backtrace Backtrace { get; set; } + internal ErrorType? ErrorType { get; set; } + internal ReqlAst Term { get; set; } + + public ErrorBuilder(string msg, ResponseType responseType) + { + this.Msg = msg; + this.ResponseType = responseType; + } + + public virtual ErrorBuilder SetBacktrace(Backtrace backtrace) + { + this.Backtrace = backtrace; + return this; + } + + public virtual ErrorBuilder SetErrorType(ErrorType errorType) + { + this.ErrorType = errorType; + return this; + } + + public virtual ErrorBuilder SetTerm(Query query) + { + this.Term = query.Term; + return this; + } + + public virtual ReqlError Build() + { + ReqlError con; + switch( ResponseType ) + { + case Proto.ResponseType.CLIENT_ERROR: + con = new ReqlClientError(Msg); + break; + case Proto.ResponseType.COMPILE_ERROR: + con = new ReqlServerCompileError(Msg); + break; + case Proto.ResponseType.RUNTIME_ERROR: + { + switch( ErrorType ) + { + case Proto.ErrorType.INTERNAL: + con = new ReqlInternalError(Msg); + break; + case Proto.ErrorType.RESOURCE_LIMIT: + con = new ReqlResourceLimitError(Msg); + break; + case Proto.ErrorType.QUERY_LOGIC: + con = new ReqlQueryLogicError(Msg); + break; + case Proto.ErrorType.NON_EXISTENCE: + con = new ReqlNonExistenceError(Msg); + break; + case Proto.ErrorType.OP_FAILED: + con = new ReqlOpFailedError(Msg); + break; + case Proto.ErrorType.OP_INDETERMINATE: + con = new ReqlOpIndeterminateError(Msg); + break; + case Proto.ErrorType.USER: + con = new ReqlUserError(Msg); + break; + case Proto.ErrorType.PERMISSION_ERROR: + con = new ReqlPermissionError(Msg); + break; + default: + con = new ReqlRuntimeError(Msg); + break; + } + break; + } + default: + con = new ReqlError(Msg); + break; + } + + con.Backtrace = this.Backtrace; + con.Term = this.Term; + + return con; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs.meta new file mode 100644 index 000000000..97d912f0c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ErrorBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0c527493cc42ca048966cf4d2da9aed2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras.meta new file mode 100644 index 000000000..ce26d6ca0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bdf576eeb0526ec4aad06928661a909c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao.meta new file mode 100644 index 000000000..fa21658d7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 67b37b717eafc6542b57ccd0eb51a695 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs new file mode 100644 index 000000000..13a6c37a3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs @@ -0,0 +1,31 @@ +using Newtonsoft.Json; + +namespace RethinkDb.Driver.Extras.Dao +{ + /// + /// Interface for Document of IdT + /// + /// Type of ID property + public interface IDocument + { + /// + /// The Id of the document + /// + IdT Id { get; set; } + } + + /// + /// All Documents (aka. domain objects / entities) should derive from Document of IdT + /// + /// Type of Id property + public abstract class Document : IDocument + { + /// + /// The Id of the document + /// + [JsonProperty("id", + NullValueHandling = NullValueHandling.Ignore, + DefaultValueHandling = DefaultValueHandling.Ignore)] + public virtual IdT Id { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs.meta new file mode 100644 index 000000000..4df300d2a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/Document.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09071cad0d60ac147aa6867358676b9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs new file mode 100644 index 000000000..7a582d779 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs @@ -0,0 +1,84 @@ +using System.Threading.Tasks; + +namespace RethinkDb.Driver.Extras.Dao +{ + /// + /// Document Access Object interface + /// + /// Document entity + /// Type of Id property + public interface IDao + { + /// + /// Get a document by Id. + /// + T GetById(IdT id); + + /// + /// Get a document by Id. + /// + Task GetByIdAsync(IdT id); + + ///// + ///// Get all documents by Id + ///// + ///// The Ids of the documents + //IEnumerable GetAllById(params IdT[] ids); + + /// + /// Save document. If the document exists, an exception will be thrown. Returns and deserializes the returned document. + /// + /// Returns and deserializes the returned document + T Save(T doc); + + /// + /// Save document. If the document exists, an exception will be thrown. Returns and deserializes the returned document. + /// + /// Returns and deserializes the returned document + Task SaveAsync(T doc); + + /// + /// Updates an existing document. If the document does not exist, an exception will be thrown. + /// + void Update(T doc); + + /// + /// Updates an existing document. If the document does not exist, an exception will be thrown. + /// + Task UpdateAsync(T doc); + + /// + /// Saves or updates a document. If the document doesn't exist, it will be saved. If the document exists, it will be updated. + /// + /// + T SaveOrUpdate(T doc); + + /// + /// Saves or updates a document. If the document doesn't exist, it will be saved. If the document exists, it will be updated. + /// + /// + Task SaveOrUpdateAsync(T doc); + + /// + /// Deletes a document. + /// + void Delete(T doc); + + /// + /// Deletes a document. + /// + Task DeleteAsync(T doc); + + /// + /// Delete a document by Id. + /// + /// + void DeleteById(IdT id); + + /// + /// Delete a document by Id. + /// + /// + Task DeleteByIdAsync(IdT id); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs.meta new file mode 100644 index 000000000..7511d5c5b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/IDao.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b2c7d437869a40c418b05f65cff8eb6f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs new file mode 100644 index 000000000..1299146fd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs @@ -0,0 +1,209 @@ +using System.Threading.Tasks; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Net; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Extras.Dao +{ + /// + /// Generic Document Access Object for RethinkDB + /// + /// Type of Document (aka. domain object / entity) + /// The type of the Id property in Document + public abstract class RethinkDao : IDao where T : IDocument + { + /// + /// RethinkDB query root. + /// + protected static readonly RethinkDB R = RethinkDB.R; + /// + /// RethinkDB connection + /// + protected readonly IConnection conn; + /// + /// RethinkDB database name + /// + protected readonly string DbName; + /// + /// RethinkDB table name + /// + protected readonly string TableName; + /// + /// Table AST term used to build queries stating at the table term. + /// + protected readonly Table Table; + + private readonly object returnChanges; + + /// + /// Constructor for + /// + /// The connection + /// The database + /// The table + protected RethinkDao(IConnection conn, string dbName, string tableName) + { + this.conn = conn; + this.DbName = dbName; + this.TableName = tableName; + this.Table = R.Db(dbName).Table(tableName); + + this.returnChanges = new { return_changes = true}; + } + + /// + /// Get a document by Id. + /// + public virtual T GetById(IdT id) + { + return GetByIdAsync(id).WaitSync(); + } + + /// + /// Get a document by Id. + /// + public virtual Task GetByIdAsync(IdT id) + { + return this.Table.Get(id).RunAtomAsync(conn); + } + + + /// + /// Save document. If the document exists, an exception will be thrown. Returns and deserializes the returned document. + /// + /// Returns and deserializes the returned document + public virtual T Save(T doc) + { + return SaveAsync(doc).WaitSync(); + } + + /// + /// Save document. If the document exists, an exception will be thrown. Returns and deserializes the returned document. + /// + /// Returns and deserializes the returned document + public virtual async Task SaveAsync(T doc) + { + var result = await this.Table + .Insert(doc)[returnChanges].OptArg("conflict", "error") + .RunWriteAsync(conn) + .ConfigureAwait(false); + + result.AssertNoErrors(); + result.AssertInserted(1); + return result.ChangesAs()[0].NewValue; + } + + /// + /// Updates an existing document. If the document does not exist, an exception will be thrown. + /// + public virtual void Update(T doc) + { + //var result = this.Table + // .Get(doc.Id) + // .Update(doc) + // .RunResult(conn); + + //var result = this.Table + // .Replace(doc) + // .RunResult(conn); + + //var result = this.Table + // .Get(doc.Id) + // .Replace(dbDoc => + // R.Branch(dbDoc == null, + // R.Error("The document doesn't exist"), + // doc + // )).RunResult(conn); + + UpdateAsync(doc).WaitSync(); + } + + /// + /// Updates an existing document. If the document does not exist, an exception will be thrown. + /// + public virtual async Task UpdateAsync(T doc) + { + var result = await this.Table + .GetAll(doc.Id).OptArg("index", "id") + .Replace(doc) + .RunWriteAsync(conn) + .ConfigureAwait(false); + + result.AssertNoErrors(); + result.AssertReplaced(1); + } + + /// + /// Saves or updates a document. If the document doesn't exist, it will be saved. If the document exists, it will be updated. + /// + /// + public virtual T SaveOrUpdate(T doc) + { + return SaveOrUpdateAsync(doc).WaitSync(); + } + + /// + /// Saves or updates a document. If the document doesn't exist, it will be saved. If the document exists, it will be updated. + /// + /// + public virtual async Task SaveOrUpdateAsync(T doc) + { + var result = await this.Table + .Insert(doc)[returnChanges].OptArg("conflict", "replace") + .RunWriteAsync(conn) + .ConfigureAwait(false); + + result.AssertNoErrors(); + + if (result.Inserted != 0) + { + result.AssertInserted(1); + return result.ChangesAs()[0].NewValue; + } + if (result.Replaced != 0) + { + result.AssertReplaced(1); + return result.ChangesAs()[0].NewValue; + } + throw new ReqlAssertFailure($"{nameof(SaveOrUpdate)} failed."); + } + + /// + /// Deletes a document. + /// + public virtual void Delete(T doc) + { + DeleteAsync(doc).WaitSync(); + } + + /// + /// Deletes a document. + /// + public virtual Task DeleteAsync(T doc) + { + return DeleteByIdAsync(doc.Id); + } + + /// + /// Delete a document by Id. + /// + /// + public virtual void DeleteById(IdT id) + { + DeleteByIdAsync(id).WaitSync(); + } + + /// + /// Delete a document by Id. + /// + /// + public virtual async Task DeleteByIdAsync(IdT id) + { + var result = await this.Table.Get(id).Delete() + .RunWriteAsync(conn) + .ConfigureAwait(false); + result.AssertDeleted(1); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs.meta new file mode 100644 index 000000000..afe7385cd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Extras/Dao/RethinkDao.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 45ae3fa4f7844354da676c3514ffd884 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Generated.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated.meta similarity index 77% rename from Assets/Scripts/Generated.meta rename to Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated.meta index 203aa717a..a13ed0f64 100644 --- a/Assets/Scripts/Generated.meta +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d7949e630c7ec6044af484bed87f78fd +guid: 79d0998775a84784eaa71b9cea3eda20 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast.meta new file mode 100644 index 000000000..cf950dd98 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1dfaee0af6b1bf140b15b8040457e585 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs new file mode 100644 index 000000000..332e8388c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Add : ReqlExpr { + + + + +/// +/// Sum two or more numbers, or concatenate two or more strings or arrays. +/// +/// Example: It's as easy as 2 + 2 = 4. +/// > r.expr(2).add(2).run(conn, callback) +/// // result passed to callback +/// 4 +/// + public Add (object arg) : this(new Arguments(arg), null) { + } +/// +/// Sum two or more numbers, or concatenate two or more strings or arrays. +/// +/// Example: It's as easy as 2 + 2 = 4. +/// > r.expr(2).add(2).run(conn, callback) +/// // result passed to callback +/// 4 +/// + public Add (Arguments args) : this(args, null) { + } +/// +/// Sum two or more numbers, or concatenate two or more strings or arrays. +/// +/// Example: It's as easy as 2 + 2 = 4. +/// > r.expr(2).add(2).run(conn, callback) +/// // result passed to callback +/// 4 +/// + public Add (Arguments args, OptArgs optargs) + : base(TermType.ADD, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs.meta new file mode 100644 index 000000000..fa3a5ae17 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Add.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 465c0991b25e7044385435b80b91ab43 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs new file mode 100644 index 000000000..9844514c1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class And : ReqlExpr { + + + + +/// +/// Compute the logical "and" of one or more values. +/// +/// Example: Return whether both a and b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).and(b).run(conn, callback); +/// // result passed to callback +/// false +/// + public And (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compute the logical "and" of one or more values. +/// +/// Example: Return whether both a and b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).and(b).run(conn, callback); +/// // result passed to callback +/// false +/// + public And (Arguments args) : this(args, null) { + } +/// +/// Compute the logical "and" of one or more values. +/// +/// Example: Return whether both a and b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).and(b).run(conn, callback); +/// // result passed to callback +/// false +/// + public And (Arguments args, OptArgs optargs) + : base(TermType.AND, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs.meta new file mode 100644 index 000000000..2933c9f84 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/And.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc869d802abbc534a8808262584a7047 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs new file mode 100644 index 000000000..87418a054 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Append : ReqlExpr { + + + + +/// +/// Append a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').append('newBoots').run(conn, callback) +/// + public Append (object arg) : this(new Arguments(arg), null) { + } +/// +/// Append a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').append('newBoots').run(conn, callback) +/// + public Append (Arguments args) : this(args, null) { + } +/// +/// Append a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').append('newBoots').run(conn, callback) +/// + public Append (Arguments args, OptArgs optargs) + : base(TermType.APPEND, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs.meta new file mode 100644 index 000000000..f5b5c1c02 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Append.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba1741c071b147146b5aad68fac3a849 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs new file mode 100644 index 000000000..2f5ac26f7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class April : ReqlExpr { + + + + + public April (object arg) : this(new Arguments(arg), null) { + } + public April (Arguments args) : this(args, null) { + } + public April (Arguments args, OptArgs optargs) + : base(TermType.APRIL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs.meta new file mode 100644 index 000000000..2064d849b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/April.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f12ae87b2a23d454cae2209e9a3b0a8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs new file mode 100644 index 000000000..46b3d744d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Args : ReqlExpr { + + + + +/// +/// r.args is a special term that's used to splice an array of arguments +/// into another term. This is useful when you want to call a variadic +/// term such as getAll with a set of arguments produced at runtime. +/// +/// Example: Get Alice and Bob from the table people. +/// r.table('people').getAll('Alice', 'Bob').run(conn, callback) +/// // or +/// r.table('people').getAll(r.args(['Alice', 'Bob'])).run(conn, callback) +/// + public Args (object arg) : this(new Arguments(arg), null) { + } +/// +/// r.args is a special term that's used to splice an array of arguments +/// into another term. This is useful when you want to call a variadic +/// term such as getAll with a set of arguments produced at runtime. +/// +/// Example: Get Alice and Bob from the table people. +/// r.table('people').getAll('Alice', 'Bob').run(conn, callback) +/// // or +/// r.table('people').getAll(r.args(['Alice', 'Bob'])).run(conn, callback) +/// + public Args (Arguments args) : this(args, null) { + } +/// +/// r.args is a special term that's used to splice an array of arguments +/// into another term. This is useful when you want to call a variadic +/// term such as getAll with a set of arguments produced at runtime. +/// +/// Example: Get Alice and Bob from the table people. +/// r.table('people').getAll('Alice', 'Bob').run(conn, callback) +/// // or +/// r.table('people').getAll(r.args(['Alice', 'Bob'])).run(conn, callback) +/// + public Args (Arguments args, OptArgs optargs) + : base(TermType.ARGS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs.meta new file mode 100644 index 000000000..fb2af690f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Args.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 38738fd8ca104444f9473c2f23941efe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs new file mode 100644 index 000000000..b9f0f8b85 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Asc : ReqlExpr { + + + + + public Asc (object arg) : this(new Arguments(arg), null) { + } + public Asc (Arguments args) : this(args, null) { + } + public Asc (Arguments args, OptArgs optargs) + : base(TermType.ASC, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs.meta new file mode 100644 index 000000000..5ec69c7fd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Asc.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: aa697ab4c4aa52e46874a867edc7aeb5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs new file mode 100644 index 000000000..7eec44064 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class August : ReqlExpr { + + + + + public August (object arg) : this(new Arguments(arg), null) { + } + public August (Arguments args) : this(args, null) { + } + public August (Arguments args, OptArgs optargs) + : base(TermType.AUGUST, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs.meta new file mode 100644 index 000000000..fcfcec2e4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/August.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3cf9cf35938ba744a8bd9960478087c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs new file mode 100644 index 000000000..68889d228 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Avg : ReqlExpr { + + + + +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg (object arg) : this(new Arguments(arg), null) { + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg (Arguments args) : this(args, null) { + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg (Arguments args, OptArgs optargs) + : base(TermType.AVG, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs.meta new file mode 100644 index 000000000..7b9f8001b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Avg.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4051480d1182c4a4eb5cfc50fd022d5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs new file mode 100644 index 000000000..7850edacc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Between : ReqlExpr { + + + + +/// +/// Get all documents between two keys. Accepts three optional arguments: index, leftBound, and rightBound. If index is set to the name of a secondary index, between will return all documents where that index's value is in the specified range (it uses the primary key by default). leftBound or rightBound may be set to open or closed to indicate whether or not to include that endpoint of the range (by default, leftBound is closed and rightBound is open). +/// +/// Example: Find all users with primary key >= 10 and < 20 (a normal half-open interval). +/// r.table('marvel').between(10, 20).run(conn, callback); +/// + public Between (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get all documents between two keys. Accepts three optional arguments: index, leftBound, and rightBound. If index is set to the name of a secondary index, between will return all documents where that index's value is in the specified range (it uses the primary key by default). leftBound or rightBound may be set to open or closed to indicate whether or not to include that endpoint of the range (by default, leftBound is closed and rightBound is open). +/// +/// Example: Find all users with primary key >= 10 and < 20 (a normal half-open interval). +/// r.table('marvel').between(10, 20).run(conn, callback); +/// + public Between (Arguments args) : this(args, null) { + } +/// +/// Get all documents between two keys. Accepts three optional arguments: index, leftBound, and rightBound. If index is set to the name of a secondary index, between will return all documents where that index's value is in the specified range (it uses the primary key by default). leftBound or rightBound may be set to open or closed to indicate whether or not to include that endpoint of the range (by default, leftBound is closed and rightBound is open). +/// +/// Example: Find all users with primary key >= 10 and < 20 (a normal half-open interval). +/// r.table('marvel').between(10, 20).run(conn, callback); +/// + public Between (Arguments args, OptArgs optargs) + : base(TermType.BETWEEN, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR", +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public Between this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Between (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR", +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public Between this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Between (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR", +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public Between OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Between (this.Args, newOptArgs); + } + internal Between optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs.meta new file mode 100644 index 000000000..5d83d92dc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Between.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7d82803a53fcb744b990bc45411897d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs new file mode 100644 index 000000000..9dd8e1dfb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + using RethinkDb.Driver.Net; + using Newtonsoft.Json.Linq; + + +namespace RethinkDb.Driver.Ast { + + public partial class Binary : ReqlExpr { + + + byte[] b64Data = null; + + + + public Binary (byte[] bytes) : this(new Arguments()){ + b64Data = bytes; + } + public Binary (Object arg) : this(new Arguments(arg), null) { + + } + public Binary (Arguments args) : this(args, null){ + + } + public Binary (Arguments args, OptArgs optargs) : this(TermType.BINARY, args, optargs) { + + } + protected Binary (TermType termType, Arguments args, OptArgs optargs) : base(termType, args, optargs){ + + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + + + + + + + + + + + + protected internal override object Build() { + if( b64Data != null){ + return JObject.FromObject(b64Data, Converter.Serializer); + } + else{ + return base.Build(); + } + } + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs.meta new file mode 100644 index 000000000..1a90c4881 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Binary.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: eeec98913b0f76947a1700dc6c948a11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs new file mode 100644 index 000000000..e4f20a0ba --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Bracket : ReqlExpr { + + + + +/// +/// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan')('firstAppearance').run(conn, callback) +/// + public Bracket (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan')('firstAppearance').run(conn, callback) +/// + public Bracket (Arguments args) : this(args, null) { + } +/// +/// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan')('firstAppearance').run(conn, callback) +/// + public Bracket (Arguments args, OptArgs optargs) + : base(TermType.BRACKET, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs.meta new file mode 100644 index 000000000..17b1ae946 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Bracket.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 85e518f86fcdb7740b26bcfd79228796 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs new file mode 100644 index 000000000..7bc320fcb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Branch : ReqlExpr { + + + + +/// +/// Perform a branching conditional equivalent to if-then-else. +/// The branch command takes 2n+1 arguments: pairs of conditional expressions and commands to be executed if the conditionals return any value but false or null (i.e., "truthy" values), with a final "else" command to be evaluated if all of the conditionals are false or null. +/// +/// Example: Test the value of x. +/// var x = 10; +/// r.branch(r.expr(x).gt(5), 'big', 'small').run(conn, callback); +/// // Result passed to callback +/// "big" +/// + public Branch (object arg) : this(new Arguments(arg), null) { + } +/// +/// Perform a branching conditional equivalent to if-then-else. +/// The branch command takes 2n+1 arguments: pairs of conditional expressions and commands to be executed if the conditionals return any value but false or null (i.e., "truthy" values), with a final "else" command to be evaluated if all of the conditionals are false or null. +/// +/// Example: Test the value of x. +/// var x = 10; +/// r.branch(r.expr(x).gt(5), 'big', 'small').run(conn, callback); +/// // Result passed to callback +/// "big" +/// + public Branch (Arguments args) : this(args, null) { + } +/// +/// Perform a branching conditional equivalent to if-then-else. +/// The branch command takes 2n+1 arguments: pairs of conditional expressions and commands to be executed if the conditionals return any value but false or null (i.e., "truthy" values), with a final "else" command to be evaluated if all of the conditionals are false or null. +/// +/// Example: Test the value of x. +/// var x = 10; +/// r.branch(r.expr(x).gt(5), 'big', 'small').run(conn, callback); +/// // Result passed to callback +/// "big" +/// + public Branch (Arguments args, OptArgs optargs) + : base(TermType.BRANCH, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs.meta new file mode 100644 index 000000000..af4b52e73 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Branch.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7128464e5d72b744ab1bdb56ad23e1be +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs new file mode 100644 index 000000000..40b636d01 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Ceil : ReqlExpr { + + + + +/// +/// Rounds the given value up, returning the smallest integer value greater than or equal to the given value (the value's ceiling). +/// +/// Example: Return the ceiling of 12.345. +/// r.ceil(12.345).run(conn, callback); +/// // Result passed to callback +/// 13.0 +/// +/// The ceil command can also be chained after an expression. + public Ceil (object arg) : this(new Arguments(arg), null) { + } +/// +/// Rounds the given value up, returning the smallest integer value greater than or equal to the given value (the value's ceiling). +/// +/// Example: Return the ceiling of 12.345. +/// r.ceil(12.345).run(conn, callback); +/// // Result passed to callback +/// 13.0 +/// +/// The ceil command can also be chained after an expression. + public Ceil (Arguments args) : this(args, null) { + } +/// +/// Rounds the given value up, returning the smallest integer value greater than or equal to the given value (the value's ceiling). +/// +/// Example: Return the ceiling of 12.345. +/// r.ceil(12.345).run(conn, callback); +/// // Result passed to callback +/// 13.0 +/// +/// The ceil command can also be chained after an expression. + public Ceil (Arguments args, OptArgs optargs) + : base(TermType.CEIL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs.meta new file mode 100644 index 000000000..fe9592aaa --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ceil.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a93426b03697df541ba28166ed585a23 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs new file mode 100644 index 000000000..20c15a3f1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ChangeAt : ReqlExpr { + + + + +/// +/// Change a value in an array at a given index. Returns the modified array. +/// +/// Example: Bruce Banner hulks out. +/// r.expr(["Iron Man", "Bruce", "Spider-Man"]).changeAt(1, "Hulk").run(conn, callback) +/// + public ChangeAt (object arg) : this(new Arguments(arg), null) { + } +/// +/// Change a value in an array at a given index. Returns the modified array. +/// +/// Example: Bruce Banner hulks out. +/// r.expr(["Iron Man", "Bruce", "Spider-Man"]).changeAt(1, "Hulk").run(conn, callback) +/// + public ChangeAt (Arguments args) : this(args, null) { + } +/// +/// Change a value in an array at a given index. Returns the modified array. +/// +/// Example: Bruce Banner hulks out. +/// r.expr(["Iron Man", "Bruce", "Spider-Man"]).changeAt(1, "Hulk").run(conn, callback) +/// + public ChangeAt (Arguments args, OptArgs optargs) + : base(TermType.CHANGE_AT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs.meta new file mode 100644 index 000000000..c46e4a5be --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ChangeAt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e4aedd14cf06524e8b89fdccc7a987a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs new file mode 100644 index 000000000..20a6051f7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Changes : ReqlExpr { + + + + +/// +/// Turn a query into a changefeed, an infinite stream of objects representing changes to the query's results as they occur. A changefeed may return changes to a table or an individual document (a "point" changefeed). Commands such as filter or map may be used before the changes command to transform or filter the output, and many commands that operate on sequences can be chained after changes. +/// +/// Example: Subscribe to the changes on a table. +/// Start monitoring the changefeed in one client: +/// r.table('games').changes().run(conn, function(err, cursor) { +/// cursor.each(console.log); +/// }); +/// +/// As these queries are performed in a second client, the first +/// client would receive and print the following objects: +/// > r.table('games').insert({id: 1}).run(conn, callback); +/// {old_val: null, new_val: {id: 1}} +/// +/// > r.table('games').get(1).update({player1: 'Bob'}).run(conn, callback); +/// {old_val: {id: 1}, new_val: {id: 1, player1: 'Bob'}} +/// +/// > r.table('games').get(1).replace({id: 1, player1: 'Bob', player2: 'Alice'}).run(conn, callback); +/// {old_val: {id: 1, player1: 'Bob'}, +/// new_val: {id: 1, player1: 'Bob', player2: 'Alice'}} +/// +/// > r.table('games').get(1).delete().run(conn, callback) +/// {old_val: {id: 1, player1: 'Bob', player2: 'Alice'}, new_val: null} +/// +/// > r.tableDrop('games').run(conn, callback); +/// ReqlRuntimeError: Changefeed aborted (table unavailable) +/// + public Changes (object arg) : this(new Arguments(arg), null) { + } +/// +/// Turn a query into a changefeed, an infinite stream of objects representing changes to the query's results as they occur. A changefeed may return changes to a table or an individual document (a "point" changefeed). Commands such as filter or map may be used before the changes command to transform or filter the output, and many commands that operate on sequences can be chained after changes. +/// +/// Example: Subscribe to the changes on a table. +/// Start monitoring the changefeed in one client: +/// r.table('games').changes().run(conn, function(err, cursor) { +/// cursor.each(console.log); +/// }); +/// +/// As these queries are performed in a second client, the first +/// client would receive and print the following objects: +/// > r.table('games').insert({id: 1}).run(conn, callback); +/// {old_val: null, new_val: {id: 1}} +/// +/// > r.table('games').get(1).update({player1: 'Bob'}).run(conn, callback); +/// {old_val: {id: 1}, new_val: {id: 1, player1: 'Bob'}} +/// +/// > r.table('games').get(1).replace({id: 1, player1: 'Bob', player2: 'Alice'}).run(conn, callback); +/// {old_val: {id: 1, player1: 'Bob'}, +/// new_val: {id: 1, player1: 'Bob', player2: 'Alice'}} +/// +/// > r.table('games').get(1).delete().run(conn, callback) +/// {old_val: {id: 1, player1: 'Bob', player2: 'Alice'}, new_val: null} +/// +/// > r.tableDrop('games').run(conn, callback); +/// ReqlRuntimeError: Changefeed aborted (table unavailable) +/// + public Changes (Arguments args) : this(args, null) { + } +/// +/// Turn a query into a changefeed, an infinite stream of objects representing changes to the query's results as they occur. A changefeed may return changes to a table or an individual document (a "point" changefeed). Commands such as filter or map may be used before the changes command to transform or filter the output, and many commands that operate on sequences can be chained after changes. +/// +/// Example: Subscribe to the changes on a table. +/// Start monitoring the changefeed in one client: +/// r.table('games').changes().run(conn, function(err, cursor) { +/// cursor.each(console.log); +/// }); +/// +/// As these queries are performed in a second client, the first +/// client would receive and print the following objects: +/// > r.table('games').insert({id: 1}).run(conn, callback); +/// {old_val: null, new_val: {id: 1}} +/// +/// > r.table('games').get(1).update({player1: 'Bob'}).run(conn, callback); +/// {old_val: {id: 1}, new_val: {id: 1, player1: 'Bob'}} +/// +/// > r.table('games').get(1).replace({id: 1, player1: 'Bob', player2: 'Alice'}).run(conn, callback); +/// {old_val: {id: 1, player1: 'Bob'}, +/// new_val: {id: 1, player1: 'Bob', player2: 'Alice'}} +/// +/// > r.table('games').get(1).delete().run(conn, callback) +/// {old_val: {id: 1, player1: 'Bob', player2: 'Alice'}, new_val: null} +/// +/// > r.tableDrop('games').run(conn, callback); +/// ReqlRuntimeError: Changefeed aborted (table unavailable) +/// + public Changes (Arguments args, OptArgs optargs) + : base(TermType.CHANGES, args, optargs) { + } + + + + + + + +/// +/// "squash": "T_BOOL", +/// "include_states": "T_BOOL", +/// "include_initial": "T_BOOL" +/// + public Changes this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Changes (this.Args, newOptArgs); + } + } + +/// +/// "squash": "T_BOOL", +/// "include_states": "T_BOOL", +/// "include_initial": "T_BOOL" +/// + public Changes this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Changes (this.Args, newOptArgs); + } + } + +/// +/// "squash": "T_BOOL", +/// "include_states": "T_BOOL", +/// "include_initial": "T_BOOL" +/// + public Changes OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Changes (this.Args, newOptArgs); + } + internal Changes optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs.meta new file mode 100644 index 000000000..e908ddc4c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Changes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e1ec8cfca8b60d847b4b3a7a9c2da36d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs new file mode 100644 index 000000000..272a47ab3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Circle : ReqlExpr { + + + + +/// +/// Construct a circular line or polygon. A circle in RethinkDB is a polygon or line approximating a circle of a given radius around a given center, consisting of a specified number of vertices (default 32). +/// +/// Example: Define a circle. +/// r.table('geo').insert({ +/// id: 300, +/// name: 'Hayes Valley', +/// neighborhood: r.circle([-122.423246,37.779388], 1000) +/// }).run(conn, callback); +/// + public Circle (object arg) : this(new Arguments(arg), null) { + } +/// +/// Construct a circular line or polygon. A circle in RethinkDB is a polygon or line approximating a circle of a given radius around a given center, consisting of a specified number of vertices (default 32). +/// +/// Example: Define a circle. +/// r.table('geo').insert({ +/// id: 300, +/// name: 'Hayes Valley', +/// neighborhood: r.circle([-122.423246,37.779388], 1000) +/// }).run(conn, callback); +/// + public Circle (Arguments args) : this(args, null) { + } +/// +/// Construct a circular line or polygon. A circle in RethinkDB is a polygon or line approximating a circle of a given radius around a given center, consisting of a specified number of vertices (default 32). +/// +/// Example: Define a circle. +/// r.table('geo').insert({ +/// id: 300, +/// name: 'Hayes Valley', +/// neighborhood: r.circle([-122.423246,37.779388], 1000) +/// }).run(conn, callback); +/// + public Circle (Arguments args, OptArgs optargs) + : base(TermType.CIRCLE, args, optargs) { + } + + + + + + + +/// +/// "num_vertices": "T_EXPR", +/// "geo_system": "E_GEO_SYSTEM", +/// "unit": "E_UNIT", +/// "fill": "T_BOOL" +/// + public Circle this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Circle (this.Args, newOptArgs); + } + } + +/// +/// "num_vertices": "T_EXPR", +/// "geo_system": "E_GEO_SYSTEM", +/// "unit": "E_UNIT", +/// "fill": "T_BOOL" +/// + public Circle this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Circle (this.Args, newOptArgs); + } + } + +/// +/// "num_vertices": "T_EXPR", +/// "geo_system": "E_GEO_SYSTEM", +/// "unit": "E_UNIT", +/// "fill": "T_BOOL" +/// + public Circle OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Circle (this.Args, newOptArgs); + } + internal Circle optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs.meta new file mode 100644 index 000000000..a72e6b6a8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Circle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e871819880abc742a1e4c0541eed00c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs new file mode 100644 index 000000000..57a698f50 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class CoerceTo : ReqlExpr { + + + + +/// +/// Convert a value of one type into another. +/// +/// Example: Coerce a stream to an array to store its output in a field. (A stream cannot be stored in a field directly.) +/// r.table('posts').map(function (post) { +/// return post.merge({ comments: r.table('comments').getAll(post('id'), {index: 'postId'}).coerceTo('array')}); +/// }).run(conn, callback) +/// + public CoerceTo (object arg) : this(new Arguments(arg), null) { + } +/// +/// Convert a value of one type into another. +/// +/// Example: Coerce a stream to an array to store its output in a field. (A stream cannot be stored in a field directly.) +/// r.table('posts').map(function (post) { +/// return post.merge({ comments: r.table('comments').getAll(post('id'), {index: 'postId'}).coerceTo('array')}); +/// }).run(conn, callback) +/// + public CoerceTo (Arguments args) : this(args, null) { + } +/// +/// Convert a value of one type into another. +/// +/// Example: Coerce a stream to an array to store its output in a field. (A stream cannot be stored in a field directly.) +/// r.table('posts').map(function (post) { +/// return post.merge({ comments: r.table('comments').getAll(post('id'), {index: 'postId'}).coerceTo('array')}); +/// }).run(conn, callback) +/// + public CoerceTo (Arguments args, OptArgs optargs) + : base(TermType.COERCE_TO, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs.meta new file mode 100644 index 000000000..b1c3d96d2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/CoerceTo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51ce27b3b301be149b9cf6a4b76148c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs new file mode 100644 index 000000000..a4fcaf483 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ConcatMap : ReqlExpr { + + + + +/// +/// Concatenate one or more elements into a single sequence using a mapping function. +/// +/// Example: Construct a sequence of all monsters defeated by Marvel heroes. The field "defeatedMonsters" is an array of one or more monster names. +/// r.table('marvel').concatMap(function(hero) { +/// return hero('defeatedMonsters') +/// }).run(conn, callback) +/// + public ConcatMap (object arg) : this(new Arguments(arg), null) { + } +/// +/// Concatenate one or more elements into a single sequence using a mapping function. +/// +/// Example: Construct a sequence of all monsters defeated by Marvel heroes. The field "defeatedMonsters" is an array of one or more monster names. +/// r.table('marvel').concatMap(function(hero) { +/// return hero('defeatedMonsters') +/// }).run(conn, callback) +/// + public ConcatMap (Arguments args) : this(args, null) { + } +/// +/// Concatenate one or more elements into a single sequence using a mapping function. +/// +/// Example: Construct a sequence of all monsters defeated by Marvel heroes. The field "defeatedMonsters" is an array of one or more monster names. +/// r.table('marvel').concatMap(function(hero) { +/// return hero('defeatedMonsters') +/// }).run(conn, callback) +/// + public ConcatMap (Arguments args, OptArgs optargs) + : base(TermType.CONCAT_MAP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs.meta new file mode 100644 index 000000000..f33b640c1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ConcatMap.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5bc0b2beda5539f42a65b44b4cf30d2f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs new file mode 100644 index 000000000..a2f6e4a8c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Config : ReqlExpr { + + + + +/// +/// Query (read and/or update) the configurations for individual tables or databases. +/// +/// Example: Get the configuration for the users table. +/// > r.table('users').config().run(conn, callback); +/// + public Config (object arg) : this(new Arguments(arg), null) { + } +/// +/// Query (read and/or update) the configurations for individual tables or databases. +/// +/// Example: Get the configuration for the users table. +/// > r.table('users').config().run(conn, callback); +/// + public Config (Arguments args) : this(args, null) { + } +/// +/// Query (read and/or update) the configurations for individual tables or databases. +/// +/// Example: Get the configuration for the users table. +/// > r.table('users').config().run(conn, callback); +/// + public Config (Arguments args, OptArgs optargs) + : base(TermType.CONFIG, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs.meta new file mode 100644 index 000000000..a47d32487 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Config.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 350d1add2e0247949a6135cb9d41b199 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs new file mode 100644 index 000000000..59f1a3e24 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Contains : ReqlExpr { + + + + +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains (object arg) : this(new Arguments(arg), null) { + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains (Arguments args) : this(args, null) { + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains (Arguments args, OptArgs optargs) + : base(TermType.CONTAINS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs.meta new file mode 100644 index 000000000..fcee27530 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Contains.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c28d83d657e661468d4201919321188 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs new file mode 100644 index 000000000..11dc1b7c3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Count : ReqlExpr { + + + + +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count (object arg) : this(new Arguments(arg), null) { + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count (Arguments args) : this(args, null) { + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count (Arguments args, OptArgs optargs) + : base(TermType.COUNT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs.meta new file mode 100644 index 000000000..ee318f78c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Count.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d1e624b87a34d374285bcee7d6ff899c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs new file mode 100644 index 000000000..ecb616898 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Date : ReqlExpr { + + + + +/// +/// Return a new time object only based on the day, month and year (ie. the same day at 00:00). +/// +/// Example: Retrieve all the users whose birthday is today. +/// r.table("users").filter(function(user) { +/// return user("birthdate").date().eq(r.now().date()) +/// }).run(conn, callback) +/// + public Date (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return a new time object only based on the day, month and year (ie. the same day at 00:00). +/// +/// Example: Retrieve all the users whose birthday is today. +/// r.table("users").filter(function(user) { +/// return user("birthdate").date().eq(r.now().date()) +/// }).run(conn, callback) +/// + public Date (Arguments args) : this(args, null) { + } +/// +/// Return a new time object only based on the day, month and year (ie. the same day at 00:00). +/// +/// Example: Retrieve all the users whose birthday is today. +/// r.table("users").filter(function(user) { +/// return user("birthdate").date().eq(r.now().date()) +/// }).run(conn, callback) +/// + public Date (Arguments args, OptArgs optargs) + : base(TermType.DATE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs.meta new file mode 100644 index 000000000..ce03919f9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Date.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ae97ee4cd9aad6442806c61a3f842201 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs new file mode 100644 index 000000000..cf9d7ad73 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Datum : ReqlExpr { + + + + + public Datum(object arg) : base(TermType.DATUM, null, null) { + datum = arg; + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + + + + + + internal object datum; + + + + + + protected internal override object Build() { + // Overridden because Datums are leaf-nodes and therefore + // don't contain lower ReqlAst objects. + return datum; + } + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs.meta new file mode 100644 index 000000000..eb113cb09 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Datum.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 613d3a632cf33084e9a7fd723f18463f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs new file mode 100644 index 000000000..ce05b4e4e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Day : ReqlExpr { + + + + +/// +/// Return the day of a time object as a number between 1 and 31. +/// +/// Example: Return the users born on the 24th of any month. +/// r.table("users").filter( +/// r.row("birthdate").day().eq(24) +/// ).run(conn, callback) +/// + public Day (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the day of a time object as a number between 1 and 31. +/// +/// Example: Return the users born on the 24th of any month. +/// r.table("users").filter( +/// r.row("birthdate").day().eq(24) +/// ).run(conn, callback) +/// + public Day (Arguments args) : this(args, null) { + } +/// +/// Return the day of a time object as a number between 1 and 31. +/// +/// Example: Return the users born on the 24th of any month. +/// r.table("users").filter( +/// r.row("birthdate").day().eq(24) +/// ).run(conn, callback) +/// + public Day (Arguments args, OptArgs optargs) + : base(TermType.DAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs.meta new file mode 100644 index 000000000..8613edd1b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Day.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6516873a602d1a41882d2b4e5374d38 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs new file mode 100644 index 000000000..3964c5032 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class DayOfWeek : ReqlExpr { + + + + +/// +/// Return the day of week of a time object as a number between 1 and 7 (following ISO 8601 standard). For your convenience, the terms r.monday, r.tuesday etc. are defined and map to the appropriate integer. +/// +/// Example: Return today's day of week. +/// r.now().dayOfWeek().run(conn, callback) +/// + public DayOfWeek (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the day of week of a time object as a number between 1 and 7 (following ISO 8601 standard). For your convenience, the terms r.monday, r.tuesday etc. are defined and map to the appropriate integer. +/// +/// Example: Return today's day of week. +/// r.now().dayOfWeek().run(conn, callback) +/// + public DayOfWeek (Arguments args) : this(args, null) { + } +/// +/// Return the day of week of a time object as a number between 1 and 7 (following ISO 8601 standard). For your convenience, the terms r.monday, r.tuesday etc. are defined and map to the appropriate integer. +/// +/// Example: Return today's day of week. +/// r.now().dayOfWeek().run(conn, callback) +/// + public DayOfWeek (Arguments args, OptArgs optargs) + : base(TermType.DAY_OF_WEEK, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs.meta new file mode 100644 index 000000000..915d37b75 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfWeek.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8155c9543cb17740b6a01774aa749a4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs new file mode 100644 index 000000000..b0b9fbcf3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class DayOfYear : ReqlExpr { + + + + +/// +/// Return the day of the year of a time object as a number between 1 and 366 (following ISO 8601 standard). +/// +/// Example: Retrieve all the users who were born the first day of a year. +/// r.table("users").filter( +/// r.row("birthdate").dayOfYear().eq(1) +/// ) +/// + public DayOfYear (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the day of the year of a time object as a number between 1 and 366 (following ISO 8601 standard). +/// +/// Example: Retrieve all the users who were born the first day of a year. +/// r.table("users").filter( +/// r.row("birthdate").dayOfYear().eq(1) +/// ) +/// + public DayOfYear (Arguments args) : this(args, null) { + } +/// +/// Return the day of the year of a time object as a number between 1 and 366 (following ISO 8601 standard). +/// +/// Example: Retrieve all the users who were born the first day of a year. +/// r.table("users").filter( +/// r.row("birthdate").dayOfYear().eq(1) +/// ) +/// + public DayOfYear (Arguments args, OptArgs optargs) + : base(TermType.DAY_OF_YEAR, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs.meta new file mode 100644 index 000000000..def17f26f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DayOfYear.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b6ff27fa8d540c847ae712e7af6146cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs new file mode 100644 index 000000000..280d3c12b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Db : ReqlAst { + + + + +/// +/// Reference a database. +/// +/// Example: Explicitly specify a database for a query. +/// r.db('heroes').table('marvel').run(conn, callback) +/// + public Db (object arg) : this(new Arguments(arg), null) { + } +/// +/// Reference a database. +/// +/// Example: Explicitly specify a database for a query. +/// r.db('heroes').table('marvel').run(conn, callback) +/// + public Db (Arguments args) : this(args, null) { + } +/// +/// Reference a database. +/// +/// Example: Explicitly specify a database for a query. +/// r.db('heroes').table('marvel').run(conn, callback) +/// + public Db (Arguments args, OptArgs optargs) + : base(TermType.DB, args, optargs) { + } + + + + + + + + + + + + + + + + + + +/// +/// Return all documents in a table. Other commands may be chained after table to return a subset of documents (such as get and filter) or perform further processing. +/// +/// Example: Return all documents in the table 'marvel' of the default database. +/// r.table('marvel').run(conn, callback) +/// + public Table Table ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new Table (arguments ); + } + internal Table table ( Object expr ) + { + return Table ( expr ); + } +/// +/// Create a table. A RethinkDB table is a collection of JSON documents. +/// +/// Example: Create a table named 'dc_universe' with the default settings. +/// > r.db('heroes').tableCreate('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "old_val": null +/// } +/// ], +/// "tables_created": 1 +/// } +/// + public TableCreate TableCreate ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new TableCreate (arguments ); + } + internal TableCreate tableCreate ( Object expr ) + { + return TableCreate ( expr ); + } +/// +/// Drop a table from a database. The table and all its data will be deleted. +/// +/// Example: Drop a table named 'dc_universe'. +/// > r.db('test').tableDrop('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 1 +/// } +/// + public TableDrop TableDrop ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new TableDrop (arguments ); + } + internal TableDrop tableDrop ( Object expr ) + { + return TableDrop ( expr ); + } +/// +/// List all table names in a database. The result is a list of strings. +/// +/// Example: List all tables of the 'test' database. +/// r.db('test').tableList().run(conn, callback) +/// + public TableList TableList ( ) + { + Arguments arguments = new Arguments(this); + return new TableList (arguments ); + } + internal TableList tableList ( ) + { + return TableList ( ); + } +/// +/// Query (read and/or update) the configurations for individual tables or databases. +/// +/// Example: Get the configuration for the users table. +/// > r.table('users').config().run(conn, callback); +/// + public Config Config ( ) + { + Arguments arguments = new Arguments(this); + return new Config (arguments ); + } + internal Config config ( ) + { + return Config ( ); + } +/// +/// Wait for a table or all the tables in a database to be ready. A table may be temporarily unavailable after creation, rebalancing or reconfiguring. The wait command blocks until the given table (or database) is fully up to date. +/// +/// Example: Wait on a table to be ready. +/// > r.table('superheroes').wait().run(conn, callback); +/// // Result passed to callback +/// { "ready": 1 } +/// + public Wait Wait_ ( ) + { + Arguments arguments = new Arguments(this); + return new Wait (arguments ); + } + internal Wait wait_ ( ) + { + return Wait_ ( ); + } +/// +/// Reconfigure a table's sharding and replication. +/// +/// Example: Reconfigure a table. +/// > r.table('superheroes').reconfigure({shards: 2, replicas: 1}).run(conn, callback); +/// + public Reconfigure Reconfigure ( ) + { + Arguments arguments = new Arguments(this); + return new Reconfigure (arguments ); + } + internal Reconfigure reconfigure ( ) + { + return Reconfigure ( ); + } +/// +/// Rebalances the shards of a table. When called on a database, all the tables in that database will be rebalanced. +/// +/// Example: Rebalance a table. +/// > r.table('superheroes').rebalance().run(conn, callback); +/// + public Rebalance Rebalance ( ) + { + Arguments arguments = new Arguments(this); + return new Rebalance (arguments ); + } + internal Rebalance rebalance ( ) + { + return Rebalance ( ); + } +/// +/// Grant or deny access permissions for a user account, globally or on a per-database or per-table basis. +/// +/// Example: Grant the chatapp user account read and write permissions on the users database. +/// r.db('users').grant('chatapp', {read: true, write: true}).run(conn, callback); +/// +/// // Result passed to callback +/// { +/// "granted": 1, +/// "permissions_changes": [ +/// { +/// "new_val": { "read": true, "write": true }, +/// "old_val": { null } +/// } +/// ] +/// + public Grant Grant ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Grant (arguments ); + } + internal Grant grant ( Object expr, Object exprA ) + { + return Grant ( expr, exprA ); + } +/// +/// Get information about a ReQL value. +/// +/// Example: Get information about a table such as primary key, or cache size. +/// r.table('marvel').info().run(conn, callback) +/// + public Info Info ( ) + { + Arguments arguments = new Arguments(this); + return new Info (arguments ); + } + internal Info info ( ) + { + return Info ( ); + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs.meta new file mode 100644 index 000000000..7c8a45428 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Db.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e94984daa0f173149a8d13099d7fc1da +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs new file mode 100644 index 000000000..3f7756c0e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class DbCreate : ReqlExpr { + + + + +/// +/// Create a database. A RethinkDB database is a collection of tables, similar to +/// relational databases. +/// +/// Example: Create a database named 'superheroes'. +/// > r.dbCreate('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "old_val": null +/// } +/// ], +/// "dbs_created": 1 +/// } +/// + public DbCreate (object arg) : this(new Arguments(arg), null) { + } +/// +/// Create a database. A RethinkDB database is a collection of tables, similar to +/// relational databases. +/// +/// Example: Create a database named 'superheroes'. +/// > r.dbCreate('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "old_val": null +/// } +/// ], +/// "dbs_created": 1 +/// } +/// + public DbCreate (Arguments args) : this(args, null) { + } +/// +/// Create a database. A RethinkDB database is a collection of tables, similar to +/// relational databases. +/// +/// Example: Create a database named 'superheroes'. +/// > r.dbCreate('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "old_val": null +/// } +/// ], +/// "dbs_created": 1 +/// } +/// + public DbCreate (Arguments args, OptArgs optargs) + : base(TermType.DB_CREATE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs.meta new file mode 100644 index 000000000..75500de9b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbCreate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e46ed03d7efa6c542866d9b4e1826db4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs new file mode 100644 index 000000000..e5ce6d65d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class DbDrop : ReqlExpr { + + + + +/// +/// Drop a database. The database, all its tables, and corresponding data will be deleted. +/// +/// Example: Drop a database named 'superheroes'. +/// > r.dbDrop('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 3, +/// "dbs_dropped": 1 +/// } +/// + public DbDrop (object arg) : this(new Arguments(arg), null) { + } +/// +/// Drop a database. The database, all its tables, and corresponding data will be deleted. +/// +/// Example: Drop a database named 'superheroes'. +/// > r.dbDrop('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 3, +/// "dbs_dropped": 1 +/// } +/// + public DbDrop (Arguments args) : this(args, null) { + } +/// +/// Drop a database. The database, all its tables, and corresponding data will be deleted. +/// +/// Example: Drop a database named 'superheroes'. +/// > r.dbDrop('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 3, +/// "dbs_dropped": 1 +/// } +/// + public DbDrop (Arguments args, OptArgs optargs) + : base(TermType.DB_DROP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs.meta new file mode 100644 index 000000000..a0dd3bd5c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbDrop.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe628c9ba2677c04fbebdc95f3585a36 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs new file mode 100644 index 000000000..3e7a7e712 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class DbList : ReqlExpr { + + + + +/// +/// List all database names in the system. The result is a list of strings. +/// +/// Example: List all databases. +/// r.dbList().run(conn, callback) +/// + public DbList (object arg) : this(new Arguments(arg), null) { + } +/// +/// List all database names in the system. The result is a list of strings. +/// +/// Example: List all databases. +/// r.dbList().run(conn, callback) +/// + public DbList (Arguments args) : this(args, null) { + } +/// +/// List all database names in the system. The result is a list of strings. +/// +/// Example: List all databases. +/// r.dbList().run(conn, callback) +/// + public DbList (Arguments args, OptArgs optargs) + : base(TermType.DB_LIST, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs.meta new file mode 100644 index 000000000..75d4d4200 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DbList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4b15a2441519884d893d04f2d270eb2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs new file mode 100644 index 000000000..2437f56b9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class December : ReqlExpr { + + + + + public December (object arg) : this(new Arguments(arg), null) { + } + public December (Arguments args) : this(args, null) { + } + public December (Arguments args, OptArgs optargs) + : base(TermType.DECEMBER, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs.meta new file mode 100644 index 000000000..782ad53d3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/December.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 53d6556e979264349be211450cc3f2c0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs new file mode 100644 index 000000000..a92f72766 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Default : ReqlExpr { + + + + +/// +/// Provide a default value in case of non-existence errors. The default command evaluates its first argument (the value it's chained to). If that argument returns null or a non-existence error is thrown in evaluation, then default returns its second argument. The second argument is usually a default value, but it can be a function that returns a value. +/// +/// Example: Retrieve the titles and authors of the table posts. +/// In the case where the author field is missing or null, we want to retrieve the string +/// Anonymous. +/// r.table("posts").map(function (post) { +/// return { +/// title: post("title"), +/// author: post("author").default("Anonymous") +/// } +/// }).run(conn, callback); +/// + public Default (object arg) : this(new Arguments(arg), null) { + } +/// +/// Provide a default value in case of non-existence errors. The default command evaluates its first argument (the value it's chained to). If that argument returns null or a non-existence error is thrown in evaluation, then default returns its second argument. The second argument is usually a default value, but it can be a function that returns a value. +/// +/// Example: Retrieve the titles and authors of the table posts. +/// In the case where the author field is missing or null, we want to retrieve the string +/// Anonymous. +/// r.table("posts").map(function (post) { +/// return { +/// title: post("title"), +/// author: post("author").default("Anonymous") +/// } +/// }).run(conn, callback); +/// + public Default (Arguments args) : this(args, null) { + } +/// +/// Provide a default value in case of non-existence errors. The default command evaluates its first argument (the value it's chained to). If that argument returns null or a non-existence error is thrown in evaluation, then default returns its second argument. The second argument is usually a default value, but it can be a function that returns a value. +/// +/// Example: Retrieve the titles and authors of the table posts. +/// In the case where the author field is missing or null, we want to retrieve the string +/// Anonymous. +/// r.table("posts").map(function (post) { +/// return { +/// title: post("title"), +/// author: post("author").default("Anonymous") +/// } +/// }).run(conn, callback); +/// + public Default (Arguments args, OptArgs optargs) + : base(TermType.DEFAULT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs.meta new file mode 100644 index 000000000..9285992cd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Default.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e323839766f5d848abaccbfa01b21a0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs new file mode 100644 index 000000000..8b90e21fa --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Delete : ReqlExpr { + + + + +/// +/// Delete one or more documents from a table. +/// +/// Example: Delete a single document from the table comments. +/// r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete().run(conn, callback) +/// + public Delete (object arg) : this(new Arguments(arg), null) { + } +/// +/// Delete one or more documents from a table. +/// +/// Example: Delete a single document from the table comments. +/// r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete().run(conn, callback) +/// + public Delete (Arguments args) : this(args, null) { + } +/// +/// Delete one or more documents from a table. +/// +/// Example: Delete a single document from the table comments. +/// r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete().run(conn, callback) +/// + public Delete (Arguments args, OptArgs optargs) + : base(TermType.DELETE, args, optargs) { + } + + + + + + + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ] +/// + public Delete this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Delete (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ] +/// + public Delete this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Delete (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ] +/// + public Delete OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Delete (this.Args, newOptArgs); + } + internal Delete optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs.meta new file mode 100644 index 000000000..639fc501d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Delete.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9d46d2709182804d8d05fb997cf6c54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs new file mode 100644 index 000000000..7ae139ca7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class DeleteAt : ReqlExpr { + + + + +/// +/// Remove one or more elements from an array at a given index. Returns the modified array. (Note: deleteAt operates on arrays, not documents; to delete documents, see the delete command.) +/// +/// Example: Delete the second element of an array. +/// > r(['a','b','c','d','e','f']).deleteAt(1).run(conn, callback) +/// // result passed to callback +/// ['a', 'c', 'd', 'e', 'f'] +/// + public DeleteAt (object arg) : this(new Arguments(arg), null) { + } +/// +/// Remove one or more elements from an array at a given index. Returns the modified array. (Note: deleteAt operates on arrays, not documents; to delete documents, see the delete command.) +/// +/// Example: Delete the second element of an array. +/// > r(['a','b','c','d','e','f']).deleteAt(1).run(conn, callback) +/// // result passed to callback +/// ['a', 'c', 'd', 'e', 'f'] +/// + public DeleteAt (Arguments args) : this(args, null) { + } +/// +/// Remove one or more elements from an array at a given index. Returns the modified array. (Note: deleteAt operates on arrays, not documents; to delete documents, see the delete command.) +/// +/// Example: Delete the second element of an array. +/// > r(['a','b','c','d','e','f']).deleteAt(1).run(conn, callback) +/// // result passed to callback +/// ['a', 'c', 'd', 'e', 'f'] +/// + public DeleteAt (Arguments args, OptArgs optargs) + : base(TermType.DELETE_AT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs.meta new file mode 100644 index 000000000..76a47d52c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/DeleteAt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1861bcb9c570ffe4d838d6b49560bc76 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs new file mode 100644 index 000000000..85649ccef --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Desc : ReqlExpr { + + + + + public Desc (object arg) : this(new Arguments(arg), null) { + } + public Desc (Arguments args) : this(args, null) { + } + public Desc (Arguments args, OptArgs optargs) + : base(TermType.DESC, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs.meta new file mode 100644 index 000000000..6b5775f86 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Desc.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ccb9bb690a973f4f8c9ca4a23d742c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs new file mode 100644 index 000000000..82bc07213 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Difference : ReqlExpr { + + + + +/// +/// Remove the elements of one array from another array. +/// +/// Example: Retrieve Iron Man's equipment list without boots. +/// r.table('marvel').get('IronMan')('equipment') +/// .difference(['Boots']) +/// .run(conn, callback) +/// + public Difference (object arg) : this(new Arguments(arg), null) { + } +/// +/// Remove the elements of one array from another array. +/// +/// Example: Retrieve Iron Man's equipment list without boots. +/// r.table('marvel').get('IronMan')('equipment') +/// .difference(['Boots']) +/// .run(conn, callback) +/// + public Difference (Arguments args) : this(args, null) { + } +/// +/// Remove the elements of one array from another array. +/// +/// Example: Retrieve Iron Man's equipment list without boots. +/// r.table('marvel').get('IronMan')('equipment') +/// .difference(['Boots']) +/// .run(conn, callback) +/// + public Difference (Arguments args, OptArgs optargs) + : base(TermType.DIFFERENCE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs.meta new file mode 100644 index 000000000..426ee0347 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Difference.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a899c15f81d8e5e44b3f9c1f7a3b6d8e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs new file mode 100644 index 000000000..1a4469b55 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Distance : ReqlExpr { + + + + +/// +/// Compute the distance between a point and another geometry object. At least one of the geometry objects specified must be a point. +/// +/// Example: Compute the distance between two points on the Earth in kilometers. +/// var point1 = r.point(-122.423246,37.779388); +/// var point2 = r.point(-117.220406,32.719464); +/// r.distance(point1, point2, {unit: 'km'}).run(conn, callback); +/// // result returned to callback +/// 734.1252496021841 +/// + public Distance (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compute the distance between a point and another geometry object. At least one of the geometry objects specified must be a point. +/// +/// Example: Compute the distance between two points on the Earth in kilometers. +/// var point1 = r.point(-122.423246,37.779388); +/// var point2 = r.point(-117.220406,32.719464); +/// r.distance(point1, point2, {unit: 'km'}).run(conn, callback); +/// // result returned to callback +/// 734.1252496021841 +/// + public Distance (Arguments args) : this(args, null) { + } +/// +/// Compute the distance between a point and another geometry object. At least one of the geometry objects specified must be a point. +/// +/// Example: Compute the distance between two points on the Earth in kilometers. +/// var point1 = r.point(-122.423246,37.779388); +/// var point2 = r.point(-117.220406,32.719464); +/// r.distance(point1, point2, {unit: 'km'}).run(conn, callback); +/// // result returned to callback +/// 734.1252496021841 +/// + public Distance (Arguments args, OptArgs optargs) + : base(TermType.DISTANCE, args, optargs) { + } + + + + + + + +/// +/// "geo_system": "E_GEO_SYSTEM", +/// "unit": "E_UNIT" +/// + public Distance this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Distance (this.Args, newOptArgs); + } + } + +/// +/// "geo_system": "E_GEO_SYSTEM", +/// "unit": "E_UNIT" +/// + public Distance this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Distance (this.Args, newOptArgs); + } + } + +/// +/// "geo_system": "E_GEO_SYSTEM", +/// "unit": "E_UNIT" +/// + public Distance OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Distance (this.Args, newOptArgs); + } + internal Distance optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs.meta new file mode 100644 index 000000000..36429b0c2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12e4eb67a807c3946b2ecb1d0a883a4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs new file mode 100644 index 000000000..5e90db344 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Distinct : ReqlExpr { + + + + +/// +/// Removes duplicates from elements in a sequence. +/// +/// Example: Which unique villains have been vanquished by Marvel heroes? +/// r.table('marvel').concatMap(function(hero) { +/// return hero('villainList') +/// }).distinct().run(conn, callback) +/// + public Distinct (object arg) : this(new Arguments(arg), null) { + } +/// +/// Removes duplicates from elements in a sequence. +/// +/// Example: Which unique villains have been vanquished by Marvel heroes? +/// r.table('marvel').concatMap(function(hero) { +/// return hero('villainList') +/// }).distinct().run(conn, callback) +/// + public Distinct (Arguments args) : this(args, null) { + } +/// +/// Removes duplicates from elements in a sequence. +/// +/// Example: Which unique villains have been vanquished by Marvel heroes? +/// r.table('marvel').concatMap(function(hero) { +/// return hero('villainList') +/// }).distinct().run(conn, callback) +/// + public Distinct (Arguments args, OptArgs optargs) + : base(TermType.DISTINCT, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR" +/// + public Distinct this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Distinct (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public Distinct this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Distinct (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public Distinct OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Distinct (this.Args, newOptArgs); + } + internal Distinct optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs.meta new file mode 100644 index 000000000..a7743dec8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Distinct.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d6c1605261b5e23438f4a78e483ced8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs new file mode 100644 index 000000000..85910b1d4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Div : ReqlExpr { + + + + +/// +/// Divide two numbers. +/// +/// Example: It's as easy as 2 / 2 = 1. +/// r.expr(2).div(2).run(conn, callback) +/// + public Div (object arg) : this(new Arguments(arg), null) { + } +/// +/// Divide two numbers. +/// +/// Example: It's as easy as 2 / 2 = 1. +/// r.expr(2).div(2).run(conn, callback) +/// + public Div (Arguments args) : this(args, null) { + } +/// +/// Divide two numbers. +/// +/// Example: It's as easy as 2 / 2 = 1. +/// r.expr(2).div(2).run(conn, callback) +/// + public Div (Arguments args, OptArgs optargs) + : base(TermType.DIV, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs.meta new file mode 100644 index 000000000..c0e784e59 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Div.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58f6e5174bbe9d84a93bf41d276c4fd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs new file mode 100644 index 000000000..e4c7f473f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Downcase : ReqlExpr { + + + + +/// +/// Lowercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").downcase().run(conn, callback) +/// +/// Result: +/// "sentence about latex." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Downcase (object arg) : this(new Arguments(arg), null) { + } +/// +/// Lowercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").downcase().run(conn, callback) +/// +/// Result: +/// "sentence about latex." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Downcase (Arguments args) : this(args, null) { + } +/// +/// Lowercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").downcase().run(conn, callback) +/// +/// Result: +/// "sentence about latex." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Downcase (Arguments args, OptArgs optargs) + : base(TermType.DOWNCASE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs.meta new file mode 100644 index 000000000..74f1524ff --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Downcase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da8e76a698c78154994520ad74747f51 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs new file mode 100644 index 000000000..162e2722a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class During : ReqlExpr { + + + + +/// +/// Return whether a time is between two other times. +/// +/// Example: Retrieve all the posts that were posted between December 1st, 2013 +/// (inclusive) and December 10th, 2013 (exclusive). +/// r.table("posts").filter( +/// r.row('date').during(r.time(2013, 12, 1, "Z"), r.time(2013, 12, 10, "Z")) +/// ).run(conn, callback) +/// + public During (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return whether a time is between two other times. +/// +/// Example: Retrieve all the posts that were posted between December 1st, 2013 +/// (inclusive) and December 10th, 2013 (exclusive). +/// r.table("posts").filter( +/// r.row('date').during(r.time(2013, 12, 1, "Z"), r.time(2013, 12, 10, "Z")) +/// ).run(conn, callback) +/// + public During (Arguments args) : this(args, null) { + } +/// +/// Return whether a time is between two other times. +/// +/// Example: Retrieve all the posts that were posted between December 1st, 2013 +/// (inclusive) and December 10th, 2013 (exclusive). +/// r.table("posts").filter( +/// r.row('date').during(r.time(2013, 12, 1, "Z"), r.time(2013, 12, 10, "Z")) +/// ).run(conn, callback) +/// + public During (Arguments args, OptArgs optargs) + : base(TermType.DURING, args, optargs) { + } + + + + + + + +/// +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public During this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new During (this.Args, newOptArgs); + } + } + +/// +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public During this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new During (this.Args, newOptArgs); + } + } + +/// +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public During OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new During (this.Args, newOptArgs); + } + internal During optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs.meta new file mode 100644 index 000000000..22df992cb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/During.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 826e538fcb8cbf44f984edfe199a5af7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs new file mode 100644 index 000000000..96f8dd214 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class EpochTime : ReqlExpr { + + + + +/// +/// Create a time object based on seconds since epoch. The first argument is a double and +/// will be rounded to three decimal places (millisecond-precision). +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986. +/// r.table("user").get("John").update({birthdate: r.epochTime(531360000)}).run(conn, callback) +/// + public EpochTime (object arg) : this(new Arguments(arg), null) { + } +/// +/// Create a time object based on seconds since epoch. The first argument is a double and +/// will be rounded to three decimal places (millisecond-precision). +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986. +/// r.table("user").get("John").update({birthdate: r.epochTime(531360000)}).run(conn, callback) +/// + public EpochTime (Arguments args) : this(args, null) { + } +/// +/// Create a time object based on seconds since epoch. The first argument is a double and +/// will be rounded to three decimal places (millisecond-precision). +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986. +/// r.table("user").get("John").update({birthdate: r.epochTime(531360000)}).run(conn, callback) +/// + public EpochTime (Arguments args, OptArgs optargs) + : base(TermType.EPOCH_TIME, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs.meta new file mode 100644 index 000000000..ff2efeab1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EpochTime.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58fda8c496cc5b845b9dfd2841f5f109 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs new file mode 100644 index 000000000..571ea818e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Eq : ReqlExpr { + + + + +/// +/// Test if two or more values are equal. +/// +/// Example: See if a user's role field is set to administrator. +/// r.table('users').get(1)('role').eq('administrator').run(conn, callback); +/// + public Eq (object arg) : this(new Arguments(arg), null) { + } +/// +/// Test if two or more values are equal. +/// +/// Example: See if a user's role field is set to administrator. +/// r.table('users').get(1)('role').eq('administrator').run(conn, callback); +/// + public Eq (Arguments args) : this(args, null) { + } +/// +/// Test if two or more values are equal. +/// +/// Example: See if a user's role field is set to administrator. +/// r.table('users').get(1)('role').eq('administrator').run(conn, callback); +/// + public Eq (Arguments args, OptArgs optargs) + : base(TermType.EQ, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs.meta new file mode 100644 index 000000000..3e687da78 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Eq.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 491f06199faa4724095582aa72806646 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs new file mode 100644 index 000000000..6cb792d93 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class EqJoin : ReqlExpr { + + + + +/// +/// Join tables using a field or function on the left-hand sequence matching primary keys or secondary indexes on the right-hand table. eqJoin is more efficient than other ReQL join types, and operates much faster. Documents in the result set consist of pairs of left-hand and right-hand documents, matched when the field on the left-hand side exists and is non-null and an entry with that field's value exists in the specified index on the right-hand side. +/// +/// + public EqJoin (object arg) : this(new Arguments(arg), null) { + } +/// +/// Join tables using a field or function on the left-hand sequence matching primary keys or secondary indexes on the right-hand table. eqJoin is more efficient than other ReQL join types, and operates much faster. Documents in the result set consist of pairs of left-hand and right-hand documents, matched when the field on the left-hand side exists and is non-null and an entry with that field's value exists in the specified index on the right-hand side. +/// +/// + public EqJoin (Arguments args) : this(args, null) { + } +/// +/// Join tables using a field or function on the left-hand sequence matching primary keys or secondary indexes on the right-hand table. eqJoin is more efficient than other ReQL join types, and operates much faster. Documents in the result set consist of pairs of left-hand and right-hand documents, matched when the field on the left-hand side exists and is non-null and an entry with that field's value exists in the specified index on the right-hand side. +/// +/// + public EqJoin (Arguments args, OptArgs optargs) + : base(TermType.EQ_JOIN, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR" +/// + public EqJoin this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new EqJoin (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public EqJoin this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new EqJoin (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public EqJoin OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new EqJoin (this.Args, newOptArgs); + } + internal EqJoin optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs.meta new file mode 100644 index 000000000..b8a987b3e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/EqJoin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 364d3bf78964df44e810945c27434412 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs new file mode 100644 index 000000000..c4e16a91a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Error : ReqlExpr { + + + + +/// +/// Throw a runtime error. If called with no arguments inside the second argument to default, re-throw the current error. +/// +/// Example: Iron Man can't possibly have lost a battle: +/// r.table('marvel').get('IronMan').do(function(ironman) { +/// return r.branch(ironman('victories').lt(ironman('battles')), +/// r.error('impossible code path'), +/// ironman) +/// }).run(conn, callback) +/// + public Error (object arg) : this(new Arguments(arg), null) { + } +/// +/// Throw a runtime error. If called with no arguments inside the second argument to default, re-throw the current error. +/// +/// Example: Iron Man can't possibly have lost a battle: +/// r.table('marvel').get('IronMan').do(function(ironman) { +/// return r.branch(ironman('victories').lt(ironman('battles')), +/// r.error('impossible code path'), +/// ironman) +/// }).run(conn, callback) +/// + public Error (Arguments args) : this(args, null) { + } +/// +/// Throw a runtime error. If called with no arguments inside the second argument to default, re-throw the current error. +/// +/// Example: Iron Man can't possibly have lost a battle: +/// r.table('marvel').get('IronMan').do(function(ironman) { +/// return r.branch(ironman('victories').lt(ironman('battles')), +/// r.error('impossible code path'), +/// ironman) +/// }).run(conn, callback) +/// + public Error (Arguments args, OptArgs optargs) + : base(TermType.ERROR, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs.meta new file mode 100644 index 000000000..e02639e87 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Error.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1421ad99581fcec46aed473959a87d8e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs new file mode 100644 index 000000000..f56d6226a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class February : ReqlExpr { + + + + + public February (object arg) : this(new Arguments(arg), null) { + } + public February (Arguments args) : this(args, null) { + } + public February (Arguments args, OptArgs optargs) + : base(TermType.FEBRUARY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs.meta new file mode 100644 index 000000000..65e12be2d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/February.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5a818ce9fcf15d94bbcc0a9e24276dd6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs new file mode 100644 index 000000000..e86d25ae3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Fill : ReqlExpr { + + + + +/// +/// Convert a Line object into a Polygon object. If the last point does not specify the same coordinates as the first point, polygon will close the polygon by connecting them. +/// +/// Example: Create a line object and then convert it to a polygon. +/// r.table('geo').insert({ +/// id: 201, +/// rectangle: r.line( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// +/// r.table('geo').get(201).update({ +/// rectangle: r.row('rectangle').fill() +/// }, {nonAtomic: true}).run(conn, callback); +/// + public Fill (object arg) : this(new Arguments(arg), null) { + } +/// +/// Convert a Line object into a Polygon object. If the last point does not specify the same coordinates as the first point, polygon will close the polygon by connecting them. +/// +/// Example: Create a line object and then convert it to a polygon. +/// r.table('geo').insert({ +/// id: 201, +/// rectangle: r.line( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// +/// r.table('geo').get(201).update({ +/// rectangle: r.row('rectangle').fill() +/// }, {nonAtomic: true}).run(conn, callback); +/// + public Fill (Arguments args) : this(args, null) { + } +/// +/// Convert a Line object into a Polygon object. If the last point does not specify the same coordinates as the first point, polygon will close the polygon by connecting them. +/// +/// Example: Create a line object and then convert it to a polygon. +/// r.table('geo').insert({ +/// id: 201, +/// rectangle: r.line( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// +/// r.table('geo').get(201).update({ +/// rectangle: r.row('rectangle').fill() +/// }, {nonAtomic: true}).run(conn, callback); +/// + public Fill (Arguments args, OptArgs optargs) + : base(TermType.FILL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs.meta new file mode 100644 index 000000000..36dec9110 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fill.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b23e0f10e72ee246b04537352c940e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs new file mode 100644 index 000000000..6b5ceb0e6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Filter : ReqlExpr { + + + + +/// +/// Return all the elements in a sequence for which the given predicate is true. The return value of filter will be the same as the input (sequence, stream, or array). Documents can be filtered in a variety of ways—ranges, nested values, boolean conditions, and the results of anonymous functions. +/// +/// Example: Get all users who are 30 years old. +/// r.table('users').filter({age: 30}).run(conn, callback); +/// +/// The predicate {age: 30} selects documents in the users table with an age field whose value is 30. Documents with an age field set to any other value or with no age field present are skipped. + public Filter (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return all the elements in a sequence for which the given predicate is true. The return value of filter will be the same as the input (sequence, stream, or array). Documents can be filtered in a variety of ways—ranges, nested values, boolean conditions, and the results of anonymous functions. +/// +/// Example: Get all users who are 30 years old. +/// r.table('users').filter({age: 30}).run(conn, callback); +/// +/// The predicate {age: 30} selects documents in the users table with an age field whose value is 30. Documents with an age field set to any other value or with no age field present are skipped. + public Filter (Arguments args) : this(args, null) { + } +/// +/// Return all the elements in a sequence for which the given predicate is true. The return value of filter will be the same as the input (sequence, stream, or array). Documents can be filtered in a variety of ways—ranges, nested values, boolean conditions, and the results of anonymous functions. +/// +/// Example: Get all users who are 30 years old. +/// r.table('users').filter({age: 30}).run(conn, callback); +/// +/// The predicate {age: 30} selects documents in the users table with an age field whose value is 30. Documents with an age field set to any other value or with no age field present are skipped. + public Filter (Arguments args, OptArgs optargs) + : base(TermType.FILTER, args, optargs) { + } + + + + + + + +/// +/// "default": "T_EXPR" +/// + public Filter this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Filter (this.Args, newOptArgs); + } + } + +/// +/// "default": "T_EXPR" +/// + public Filter this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Filter (this.Args, newOptArgs); + } + } + +/// +/// "default": "T_EXPR" +/// + public Filter OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Filter (this.Args, newOptArgs); + } + internal Filter optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs.meta new file mode 100644 index 000000000..d19401caa --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Filter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12b733b2b0667cc43bfb03c63e7aa748 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs new file mode 100644 index 000000000..f732b96af --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Floor : ReqlExpr { + + + + +/// +/// Rounds the given value down, returning the largest integer value less than or equal to the given value (the value's floor). +/// +/// Example: Return the floor of 12.345. +/// r.floor(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The floor command can also be chained after an expression. + public Floor (object arg) : this(new Arguments(arg), null) { + } +/// +/// Rounds the given value down, returning the largest integer value less than or equal to the given value (the value's floor). +/// +/// Example: Return the floor of 12.345. +/// r.floor(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The floor command can also be chained after an expression. + public Floor (Arguments args) : this(args, null) { + } +/// +/// Rounds the given value down, returning the largest integer value less than or equal to the given value (the value's floor). +/// +/// Example: Return the floor of 12.345. +/// r.floor(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The floor command can also be chained after an expression. + public Floor (Arguments args, OptArgs optargs) + : base(TermType.FLOOR, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs.meta new file mode 100644 index 000000000..30f0d2d8c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Floor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 117bf1bd2d752394fb3e00a36161ca7d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs new file mode 100644 index 000000000..539b9d177 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Fold : ReqlExpr { + + + + +/// +/// Apply a function to a sequence in order, maintaining state via an accumulator. The fold command returns either a single value or a new sequence. +/// +/// Example: Concatenate words from a list. +/// r.table('words').orderBy('id').fold('', function (acc, word) { +/// return acc.add(r.branch(acc.eq(''), '', ', ')).add(word); +/// }).run(conn, callback); +/// +/// (This example could be implemented with reduce, but fold will preserve the order when words is a RethinkDB table or other stream, which is not guaranteed with reduce.) + public Fold (object arg) : this(new Arguments(arg), null) { + } +/// +/// Apply a function to a sequence in order, maintaining state via an accumulator. The fold command returns either a single value or a new sequence. +/// +/// Example: Concatenate words from a list. +/// r.table('words').orderBy('id').fold('', function (acc, word) { +/// return acc.add(r.branch(acc.eq(''), '', ', ')).add(word); +/// }).run(conn, callback); +/// +/// (This example could be implemented with reduce, but fold will preserve the order when words is a RethinkDB table or other stream, which is not guaranteed with reduce.) + public Fold (Arguments args) : this(args, null) { + } +/// +/// Apply a function to a sequence in order, maintaining state via an accumulator. The fold command returns either a single value or a new sequence. +/// +/// Example: Concatenate words from a list. +/// r.table('words').orderBy('id').fold('', function (acc, word) { +/// return acc.add(r.branch(acc.eq(''), '', ', ')).add(word); +/// }).run(conn, callback); +/// +/// (This example could be implemented with reduce, but fold will preserve the order when words is a RethinkDB table or other stream, which is not guaranteed with reduce.) + public Fold (Arguments args, OptArgs optargs) + : base(TermType.FOLD, args, optargs) { + } + + + + + + + +/// +/// "emit": "T_FUNC3", +/// "final_emit": "T_FUNC1" +/// + public Fold this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Fold (this.Args, newOptArgs); + } + } + +/// +/// "emit": "T_FUNC3", +/// "final_emit": "T_FUNC1" +/// + public Fold this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Fold (this.Args, newOptArgs); + } + } + +/// +/// "emit": "T_FUNC3", +/// "final_emit": "T_FUNC1" +/// + public Fold OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Fold (this.Args, newOptArgs); + } + internal Fold optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs.meta new file mode 100644 index 000000000..181839e89 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Fold.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6f273e1ffde97de4e99da1e4d91936d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs new file mode 100644 index 000000000..da036b818 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ForEach : ReqlExpr { + + + + +/// +/// Loop over a sequence, evaluating the given write query for each element. +/// +/// Example: Now that our heroes have defeated their villains, we can safely remove them from the villain table. +/// r.table('marvel').forEach(function(hero) { +/// return r.table('villains').get(hero('villainDefeated')).delete() +/// }).run(conn, callback) +/// + public ForEach (object arg) : this(new Arguments(arg), null) { + } +/// +/// Loop over a sequence, evaluating the given write query for each element. +/// +/// Example: Now that our heroes have defeated their villains, we can safely remove them from the villain table. +/// r.table('marvel').forEach(function(hero) { +/// return r.table('villains').get(hero('villainDefeated')).delete() +/// }).run(conn, callback) +/// + public ForEach (Arguments args) : this(args, null) { + } +/// +/// Loop over a sequence, evaluating the given write query for each element. +/// +/// Example: Now that our heroes have defeated their villains, we can safely remove them from the villain table. +/// r.table('marvel').forEach(function(hero) { +/// return r.table('villains').get(hero('villainDefeated')).delete() +/// }).run(conn, callback) +/// + public ForEach (Arguments args, OptArgs optargs) + : base(TermType.FOR_EACH, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs.meta new file mode 100644 index 000000000..2178f0b07 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ForEach.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 636a6125c1fbcfd408f7250c1c04d1a5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs new file mode 100644 index 000000000..d6382e1d3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Friday : ReqlExpr { + + + + + public Friday (object arg) : this(new Arguments(arg), null) { + } + public Friday (Arguments args) : this(args, null) { + } + public Friday (Arguments args, OptArgs optargs) + : base(TermType.FRIDAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs.meta new file mode 100644 index 000000000..125fb362a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Friday.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dc91f69b3d7a20e448f9af713fa9a198 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs new file mode 100644 index 000000000..f30b6bc4c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + using System.Threading; + + +namespace RethinkDb.Driver.Ast { + + public partial class Func : ReqlExpr { + + + private static int VarId = 0; + + + + + protected Func(Arguments args) : base(TermType.FUNC, args, null) + { + } + + + + + + + public static Func FromLambda(Delegate function){ + + if( function is ReqlFunction0 func0 ) + { + return new Func(Arguments.Make(new List(), + Util.ToReqlAst( func0() ))); + } + //Function 1 + if( function is ReqlFunction1 func1 ){ + int var1 = NextVarId(); + var varIds = new List{ + var1, + }; + var appliedFunction = func1( + new Var(var1) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + //Function 2 + if( function is ReqlFunction2 func2 ){ + int var1 = NextVarId(); + int var2 = NextVarId(); + var varIds = new List{ + var1, + var2, + }; + var appliedFunction = func2( + new Var(var1) , + new Var(var2) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + //Function 3 + if( function is ReqlFunction3 func3 ){ + int var1 = NextVarId(); + int var2 = NextVarId(); + int var3 = NextVarId(); + var varIds = new List{ + var1, + var2, + var3, + }; + var appliedFunction = func3( + new Var(var1) , + new Var(var2) , + new Var(var3) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + //Function 4 + if( function is ReqlFunction4 func4 ){ + int var1 = NextVarId(); + int var2 = NextVarId(); + int var3 = NextVarId(); + int var4 = NextVarId(); + var varIds = new List{ + var1, + var2, + var3, + var4, + }; + var appliedFunction = func4( + new Var(var1) , + new Var(var2) , + new Var(var3) , + new Var(var4) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + + throw new ReqlDriverError("Arity of ReqlLambda not recognized!"); + } + + public static Func Serialize(Delegate function, List context){ + + if( function is ReqlFunction0 func0 ) + { + return new Func(Arguments.Make(new List(), + Util.ToReqlAst( func0() ))); + } + //Function 1 + if( function is ReqlFunction1 func1 ){ + Guid var1 = NextVarGuid(); + var varIds = new List{ + var1, + }; + context.AddRange(varIds); + var appliedFunction = func1( + new Var(var1) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + //Function 2 + if( function is ReqlFunction2 func2 ){ + Guid var1 = NextVarGuid(); + Guid var2 = NextVarGuid(); + var varIds = new List{ + var1, + var2, + }; + context.AddRange(varIds); + var appliedFunction = func2( + new Var(var1) , + new Var(var2) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + //Function 3 + if( function is ReqlFunction3 func3 ){ + Guid var1 = NextVarGuid(); + Guid var2 = NextVarGuid(); + Guid var3 = NextVarGuid(); + var varIds = new List{ + var1, + var2, + var3, + }; + context.AddRange(varIds); + var appliedFunction = func3( + new Var(var1) , + new Var(var2) , + new Var(var3) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + //Function 4 + if( function is ReqlFunction4 func4 ){ + Guid var1 = NextVarGuid(); + Guid var2 = NextVarGuid(); + Guid var3 = NextVarGuid(); + Guid var4 = NextVarGuid(); + var varIds = new List{ + var1, + var2, + var3, + var4, + }; + context.AddRange(varIds); + var appliedFunction = func4( + new Var(var1) , + new Var(var2) , + new Var(var3) , + new Var(var4) + ); + return new Func(Arguments.Make( + new MakeArray(varIds), + Util.ToReqlAst(appliedFunction) + )); + } + + throw new ReqlDriverError("Arity of ReqlLambda not recognized!"); + } + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + + + + + + + + + + + + + + + internal static int NextVarId(){ + return Interlocked.Increment(ref VarId); + } + internal static Guid NextVarGuid(){ + return Guid.NewGuid(); + } + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs.meta new file mode 100644 index 000000000..5488dc431 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Func.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 98fd210d50bcec340bbcb9f5ff17b994 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs new file mode 100644 index 000000000..30088e529 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Funcall : ReqlExpr { + + + private bool swappedArgs = false; + + + + public Funcall (object arg) : this(new Arguments(arg), null) { + } + public Funcall (Arguments args) : this(args, null) { + } + public Funcall (Arguments args, OptArgs optargs) + : base(TermType.FUNCALL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + + + + + + + + + + + /* + This object should be constructed with arguments first, and the + function itself as the last parameter. This makes it easier for + the places where this object is constructed. The actual wire + format is function first, arguments last, so we flip them around + when building the AST. + */ + protected internal override object Build() { + + if( !swappedArgs ) + { + var lastIdx = this.Args.Count - 1; + var func = this.Args[lastIdx]; + this.Args.RemoveAt(lastIdx); + this.Args.Insert(0, func); + swappedArgs = true; + } + + + return base.Build(); + } + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs.meta new file mode 100644 index 000000000..c29804351 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Funcall.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: abcb048ef452b34468f313bf34ba396f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs new file mode 100644 index 000000000..63fdb25ab --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Ge : ReqlExpr { + + + + +/// +/// Compare values, testing if the left-hand value is greater than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or more. +/// r.table('players').get(1)('score').ge(10).run(conn, callback); +/// + public Ge (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compare values, testing if the left-hand value is greater than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or more. +/// r.table('players').get(1)('score').ge(10).run(conn, callback); +/// + public Ge (Arguments args) : this(args, null) { + } +/// +/// Compare values, testing if the left-hand value is greater than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or more. +/// r.table('players').get(1)('score').ge(10).run(conn, callback); +/// + public Ge (Arguments args, OptArgs optargs) + : base(TermType.GE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs.meta new file mode 100644 index 000000000..ff83290b0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ge.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f716298159964fa4cad7269d17d529bb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs new file mode 100644 index 000000000..819681823 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Geojson : ReqlExpr { + + + + +/// +/// Convert a GeoJSON object to a ReQL geometry object. +/// +/// Example: Convert a GeoJSON object to a ReQL geometry object. +/// var geoJson = { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// }; +/// r.table('geo').insert({ +/// id: 'sfo', +/// name: 'San Francisco', +/// location: r.geojson(geoJson) +/// }).run(conn, callback); +/// + public Geojson (object arg) : this(new Arguments(arg), null) { + } +/// +/// Convert a GeoJSON object to a ReQL geometry object. +/// +/// Example: Convert a GeoJSON object to a ReQL geometry object. +/// var geoJson = { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// }; +/// r.table('geo').insert({ +/// id: 'sfo', +/// name: 'San Francisco', +/// location: r.geojson(geoJson) +/// }).run(conn, callback); +/// + public Geojson (Arguments args) : this(args, null) { + } +/// +/// Convert a GeoJSON object to a ReQL geometry object. +/// +/// Example: Convert a GeoJSON object to a ReQL geometry object. +/// var geoJson = { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// }; +/// r.table('geo').insert({ +/// id: 'sfo', +/// name: 'San Francisco', +/// location: r.geojson(geoJson) +/// }).run(conn, callback); +/// + public Geojson (Arguments args, OptArgs optargs) + : base(TermType.GEOJSON, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs.meta new file mode 100644 index 000000000..497ed3974 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Geojson.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 428658b12249bf247b27341afad7b412 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs new file mode 100644 index 000000000..211248e19 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Get : ReqlExpr { + + + + +/// +/// Get a document by primary key. +/// +/// Example: Find a document by UUID. +/// r.table('posts').get('a9849eef-7176-4411-935b-79a6e3c56a74').run(conn, callback); +/// + public Get (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get a document by primary key. +/// +/// Example: Find a document by UUID. +/// r.table('posts').get('a9849eef-7176-4411-935b-79a6e3c56a74').run(conn, callback); +/// + public Get (Arguments args) : this(args, null) { + } +/// +/// Get a document by primary key. +/// +/// Example: Find a document by UUID. +/// r.table('posts').get('a9849eef-7176-4411-935b-79a6e3c56a74').run(conn, callback); +/// + public Get (Arguments args, OptArgs optargs) + : base(TermType.GET, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs.meta new file mode 100644 index 000000000..58ade6108 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Get.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ef76c65b1a4056479670f729b747da9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs new file mode 100644 index 000000000..77007f935 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class GetAll : ReqlExpr { + + + + +/// +/// Get all documents where the given value matches the value of the requested index. +/// +/// Example: Secondary index keys are not guaranteed to be unique so we cannot query via get when using a secondary index. +/// r.table('marvel').getAll('man_of_steel', {index:'code_name'}).run(conn, callback) +/// + public GetAll (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get all documents where the given value matches the value of the requested index. +/// +/// Example: Secondary index keys are not guaranteed to be unique so we cannot query via get when using a secondary index. +/// r.table('marvel').getAll('man_of_steel', {index:'code_name'}).run(conn, callback) +/// + public GetAll (Arguments args) : this(args, null) { + } +/// +/// Get all documents where the given value matches the value of the requested index. +/// +/// Example: Secondary index keys are not guaranteed to be unique so we cannot query via get when using a secondary index. +/// r.table('marvel').getAll('man_of_steel', {index:'code_name'}).run(conn, callback) +/// + public GetAll (Arguments args, OptArgs optargs) + : base(TermType.GET_ALL, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR" +/// + public GetAll this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new GetAll (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public GetAll this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new GetAll (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public GetAll OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new GetAll (this.Args, newOptArgs); + } + internal GetAll optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs.meta new file mode 100644 index 000000000..42eebda40 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetAll.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3b2d29a52b2a76478bc1252acb30523 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs new file mode 100644 index 000000000..da0c9b1e8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class GetField : ReqlExpr { + + + + +/// +/// Get a single field from an object. If called on a sequence, gets that field from every +/// object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan').getField('firstAppearance').run(conn, callback) +/// + public GetField (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get a single field from an object. If called on a sequence, gets that field from every +/// object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan').getField('firstAppearance').run(conn, callback) +/// + public GetField (Arguments args) : this(args, null) { + } +/// +/// Get a single field from an object. If called on a sequence, gets that field from every +/// object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan').getField('firstAppearance').run(conn, callback) +/// + public GetField (Arguments args, OptArgs optargs) + : base(TermType.GET_FIELD, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs.meta new file mode 100644 index 000000000..05cab5810 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetField.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89e631caea4a2b6479250f2540fbf99b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs new file mode 100644 index 000000000..a2745484c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class GetIntersecting : ReqlExpr { + + + + +/// +/// Get all documents where the given geometry object intersects the geometry object of the requested geospatial index. +/// +/// Example: Which of the locations in a list of parks intersect circle1? +/// var circle1 = r.circle([-117.220406,32.719464], 10, {unit: 'mi'}); +/// r.table('parks').getIntersecting(circle1, {index: 'area'}).run(conn, callback); +/// + public GetIntersecting (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get all documents where the given geometry object intersects the geometry object of the requested geospatial index. +/// +/// Example: Which of the locations in a list of parks intersect circle1? +/// var circle1 = r.circle([-117.220406,32.719464], 10, {unit: 'mi'}); +/// r.table('parks').getIntersecting(circle1, {index: 'area'}).run(conn, callback); +/// + public GetIntersecting (Arguments args) : this(args, null) { + } +/// +/// Get all documents where the given geometry object intersects the geometry object of the requested geospatial index. +/// +/// Example: Which of the locations in a list of parks intersect circle1? +/// var circle1 = r.circle([-117.220406,32.719464], 10, {unit: 'mi'}); +/// r.table('parks').getIntersecting(circle1, {index: 'area'}).run(conn, callback); +/// + public GetIntersecting (Arguments args, OptArgs optargs) + : base(TermType.GET_INTERSECTING, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR" +/// + public GetIntersecting this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new GetIntersecting (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public GetIntersecting this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new GetIntersecting (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public GetIntersecting OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new GetIntersecting (this.Args, newOptArgs); + } + internal GetIntersecting optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs.meta new file mode 100644 index 000000000..c586a8790 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetIntersecting.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0aa46adcbb3b46a4da3fc9a5434cb480 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs new file mode 100644 index 000000000..ed4ee35a2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class GetNearest : ReqlExpr { + + + + +/// +/// Get all documents where the specified geospatial index is within a certain distance of the specified point (default 100 kilometers). +/// +/// Example: Return a list of enemy hideouts within 5000 meters of the secret base. +/// var secretBase = r.point(-122.422876,37.777128); +/// r.table('hideouts').getNearest(secretBase, +/// {index: 'location', maxDist: 5000} +/// ).run(conn, callback) +/// + public GetNearest (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get all documents where the specified geospatial index is within a certain distance of the specified point (default 100 kilometers). +/// +/// Example: Return a list of enemy hideouts within 5000 meters of the secret base. +/// var secretBase = r.point(-122.422876,37.777128); +/// r.table('hideouts').getNearest(secretBase, +/// {index: 'location', maxDist: 5000} +/// ).run(conn, callback) +/// + public GetNearest (Arguments args) : this(args, null) { + } +/// +/// Get all documents where the specified geospatial index is within a certain distance of the specified point (default 100 kilometers). +/// +/// Example: Return a list of enemy hideouts within 5000 meters of the secret base. +/// var secretBase = r.point(-122.422876,37.777128); +/// r.table('hideouts').getNearest(secretBase, +/// {index: 'location', maxDist: 5000} +/// ).run(conn, callback) +/// + public GetNearest (Arguments args, OptArgs optargs) + : base(TermType.GET_NEAREST, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR", +/// "max_results": "T_NUM", +/// "unit": "E_UNIT", +/// "max_dist": "T_NUM", +/// "geo_system": "E_GEO_SYSTEM" +/// + public GetNearest this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new GetNearest (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR", +/// "max_results": "T_NUM", +/// "unit": "E_UNIT", +/// "max_dist": "T_NUM", +/// "geo_system": "E_GEO_SYSTEM" +/// + public GetNearest this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new GetNearest (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR", +/// "max_results": "T_NUM", +/// "unit": "E_UNIT", +/// "max_dist": "T_NUM", +/// "geo_system": "E_GEO_SYSTEM" +/// + public GetNearest OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new GetNearest (this.Args, newOptArgs); + } + internal GetNearest optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs.meta new file mode 100644 index 000000000..ddd2e65f0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/GetNearest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d02270d0cdb72f4694e26245f64ba95 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs new file mode 100644 index 000000000..d4a41cc38 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Grant : ReqlExpr { + + + + +/// +/// Grant or deny access permissions for a user account, globally or on a per-database or per-table basis. +/// +/// Example: Grant the chatapp user account read and write permissions on the users database. +/// r.db('users').grant('chatapp', {read: true, write: true}).run(conn, callback); +/// +/// // Result passed to callback +/// { +/// "granted": 1, +/// "permissions_changes": [ +/// { +/// "new_val": { "read": true, "write": true }, +/// "old_val": { null } +/// } +/// ] +/// + public Grant (object arg) : this(new Arguments(arg), null) { + } +/// +/// Grant or deny access permissions for a user account, globally or on a per-database or per-table basis. +/// +/// Example: Grant the chatapp user account read and write permissions on the users database. +/// r.db('users').grant('chatapp', {read: true, write: true}).run(conn, callback); +/// +/// // Result passed to callback +/// { +/// "granted": 1, +/// "permissions_changes": [ +/// { +/// "new_val": { "read": true, "write": true }, +/// "old_val": { null } +/// } +/// ] +/// + public Grant (Arguments args) : this(args, null) { + } +/// +/// Grant or deny access permissions for a user account, globally or on a per-database or per-table basis. +/// +/// Example: Grant the chatapp user account read and write permissions on the users database. +/// r.db('users').grant('chatapp', {read: true, write: true}).run(conn, callback); +/// +/// // Result passed to callback +/// { +/// "granted": 1, +/// "permissions_changes": [ +/// { +/// "new_val": { "read": true, "write": true }, +/// "old_val": { null } +/// } +/// ] +/// + public Grant (Arguments args, OptArgs optargs) + : base(TermType.GRANT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs.meta new file mode 100644 index 000000000..1fdbe3e2b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Grant.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e8cb9d527fd627f4ab8666cc219bc816 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs new file mode 100644 index 000000000..1848552e1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Group : ReqlExpr { + + + + +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group (object arg) : this(new Arguments(arg), null) { + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group (Arguments args) : this(args, null) { + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group (Arguments args, OptArgs optargs) + : base(TermType.GROUP, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR", +/// "multi": "T_BOOL" +/// + public Group this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Group (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR", +/// "multi": "T_BOOL" +/// + public Group this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Group (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR", +/// "multi": "T_BOOL" +/// + public Group OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Group (this.Args, newOptArgs); + } + internal Group optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs.meta new file mode 100644 index 000000000..75f8ea3ca --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Group.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efe8d6789d5ff9d478d029d63f91b321 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs new file mode 100644 index 000000000..a10083b2a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Gt : ReqlExpr { + + + + +/// +/// Compare values, testing if the left-hand value is greater than the right-hand. +/// +/// Example: Test if a player has scored more than 10 points. +/// r.table('players').get(1)('score').gt(10).run(conn, callback); +/// + public Gt (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compare values, testing if the left-hand value is greater than the right-hand. +/// +/// Example: Test if a player has scored more than 10 points. +/// r.table('players').get(1)('score').gt(10).run(conn, callback); +/// + public Gt (Arguments args) : this(args, null) { + } +/// +/// Compare values, testing if the left-hand value is greater than the right-hand. +/// +/// Example: Test if a player has scored more than 10 points. +/// r.table('players').get(1)('score').gt(10).run(conn, callback); +/// + public Gt (Arguments args, OptArgs optargs) + : base(TermType.GT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs.meta new file mode 100644 index 000000000..2b446e6c0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Gt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a645643565a9f94f837d45751575ccd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs new file mode 100644 index 000000000..94dc0c14d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class HasFields : ReqlExpr { + + + + +/// +/// Test if an object has one or more fields. An object has a field if it has that key and the key has a non-null value. For instance, the object {'a': 1,'b': 2,'c': null} has the fields a and b. +/// +/// Example: Return the players who have won games. +/// r.table('players').hasFields('games_won').run(conn, callback) +/// + public HasFields (object arg) : this(new Arguments(arg), null) { + } +/// +/// Test if an object has one or more fields. An object has a field if it has that key and the key has a non-null value. For instance, the object {'a': 1,'b': 2,'c': null} has the fields a and b. +/// +/// Example: Return the players who have won games. +/// r.table('players').hasFields('games_won').run(conn, callback) +/// + public HasFields (Arguments args) : this(args, null) { + } +/// +/// Test if an object has one or more fields. An object has a field if it has that key and the key has a non-null value. For instance, the object {'a': 1,'b': 2,'c': null} has the fields a and b. +/// +/// Example: Return the players who have won games. +/// r.table('players').hasFields('games_won').run(conn, callback) +/// + public HasFields (Arguments args, OptArgs optargs) + : base(TermType.HAS_FIELDS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs.meta new file mode 100644 index 000000000..e09f45a72 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/HasFields.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf21ef07daea88743b7e9d5d3e50ac0f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs new file mode 100644 index 000000000..e219b2b75 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Hours : ReqlExpr { + + + + +/// +/// Return the hour in a time object as a number between 0 and 23. +/// +/// Example: Return all the posts submitted after midnight and before 4am. +/// r.table("posts").filter(function(post) { +/// return post("date").hours().lt(4) +/// }) +/// + public Hours (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the hour in a time object as a number between 0 and 23. +/// +/// Example: Return all the posts submitted after midnight and before 4am. +/// r.table("posts").filter(function(post) { +/// return post("date").hours().lt(4) +/// }) +/// + public Hours (Arguments args) : this(args, null) { + } +/// +/// Return the hour in a time object as a number between 0 and 23. +/// +/// Example: Return all the posts submitted after midnight and before 4am. +/// r.table("posts").filter(function(post) { +/// return post("date").hours().lt(4) +/// }) +/// + public Hours (Arguments args, OptArgs optargs) + : base(TermType.HOURS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs.meta new file mode 100644 index 000000000..8e0531e65 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Hours.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe262e7b5da2b79428fd06d66f9361fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs new file mode 100644 index 000000000..3c98a79f4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Http : ReqlExpr { + + + + +/// +/// Retrieve data from the specified URL over HTTP. The return type depends on the resultFormat option, which checks the Content-Type of the response by default. +/// +/// Example: Perform an HTTP GET and store the result in a table. +/// r.table('posts').insert(r.http('http://httpbin.org/get')).run(conn, callback) +/// + public Http (object arg) : this(new Arguments(arg), null) { + } +/// +/// Retrieve data from the specified URL over HTTP. The return type depends on the resultFormat option, which checks the Content-Type of the response by default. +/// +/// Example: Perform an HTTP GET and store the result in a table. +/// r.table('posts').insert(r.http('http://httpbin.org/get')).run(conn, callback) +/// + public Http (Arguments args) : this(args, null) { + } +/// +/// Retrieve data from the specified URL over HTTP. The return type depends on the resultFormat option, which checks the Content-Type of the response by default. +/// +/// Example: Perform an HTTP GET and store the result in a table. +/// r.table('posts').insert(r.http('http://httpbin.org/get')).run(conn, callback) +/// + public Http (Arguments args, OptArgs optargs) + : base(TermType.HTTP, args, optargs) { + } + + + + + + + +/// +/// "timeout": "T_NUM", +/// "reattempts": "T_NUM", +/// "redirects": "T_NUM", +/// "verify": "T_BOOL", +/// "result_format": "E_RESULT_FORMAT", +/// "method": "E_HTTP_METHOD", +/// "auth": { +/// "type": "E_AUTH_TYPE", +/// "user": "T_STR", +/// "pass": "T_STR" +/// }, +/// "params": "T_OBJECT", +/// "header": [ +/// "T_ARRAY", +/// "T_OBJECT" +/// ], +/// "data": [ +/// "T_STR", +/// "T_OBJECT" +/// ] +/// + public Http this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Http (this.Args, newOptArgs); + } + } + +/// +/// "timeout": "T_NUM", +/// "reattempts": "T_NUM", +/// "redirects": "T_NUM", +/// "verify": "T_BOOL", +/// "result_format": "E_RESULT_FORMAT", +/// "method": "E_HTTP_METHOD", +/// "auth": { +/// "type": "E_AUTH_TYPE", +/// "user": "T_STR", +/// "pass": "T_STR" +/// }, +/// "params": "T_OBJECT", +/// "header": [ +/// "T_ARRAY", +/// "T_OBJECT" +/// ], +/// "data": [ +/// "T_STR", +/// "T_OBJECT" +/// ] +/// + public Http this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Http (this.Args, newOptArgs); + } + } + +/// +/// "timeout": "T_NUM", +/// "reattempts": "T_NUM", +/// "redirects": "T_NUM", +/// "verify": "T_BOOL", +/// "result_format": "E_RESULT_FORMAT", +/// "method": "E_HTTP_METHOD", +/// "auth": { +/// "type": "E_AUTH_TYPE", +/// "user": "T_STR", +/// "pass": "T_STR" +/// }, +/// "params": "T_OBJECT", +/// "header": [ +/// "T_ARRAY", +/// "T_OBJECT" +/// ], +/// "data": [ +/// "T_STR", +/// "T_OBJECT" +/// ] +/// + public Http OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Http (this.Args, newOptArgs); + } + internal Http optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs.meta new file mode 100644 index 000000000..56fae496a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Http.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 639b8614629d9b14f8df7881beef5414 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs new file mode 100644 index 000000000..1fa16adb0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class InTimezone : ReqlExpr { + + + + +/// +/// Return a new time object with a different timezone. While the time stays the same, the results returned by methods such as hours() will change since they take the timezone into account. The timezone argument has to be of the ISO 8601 format. +/// +/// Example: Hour of the day in San Francisco (UTC/GMT -8, without daylight saving time). +/// r.now().inTimezone('-08:00').hours().run(conn, callback) +/// + public InTimezone (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return a new time object with a different timezone. While the time stays the same, the results returned by methods such as hours() will change since they take the timezone into account. The timezone argument has to be of the ISO 8601 format. +/// +/// Example: Hour of the day in San Francisco (UTC/GMT -8, without daylight saving time). +/// r.now().inTimezone('-08:00').hours().run(conn, callback) +/// + public InTimezone (Arguments args) : this(args, null) { + } +/// +/// Return a new time object with a different timezone. While the time stays the same, the results returned by methods such as hours() will change since they take the timezone into account. The timezone argument has to be of the ISO 8601 format. +/// +/// Example: Hour of the day in San Francisco (UTC/GMT -8, without daylight saving time). +/// r.now().inTimezone('-08:00').hours().run(conn, callback) +/// + public InTimezone (Arguments args, OptArgs optargs) + : base(TermType.IN_TIMEZONE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs.meta new file mode 100644 index 000000000..513519302 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InTimezone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23b76992ba4984f4ea769b6d7cab5d3e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs new file mode 100644 index 000000000..882787583 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Includes : ReqlExpr { + + + + +/// +/// Tests whether a geometry object is completely contained within another. When applied to a sequence of geometry objects, includes acts as a filter, returning a sequence of objects from the sequence that include the argument. +/// +/// Example: Is point2 included within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).includes(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Includes (object arg) : this(new Arguments(arg), null) { + } +/// +/// Tests whether a geometry object is completely contained within another. When applied to a sequence of geometry objects, includes acts as a filter, returning a sequence of objects from the sequence that include the argument. +/// +/// Example: Is point2 included within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).includes(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Includes (Arguments args) : this(args, null) { + } +/// +/// Tests whether a geometry object is completely contained within another. When applied to a sequence of geometry objects, includes acts as a filter, returning a sequence of objects from the sequence that include the argument. +/// +/// Example: Is point2 included within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).includes(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Includes (Arguments args, OptArgs optargs) + : base(TermType.INCLUDES, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs.meta new file mode 100644 index 000000000..9973d45c4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Includes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fd48d07de32db243aaffc2ab991914f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs new file mode 100644 index 000000000..404f1903a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class IndexCreate : ReqlExpr { + + + + +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate (object arg) : this(new Arguments(arg), null) { + } +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate (Arguments args) : this(args, null) { + } +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate (Arguments args, OptArgs optargs) + : base(TermType.INDEX_CREATE, args, optargs) { + } + + + + + + + +/// +/// "multi": "T_BOOL", +/// "geo": "T_BOOL" +/// + public IndexCreate this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new IndexCreate (this.Args, newOptArgs); + } + } + +/// +/// "multi": "T_BOOL", +/// "geo": "T_BOOL" +/// + public IndexCreate this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new IndexCreate (this.Args, newOptArgs); + } + } + +/// +/// "multi": "T_BOOL", +/// "geo": "T_BOOL" +/// + public IndexCreate OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new IndexCreate (this.Args, newOptArgs); + } + internal IndexCreate optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs.meta new file mode 100644 index 000000000..50e6164c4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexCreate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b737e52cf6b27154181bc134ea96d6b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs new file mode 100644 index 000000000..d80c5dcbd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class IndexDrop : ReqlExpr { + + + + +/// +/// Delete a previously created secondary index of this table. +/// +/// Example: Drop a secondary index named 'code_name'. +/// r.table('dc').indexDrop('code_name').run(conn, callback) +/// + public IndexDrop (object arg) : this(new Arguments(arg), null) { + } +/// +/// Delete a previously created secondary index of this table. +/// +/// Example: Drop a secondary index named 'code_name'. +/// r.table('dc').indexDrop('code_name').run(conn, callback) +/// + public IndexDrop (Arguments args) : this(args, null) { + } +/// +/// Delete a previously created secondary index of this table. +/// +/// Example: Drop a secondary index named 'code_name'. +/// r.table('dc').indexDrop('code_name').run(conn, callback) +/// + public IndexDrop (Arguments args, OptArgs optargs) + : base(TermType.INDEX_DROP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs.meta new file mode 100644 index 000000000..08e94b436 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexDrop.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c866157b16c08054582052939383a411 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs new file mode 100644 index 000000000..fe18176f5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class IndexList : ReqlExpr { + + + + +/// +/// List all the secondary indexes of this table. +/// +/// Example: List the available secondary indexes for this table. +/// r.table('marvel').indexList().run(conn, callback) +/// + public IndexList (object arg) : this(new Arguments(arg), null) { + } +/// +/// List all the secondary indexes of this table. +/// +/// Example: List the available secondary indexes for this table. +/// r.table('marvel').indexList().run(conn, callback) +/// + public IndexList (Arguments args) : this(args, null) { + } +/// +/// List all the secondary indexes of this table. +/// +/// Example: List the available secondary indexes for this table. +/// r.table('marvel').indexList().run(conn, callback) +/// + public IndexList (Arguments args, OptArgs optargs) + : base(TermType.INDEX_LIST, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs.meta new file mode 100644 index 000000000..8c0afb230 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2560a93cf91d67c4aaf126872f9d6e76 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs new file mode 100644 index 000000000..80afb37df --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class IndexRename : ReqlExpr { + + + + +/// +/// Rename an existing secondary index on a table. If the optional argument overwrite is specified as true, a previously existing index with the new name will be deleted and the index will be renamed. If overwrite is false (the default) an error will be raised if the new index name already exists. +/// +/// Example: Rename an index on the comments table. +/// r.table('comments').indexRename('postId', 'messageId').run(conn, callback) +/// + public IndexRename (object arg) : this(new Arguments(arg), null) { + } +/// +/// Rename an existing secondary index on a table. If the optional argument overwrite is specified as true, a previously existing index with the new name will be deleted and the index will be renamed. If overwrite is false (the default) an error will be raised if the new index name already exists. +/// +/// Example: Rename an index on the comments table. +/// r.table('comments').indexRename('postId', 'messageId').run(conn, callback) +/// + public IndexRename (Arguments args) : this(args, null) { + } +/// +/// Rename an existing secondary index on a table. If the optional argument overwrite is specified as true, a previously existing index with the new name will be deleted and the index will be renamed. If overwrite is false (the default) an error will be raised if the new index name already exists. +/// +/// Example: Rename an index on the comments table. +/// r.table('comments').indexRename('postId', 'messageId').run(conn, callback) +/// + public IndexRename (Arguments args, OptArgs optargs) + : base(TermType.INDEX_RENAME, args, optargs) { + } + + + + + + + +/// +/// "overwrite": "T_BOOL" +/// + public IndexRename this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new IndexRename (this.Args, newOptArgs); + } + } + +/// +/// "overwrite": "T_BOOL" +/// + public IndexRename this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new IndexRename (this.Args, newOptArgs); + } + } + +/// +/// "overwrite": "T_BOOL" +/// + public IndexRename OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new IndexRename (this.Args, newOptArgs); + } + internal IndexRename optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs.meta new file mode 100644 index 000000000..952841ed5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexRename.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c5180897d58d94047be9aba5d0ed2216 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs new file mode 100644 index 000000000..8046f07bd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class IndexStatus : ReqlExpr { + + + + +/// +/// Get the status of the specified indexes on this table, or the status +/// of all indexes on this table if no indexes are specified. +/// +/// Example: Get the status of all the indexes on test: +/// r.table('test').indexStatus().run(conn, callback) +/// + public IndexStatus (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get the status of the specified indexes on this table, or the status +/// of all indexes on this table if no indexes are specified. +/// +/// Example: Get the status of all the indexes on test: +/// r.table('test').indexStatus().run(conn, callback) +/// + public IndexStatus (Arguments args) : this(args, null) { + } +/// +/// Get the status of the specified indexes on this table, or the status +/// of all indexes on this table if no indexes are specified. +/// +/// Example: Get the status of all the indexes on test: +/// r.table('test').indexStatus().run(conn, callback) +/// + public IndexStatus (Arguments args, OptArgs optargs) + : base(TermType.INDEX_STATUS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs.meta new file mode 100644 index 000000000..0cddd44f3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexStatus.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0e2373c4f30085e44ba6ab7b269f89f5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs new file mode 100644 index 000000000..187b5af32 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class IndexWait : ReqlExpr { + + + + +/// +/// Wait for the specified indexes on this table to be ready, or for all +/// indexes on this table to be ready if no indexes are specified. +/// +/// Example: Wait for all indexes on the table test to be ready: +/// r.table('test').indexWait().run(conn, callback) +/// + public IndexWait (object arg) : this(new Arguments(arg), null) { + } +/// +/// Wait for the specified indexes on this table to be ready, or for all +/// indexes on this table to be ready if no indexes are specified. +/// +/// Example: Wait for all indexes on the table test to be ready: +/// r.table('test').indexWait().run(conn, callback) +/// + public IndexWait (Arguments args) : this(args, null) { + } +/// +/// Wait for the specified indexes on this table to be ready, or for all +/// indexes on this table to be ready if no indexes are specified. +/// +/// Example: Wait for all indexes on the table test to be ready: +/// r.table('test').indexWait().run(conn, callback) +/// + public IndexWait (Arguments args, OptArgs optargs) + : base(TermType.INDEX_WAIT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs.meta new file mode 100644 index 000000000..c4b1fbf32 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IndexWait.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f3b80916799e5740b7df5f3f598e888 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs new file mode 100644 index 000000000..2aa19ff20 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Info : ReqlExpr { + + + + +/// +/// Get information about a ReQL value. +/// +/// Example: Get information about a table such as primary key, or cache size. +/// r.table('marvel').info().run(conn, callback) +/// + public Info (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get information about a ReQL value. +/// +/// Example: Get information about a table such as primary key, or cache size. +/// r.table('marvel').info().run(conn, callback) +/// + public Info (Arguments args) : this(args, null) { + } +/// +/// Get information about a ReQL value. +/// +/// Example: Get information about a table such as primary key, or cache size. +/// r.table('marvel').info().run(conn, callback) +/// + public Info (Arguments args, OptArgs optargs) + : base(TermType.INFO, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs.meta new file mode 100644 index 000000000..452f45982 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Info.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bcb9151eb8459442a6b14db67577ea1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs new file mode 100644 index 000000000..db41e649f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class InnerJoin : ReqlExpr { + + + + +/// +/// Returns an inner join of two sequences. +/// +/// Example: Return a list of all matchups between Marvel and DC heroes in which the DC hero could beat the Marvel hero in a fight. +/// r.table('marvel').innerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).zip().run(conn, callback) +/// + public InnerJoin (object arg) : this(new Arguments(arg), null) { + } +/// +/// Returns an inner join of two sequences. +/// +/// Example: Return a list of all matchups between Marvel and DC heroes in which the DC hero could beat the Marvel hero in a fight. +/// r.table('marvel').innerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).zip().run(conn, callback) +/// + public InnerJoin (Arguments args) : this(args, null) { + } +/// +/// Returns an inner join of two sequences. +/// +/// Example: Return a list of all matchups between Marvel and DC heroes in which the DC hero could beat the Marvel hero in a fight. +/// r.table('marvel').innerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).zip().run(conn, callback) +/// + public InnerJoin (Arguments args, OptArgs optargs) + : base(TermType.INNER_JOIN, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs.meta new file mode 100644 index 000000000..ab888effd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InnerJoin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 92152dd18336ad44090aa769f5e1c033 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs new file mode 100644 index 000000000..2a0985917 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Insert : ReqlExpr { + + + + +/// +/// Insert documents into a table. Accepts a single document or an array of +/// documents. +/// +/// Example: Insert a document into the table posts. +/// r.table("posts").insert({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Dolor sit amet" +/// }).run(conn, callback) +/// + public Insert (object arg) : this(new Arguments(arg), null) { + } +/// +/// Insert documents into a table. Accepts a single document or an array of +/// documents. +/// +/// Example: Insert a document into the table posts. +/// r.table("posts").insert({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Dolor sit amet" +/// }).run(conn, callback) +/// + public Insert (Arguments args) : this(args, null) { + } +/// +/// Insert documents into a table. Accepts a single document or an array of +/// documents. +/// +/// Example: Insert a document into the table posts. +/// r.table("posts").insert({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Dolor sit amet" +/// }).run(conn, callback) +/// + public Insert (Arguments args, OptArgs optargs) + : base(TermType.INSERT, args, optargs) { + } + + + + + + + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "conflict": "E_CONFLICT" +/// + public Insert this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Insert (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "conflict": "E_CONFLICT" +/// + public Insert this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Insert (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "conflict": "E_CONFLICT" +/// + public Insert OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Insert (this.Args, newOptArgs); + } + internal Insert optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs.meta new file mode 100644 index 000000000..8c3e7e615 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Insert.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33c3628a3a10a064ba0f034fd6400888 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs new file mode 100644 index 000000000..de577b874 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class InsertAt : ReqlExpr { + + + + +/// +/// Insert a value in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk decides to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).insertAt(1, "Hulk").run(conn, callback) +/// + public InsertAt (object arg) : this(new Arguments(arg), null) { + } +/// +/// Insert a value in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk decides to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).insertAt(1, "Hulk").run(conn, callback) +/// + public InsertAt (Arguments args) : this(args, null) { + } +/// +/// Insert a value in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk decides to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).insertAt(1, "Hulk").run(conn, callback) +/// + public InsertAt (Arguments args, OptArgs optargs) + : base(TermType.INSERT_AT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs.meta new file mode 100644 index 000000000..b30fcc8ab --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/InsertAt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dc4ae03eed7071245acd4eb4fbb1b0dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs new file mode 100644 index 000000000..bac02d304 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Intersects : ReqlExpr { + + + + +/// +/// Tests whether two geometry objects intersect with one another. When applied to a sequence of geometry objects, intersects acts as a filter, returning a sequence of objects from the sequence that intersect with the argument. +/// +/// Example: Is point2 within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).intersects(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Intersects (object arg) : this(new Arguments(arg), null) { + } +/// +/// Tests whether two geometry objects intersect with one another. When applied to a sequence of geometry objects, intersects acts as a filter, returning a sequence of objects from the sequence that intersect with the argument. +/// +/// Example: Is point2 within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).intersects(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Intersects (Arguments args) : this(args, null) { + } +/// +/// Tests whether two geometry objects intersect with one another. When applied to a sequence of geometry objects, intersects acts as a filter, returning a sequence of objects from the sequence that intersect with the argument. +/// +/// Example: Is point2 within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).intersects(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Intersects (Arguments args, OptArgs optargs) + : base(TermType.INTERSECTS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs.meta new file mode 100644 index 000000000..a80fe6979 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Intersects.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cfb3faae546c5b44195e009aa7771efc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs new file mode 100644 index 000000000..a9712c0dd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class IsEmpty : ReqlExpr { + + + + +/// +/// Test if a sequence is empty. +/// +/// Example: Are there any documents in the marvel table? +/// r.table('marvel').isEmpty().run(conn, callback) +/// + public IsEmpty (object arg) : this(new Arguments(arg), null) { + } +/// +/// Test if a sequence is empty. +/// +/// Example: Are there any documents in the marvel table? +/// r.table('marvel').isEmpty().run(conn, callback) +/// + public IsEmpty (Arguments args) : this(args, null) { + } +/// +/// Test if a sequence is empty. +/// +/// Example: Are there any documents in the marvel table? +/// r.table('marvel').isEmpty().run(conn, callback) +/// + public IsEmpty (Arguments args, OptArgs optargs) + : base(TermType.IS_EMPTY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs.meta new file mode 100644 index 000000000..2869f783c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/IsEmpty.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c251477e5d39c964f8f289e14d19253d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs new file mode 100644 index 000000000..93f407f30 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Iso8601 : ReqlExpr { + + + + +/// +/// Create a time object based on an ISO 8601 date-time string (e.g. '2013-01-01T01:01:01+00:00'). RethinkDB supports all valid ISO 8601 formats except for week dates. Read more about the ISO 8601 format at Wikipedia. +/// +/// Example: Update the time of John's birth. +/// r.table("user").get("John").update({birth: r.ISO8601('1986-11-03T08:30:00-07:00')}).run(conn, callback) +/// + public Iso8601 (object arg) : this(new Arguments(arg), null) { + } +/// +/// Create a time object based on an ISO 8601 date-time string (e.g. '2013-01-01T01:01:01+00:00'). RethinkDB supports all valid ISO 8601 formats except for week dates. Read more about the ISO 8601 format at Wikipedia. +/// +/// Example: Update the time of John's birth. +/// r.table("user").get("John").update({birth: r.ISO8601('1986-11-03T08:30:00-07:00')}).run(conn, callback) +/// + public Iso8601 (Arguments args) : this(args, null) { + } +/// +/// Create a time object based on an ISO 8601 date-time string (e.g. '2013-01-01T01:01:01+00:00'). RethinkDB supports all valid ISO 8601 formats except for week dates. Read more about the ISO 8601 format at Wikipedia. +/// +/// Example: Update the time of John's birth. +/// r.table("user").get("John").update({birth: r.ISO8601('1986-11-03T08:30:00-07:00')}).run(conn, callback) +/// + public Iso8601 (Arguments args, OptArgs optargs) + : base(TermType.ISO8601, args, optargs) { + } + + + + + + + +/// +/// "default_timezone": "T_STR" +/// + public Iso8601 this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Iso8601 (this.Args, newOptArgs); + } + } + +/// +/// "default_timezone": "T_STR" +/// + public Iso8601 this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Iso8601 (this.Args, newOptArgs); + } + } + +/// +/// "default_timezone": "T_STR" +/// + public Iso8601 OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Iso8601 (this.Args, newOptArgs); + } + internal Iso8601 optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + + + + + + + + public static Iso8601 FromString(string iso) { + return new Iso8601 (new Arguments(iso), null); + } + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs.meta new file mode 100644 index 000000000..8c6668799 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Iso8601.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f11e0bf3ea9175545854144e9e2cc1c4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs new file mode 100644 index 000000000..2ff484086 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class January : ReqlExpr { + + + + + public January (object arg) : this(new Arguments(arg), null) { + } + public January (Arguments args) : this(args, null) { + } + public January (Arguments args, OptArgs optargs) + : base(TermType.JANUARY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs.meta new file mode 100644 index 000000000..377ff2819 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/January.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4014438b89dc3974595e4c5777912fef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs new file mode 100644 index 000000000..b9070fafd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Javascript : ReqlExpr { + + + + + public Javascript (object arg) : this(new Arguments(arg), null) { + } + public Javascript (Arguments args) : this(args, null) { + } + public Javascript (Arguments args, OptArgs optargs) + : base(TermType.JAVASCRIPT, args, optargs) { + } + + + + + + + +/// +/// "timeout": "T_NUM" +/// + public Javascript this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Javascript (this.Args, newOptArgs); + } + } + +/// +/// "timeout": "T_NUM" +/// + public Javascript this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Javascript (this.Args, newOptArgs); + } + } + +/// +/// "timeout": "T_NUM" +/// + public Javascript OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Javascript (this.Args, newOptArgs); + } + internal Javascript optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs.meta new file mode 100644 index 000000000..63102dad1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Javascript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b813b57509da1ee4abcc254c4225b2fd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs new file mode 100644 index 000000000..3b311151c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Json : ReqlExpr { + + + + +/// +/// Parse a JSON string on the server. +/// +/// Example: Send an array to the server. +/// r.json("[1,2,3]").run(conn, callback) +/// + public Json (object arg) : this(new Arguments(arg), null) { + } +/// +/// Parse a JSON string on the server. +/// +/// Example: Send an array to the server. +/// r.json("[1,2,3]").run(conn, callback) +/// + public Json (Arguments args) : this(args, null) { + } +/// +/// Parse a JSON string on the server. +/// +/// Example: Send an array to the server. +/// r.json("[1,2,3]").run(conn, callback) +/// + public Json (Arguments args, OptArgs optargs) + : base(TermType.JSON, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs.meta new file mode 100644 index 000000000..d359d8a3c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Json.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f50b3f9ab1778245968d7ab041a5b5f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs new file mode 100644 index 000000000..fb7827b9b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class July : ReqlExpr { + + + + + public July (object arg) : this(new Arguments(arg), null) { + } + public July (Arguments args) : this(args, null) { + } + public July (Arguments args, OptArgs optargs) + : base(TermType.JULY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs.meta new file mode 100644 index 000000000..3a99bae16 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/July.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 232429281a5cdbf4c930e50b7421d171 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs new file mode 100644 index 000000000..7ab72f082 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class June : ReqlExpr { + + + + + public June (object arg) : this(new Arguments(arg), null) { + } + public June (Arguments args) : this(args, null) { + } + public June (Arguments args, OptArgs optargs) + : base(TermType.JUNE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs.meta new file mode 100644 index 000000000..ef0cf3925 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/June.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e989d3ef938fe8a46b8c1711caf7c1eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs new file mode 100644 index 000000000..cb349df13 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Keys : ReqlExpr { + + + + +/// +/// Return an array containing all of an object's keys. Note that the keys will be sorted as described in ReQL data types (for strings, lexicographically). +/// +/// Example: Get all the keys from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).keys().run(conn, callback); +/// // Result passed to callback +/// [ "id", "mail", "name" ] +/// + public Keys (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return an array containing all of an object's keys. Note that the keys will be sorted as described in ReQL data types (for strings, lexicographically). +/// +/// Example: Get all the keys from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).keys().run(conn, callback); +/// // Result passed to callback +/// [ "id", "mail", "name" ] +/// + public Keys (Arguments args) : this(args, null) { + } +/// +/// Return an array containing all of an object's keys. Note that the keys will be sorted as described in ReQL data types (for strings, lexicographically). +/// +/// Example: Get all the keys from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).keys().run(conn, callback); +/// // Result passed to callback +/// [ "id", "mail", "name" ] +/// + public Keys (Arguments args, OptArgs optargs) + : base(TermType.KEYS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs.meta new file mode 100644 index 000000000..2c87f43e0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Keys.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b334e4860713ce949b3e5ca56daf8723 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs new file mode 100644 index 000000000..55a5965aa --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Le : ReqlExpr { + + + + +/// +/// Compare values, testing if the left-hand value is less than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or less. +/// r.table('players').get(1)('score').le(10).run(conn, callback); +/// + public Le (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compare values, testing if the left-hand value is less than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or less. +/// r.table('players').get(1)('score').le(10).run(conn, callback); +/// + public Le (Arguments args) : this(args, null) { + } +/// +/// Compare values, testing if the left-hand value is less than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or less. +/// r.table('players').get(1)('score').le(10).run(conn, callback); +/// + public Le (Arguments args, OptArgs optargs) + : base(TermType.LE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs.meta new file mode 100644 index 000000000..35f8f1a87 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Le.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8d1927e73d32e5048ac2701a5b076b61 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs new file mode 100644 index 000000000..17584fa63 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Limit : ReqlExpr { + + + + +/// +/// End the sequence after the given number of elements. +/// +/// Example: Only so many can fit in our Pantheon of heroes. +/// r.table('marvel').orderBy('belovedness').limit(10).run(conn, callback) +/// + public Limit (object arg) : this(new Arguments(arg), null) { + } +/// +/// End the sequence after the given number of elements. +/// +/// Example: Only so many can fit in our Pantheon of heroes. +/// r.table('marvel').orderBy('belovedness').limit(10).run(conn, callback) +/// + public Limit (Arguments args) : this(args, null) { + } +/// +/// End the sequence after the given number of elements. +/// +/// Example: Only so many can fit in our Pantheon of heroes. +/// r.table('marvel').orderBy('belovedness').limit(10).run(conn, callback) +/// + public Limit (Arguments args, OptArgs optargs) + : base(TermType.LIMIT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs.meta new file mode 100644 index 000000000..5012a296f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Limit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9be31bb90d14ce5438fac63abb975fc1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs new file mode 100644 index 000000000..7d0db7177 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Line : ReqlExpr { + + + + +/// +/// Construct a geometry object of type Line. The line can be specified in one of two ways: +///
    +///
  • Two or more two-item arrays, specifying latitude and longitude numbers of the line's vertices;
  • +///
  • Two or more Point objects specifying the line's vertices.
  • +///
+///
+/// Example: Define a line. +/// r.table('geo').insert({ +/// id: 101, +/// route: r.line([-122.423246,37.779388], [-121.886420,37.329898]) +/// }).run(conn, callback); +/// + public Line (object arg) : this(new Arguments(arg), null) { + } +/// +/// Construct a geometry object of type Line. The line can be specified in one of two ways: +///
    +///
  • Two or more two-item arrays, specifying latitude and longitude numbers of the line's vertices;
  • +///
  • Two or more Point objects specifying the line's vertices.
  • +///
+///
+/// Example: Define a line. +/// r.table('geo').insert({ +/// id: 101, +/// route: r.line([-122.423246,37.779388], [-121.886420,37.329898]) +/// }).run(conn, callback); +/// + public Line (Arguments args) : this(args, null) { + } +/// +/// Construct a geometry object of type Line. The line can be specified in one of two ways: +///
    +///
  • Two or more two-item arrays, specifying latitude and longitude numbers of the line's vertices;
  • +///
  • Two or more Point objects specifying the line's vertices.
  • +///
+///
+/// Example: Define a line. +/// r.table('geo').insert({ +/// id: 101, +/// route: r.line([-122.423246,37.779388], [-121.886420,37.329898]) +/// }).run(conn, callback); +/// + public Line (Arguments args, OptArgs optargs) + : base(TermType.LINE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs.meta new file mode 100644 index 000000000..cf6a42ce3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Line.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc585bd061d5ff74180a629c4bf1f746 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs new file mode 100644 index 000000000..1cfd673d4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Literal : ReqlExpr { + + + + +/// +/// Replace an object in a field instead of merging it with an existing object in a merge or update operation. Using literal with no arguments in a merge or update operation will remove the corresponding field. +/// +/// Example: Replace one nested document with another rather than merging the fields. +/// r.table('users').get(1).update({ data: r.literal({ age: 19, job: 'Engineer' }) }).run(conn, callback) +/// +/// // Result passed to callback +/// { +/// "id": 1, +/// "name": "Alice", +/// "data": { +/// "age": 19, +/// "job": "Engineer" +/// } +/// } +/// + public Literal (object arg) : this(new Arguments(arg), null) { + } +/// +/// Replace an object in a field instead of merging it with an existing object in a merge or update operation. Using literal with no arguments in a merge or update operation will remove the corresponding field. +/// +/// Example: Replace one nested document with another rather than merging the fields. +/// r.table('users').get(1).update({ data: r.literal({ age: 19, job: 'Engineer' }) }).run(conn, callback) +/// +/// // Result passed to callback +/// { +/// "id": 1, +/// "name": "Alice", +/// "data": { +/// "age": 19, +/// "job": "Engineer" +/// } +/// } +/// + public Literal (Arguments args) : this(args, null) { + } +/// +/// Replace an object in a field instead of merging it with an existing object in a merge or update operation. Using literal with no arguments in a merge or update operation will remove the corresponding field. +/// +/// Example: Replace one nested document with another rather than merging the fields. +/// r.table('users').get(1).update({ data: r.literal({ age: 19, job: 'Engineer' }) }).run(conn, callback) +/// +/// // Result passed to callback +/// { +/// "id": 1, +/// "name": "Alice", +/// "data": { +/// "age": 19, +/// "job": "Engineer" +/// } +/// } +/// + public Literal (Arguments args, OptArgs optargs) + : base(TermType.LITERAL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs.meta new file mode 100644 index 000000000..23c1e0c55 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Literal.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7bf69ea62380d66429286addcda41faa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs new file mode 100644 index 000000000..0c697d344 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Lt : ReqlExpr { + + + + +/// +/// Compare values, testing if the left-hand value is less than the right-hand. +/// +/// Example: Test if a player has scored less than 10 points. +/// r.table('players').get(1)('score').lt(10).run(conn, callback); +/// + public Lt (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compare values, testing if the left-hand value is less than the right-hand. +/// +/// Example: Test if a player has scored less than 10 points. +/// r.table('players').get(1)('score').lt(10).run(conn, callback); +/// + public Lt (Arguments args) : this(args, null) { + } +/// +/// Compare values, testing if the left-hand value is less than the right-hand. +/// +/// Example: Test if a player has scored less than 10 points. +/// r.table('players').get(1)('score').lt(10).run(conn, callback); +/// + public Lt (Arguments args, OptArgs optargs) + : base(TermType.LT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs.meta new file mode 100644 index 000000000..4bd6ab6e9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Lt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ddd0f9d605b7a7944bda1723074b4a54 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs new file mode 100644 index 000000000..649086be6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class MakeArray : ReqlExpr { + + + + + public MakeArray (object arg) : this(new Arguments(arg), null) { + } + public MakeArray (Arguments args) : this(args, null) { + } + public MakeArray (Arguments args, OptArgs optargs) + : base(TermType.MAKE_ARRAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs.meta new file mode 100644 index 000000000..306a72b68 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeArray.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cdc572b330bbedb44a90127c4fb57884 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs new file mode 100644 index 000000000..45bd31648 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class MakeObj : ReqlExpr { + + + + + public MakeObj(Object arg) : this(new Arguments(arg), null) { + + } + public MakeObj(OptArgs opts) : this(new Arguments(), opts) { + } + public MakeObj(Arguments args) : this(args, null) { + } + public MakeObj(Arguments args, OptArgs optargs) : + this(TermType.MAKE_OBJ, args, optargs) { + } + protected MakeObj(TermType termType, Arguments args, OptArgs optargs) + : base(termType, args, optargs){ + + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + + + + + + + + + internal static MakeObj fromMap(Dictionary map){ + return new MakeObj(OptArgs.FromMap(map)); + } + public static MakeObj FromMap(Dictionary map){ + return FromMap(map); + } + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs.meta new file mode 100644 index 000000000..c7a887a4b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/MakeObj.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3dd0bdbed5e7b5649b9ea95f9fca523d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs new file mode 100644 index 000000000..1de849537 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Map : ReqlExpr { + + + + +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map (object arg) : this(new Arguments(arg), null) { + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map (Arguments args) : this(args, null) { + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map (Arguments args, OptArgs optargs) + : base(TermType.MAP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs.meta new file mode 100644 index 000000000..5e10b934a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Map.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f093a6d776076c447bd6c97fe1a062d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs new file mode 100644 index 000000000..3ac10cb24 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class March : ReqlExpr { + + + + + public March (object arg) : this(new Arguments(arg), null) { + } + public March (Arguments args) : this(args, null) { + } + public March (Arguments args, OptArgs optargs) + : base(TermType.MARCH, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs.meta new file mode 100644 index 000000000..da63d789e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/March.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ef2e3998fb3ba944b013b43687c07c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs new file mode 100644 index 000000000..25528e46b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Match : ReqlExpr { + + + + +/// +/// Matches against a regular expression. If there is a match, returns an object with the fields: +///
    +///
  • str: The matched string
  • +///
  • start: The matched string's start
  • +///
  • end: The matched string's end
  • +///
  • groups: The capture groups defined with parentheses
  • +///
+/// If no match is found, returns null. +///
+/// Example: Get all users whose name starts with "A". Because null evaluates to false in +/// filter, you can just use the result of match for the predicate. +/// r.table('users').filter(function(doc){ +/// return doc('name').match("^A") +/// }).run(conn, callback) +/// + public Match (object arg) : this(new Arguments(arg), null) { + } +/// +/// Matches against a regular expression. If there is a match, returns an object with the fields: +///
    +///
  • str: The matched string
  • +///
  • start: The matched string's start
  • +///
  • end: The matched string's end
  • +///
  • groups: The capture groups defined with parentheses
  • +///
+/// If no match is found, returns null. +///
+/// Example: Get all users whose name starts with "A". Because null evaluates to false in +/// filter, you can just use the result of match for the predicate. +/// r.table('users').filter(function(doc){ +/// return doc('name').match("^A") +/// }).run(conn, callback) +/// + public Match (Arguments args) : this(args, null) { + } +/// +/// Matches against a regular expression. If there is a match, returns an object with the fields: +///
    +///
  • str: The matched string
  • +///
  • start: The matched string's start
  • +///
  • end: The matched string's end
  • +///
  • groups: The capture groups defined with parentheses
  • +///
+/// If no match is found, returns null. +///
+/// Example: Get all users whose name starts with "A". Because null evaluates to false in +/// filter, you can just use the result of match for the predicate. +/// r.table('users').filter(function(doc){ +/// return doc('name').match("^A") +/// }).run(conn, callback) +/// + public Match (Arguments args, OptArgs optargs) + : base(TermType.MATCH, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs.meta new file mode 100644 index 000000000..eea265ea7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Match.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c38f23a5eacf9340bd0485a8f268968 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs new file mode 100644 index 000000000..2944e36fc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Max : ReqlExpr { + + + + +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max (object arg) : this(new Arguments(arg), null) { + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max (Arguments args) : this(args, null) { + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max (Arguments args, OptArgs optargs) + : base(TermType.MAX, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR" +/// + public Max this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Max (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public Max this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Max (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public Max OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Max (this.Args, newOptArgs); + } + internal Max optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs.meta new file mode 100644 index 000000000..fd83f825d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Max.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1724b69c3539de4baa0faae9d3e0e1f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs new file mode 100644 index 000000000..d19cdf72f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Maxval : ReqlExpr { + + + + + public Maxval (object arg) : this(new Arguments(arg), null) { + } + public Maxval (Arguments args) : this(args, null) { + } + public Maxval (Arguments args, OptArgs optargs) + : base(TermType.MAXVAL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs.meta new file mode 100644 index 000000000..677a18dc0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Maxval.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 20a6a645a9983f946abba21cd7f97790 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs new file mode 100644 index 000000000..f978714d8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class May : ReqlExpr { + + + + + public May (object arg) : this(new Arguments(arg), null) { + } + public May (Arguments args) : this(args, null) { + } + public May (Arguments args, OptArgs optargs) + : base(TermType.MAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs.meta new file mode 100644 index 000000000..f3faf4ffa --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/May.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ed6133283c1c734db8bc5e77024ff2d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs new file mode 100644 index 000000000..3e45082b2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Merge : ReqlExpr { + + + + +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge (object arg) : this(new Arguments(arg), null) { + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge (Arguments args) : this(args, null) { + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge (Arguments args, OptArgs optargs) + : base(TermType.MERGE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs.meta new file mode 100644 index 000000000..0208b42a8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Merge.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88f78a148ebe1964db6483c1c345ce2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs new file mode 100644 index 000000000..1f88e5d59 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Min : ReqlExpr { + + + + +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min (object arg) : this(new Arguments(arg), null) { + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min (Arguments args) : this(args, null) { + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min (Arguments args, OptArgs optargs) + : base(TermType.MIN, args, optargs) { + } + + + + + + + +/// +/// "index": "T_STR" +/// + public Min this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Min (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public Min this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Min (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_STR" +/// + public Min OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Min (this.Args, newOptArgs); + } + internal Min optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs.meta new file mode 100644 index 000000000..03a52f89b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Min.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd7f9e4bb47c1e648a009d4024610548 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs new file mode 100644 index 000000000..2f61b15f5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Minutes : ReqlExpr { + + + + +/// +/// Return the minute in a time object as a number between 0 and 59. +/// +/// Example: Return all the posts submitted during the first 10 minutes of every hour. +/// r.table("posts").filter(function(post) { +/// return post("date").minutes().lt(10) +/// }) +/// + public Minutes (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the minute in a time object as a number between 0 and 59. +/// +/// Example: Return all the posts submitted during the first 10 minutes of every hour. +/// r.table("posts").filter(function(post) { +/// return post("date").minutes().lt(10) +/// }) +/// + public Minutes (Arguments args) : this(args, null) { + } +/// +/// Return the minute in a time object as a number between 0 and 59. +/// +/// Example: Return all the posts submitted during the first 10 minutes of every hour. +/// r.table("posts").filter(function(post) { +/// return post("date").minutes().lt(10) +/// }) +/// + public Minutes (Arguments args, OptArgs optargs) + : base(TermType.MINUTES, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs.meta new file mode 100644 index 000000000..3deedb365 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minutes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7032936e1edbbca469ec3bf1f55484e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs new file mode 100644 index 000000000..5be79c10f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Minval : ReqlExpr { + + + + + public Minval (object arg) : this(new Arguments(arg), null) { + } + public Minval (Arguments args) : this(args, null) { + } + public Minval (Arguments args, OptArgs optargs) + : base(TermType.MINVAL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs.meta new file mode 100644 index 000000000..2c8b7b828 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Minval.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 10094f47334e5d04fbabbd8e9354c625 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs new file mode 100644 index 000000000..80d96a274 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Mod : ReqlExpr { + + + + +/// +/// +/// +/// Example: It's as easy as 2 % 2 = 0. +/// r.expr(2).mod(2).run(conn, callback) +/// + public Mod (object arg) : this(new Arguments(arg), null) { + } +/// +/// +/// +/// Example: It's as easy as 2 % 2 = 0. +/// r.expr(2).mod(2).run(conn, callback) +/// + public Mod (Arguments args) : this(args, null) { + } +/// +/// +/// +/// Example: It's as easy as 2 % 2 = 0. +/// r.expr(2).mod(2).run(conn, callback) +/// + public Mod (Arguments args, OptArgs optargs) + : base(TermType.MOD, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs.meta new file mode 100644 index 000000000..c78ed4eb9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mod.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd861c1729be9db40b576154e4fabc5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs new file mode 100644 index 000000000..183dbf158 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Monday : ReqlExpr { + + + + + public Monday (object arg) : this(new Arguments(arg), null) { + } + public Monday (Arguments args) : this(args, null) { + } + public Monday (Arguments args, OptArgs optargs) + : base(TermType.MONDAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs.meta new file mode 100644 index 000000000..1f4e0a042 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Monday.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c4ccc6b86d394814686aae9b9da377e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs new file mode 100644 index 000000000..1fd0ce57f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Month : ReqlExpr { + + + + +/// +/// Return the month of a time object as a number between 1 and 12. For your convenience, the terms r.january, r.february etc. are defined and map to the appropriate integer. +/// +/// Example: Retrieve all the users who were born in November. +/// r.table("users").filter( +/// r.row("birthdate").month().eq(11) +/// ) +/// + public Month (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the month of a time object as a number between 1 and 12. For your convenience, the terms r.january, r.february etc. are defined and map to the appropriate integer. +/// +/// Example: Retrieve all the users who were born in November. +/// r.table("users").filter( +/// r.row("birthdate").month().eq(11) +/// ) +/// + public Month (Arguments args) : this(args, null) { + } +/// +/// Return the month of a time object as a number between 1 and 12. For your convenience, the terms r.january, r.february etc. are defined and map to the appropriate integer. +/// +/// Example: Retrieve all the users who were born in November. +/// r.table("users").filter( +/// r.row("birthdate").month().eq(11) +/// ) +/// + public Month (Arguments args, OptArgs optargs) + : base(TermType.MONTH, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs.meta new file mode 100644 index 000000000..e0bbf3d1a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Month.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0d48a3f42f07d14185562af9a08131b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs new file mode 100644 index 000000000..56c15a852 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Mul : ReqlExpr { + + + + +/// +/// Multiply two numbers, or make a periodic array. +/// +/// Example: It's as easy as 2 * 2 = 4. +/// r.expr(2).mul(2).run(conn, callback) +/// + public Mul (object arg) : this(new Arguments(arg), null) { + } +/// +/// Multiply two numbers, or make a periodic array. +/// +/// Example: It's as easy as 2 * 2 = 4. +/// r.expr(2).mul(2).run(conn, callback) +/// + public Mul (Arguments args) : this(args, null) { + } +/// +/// Multiply two numbers, or make a periodic array. +/// +/// Example: It's as easy as 2 * 2 = 4. +/// r.expr(2).mul(2).run(conn, callback) +/// + public Mul (Arguments args, OptArgs optargs) + : base(TermType.MUL, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs.meta new file mode 100644 index 000000000..a91a51bf3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Mul.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f38dec8df5d73ea44818eb1c79a6629e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs new file mode 100644 index 000000000..9051d6af6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Ne : ReqlExpr { + + + + +/// +/// Test if two or more values are not equal. +/// +/// Example: See if a user's role field is not set to administrator. +/// r.table('users').get(1)('role').ne('administrator').run(conn, callback); +/// + public Ne (object arg) : this(new Arguments(arg), null) { + } +/// +/// Test if two or more values are not equal. +/// +/// Example: See if a user's role field is not set to administrator. +/// r.table('users').get(1)('role').ne('administrator').run(conn, callback); +/// + public Ne (Arguments args) : this(args, null) { + } +/// +/// Test if two or more values are not equal. +/// +/// Example: See if a user's role field is not set to administrator. +/// r.table('users').get(1)('role').ne('administrator').run(conn, callback); +/// + public Ne (Arguments args, OptArgs optargs) + : base(TermType.NE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs.meta new file mode 100644 index 000000000..a83514dac --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ne.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e355edd237bfa5f46a4e82266a64976f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs new file mode 100644 index 000000000..d39efe4af --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Not : ReqlExpr { + + + + +/// +/// Compute the logical inverse (not) of an expression. +/// +/// Example: Not true is false. +/// r(true).not().run(conn, callback) +/// r.not(true).run(conn, callback) +/// +/// These evaluate to false. + public Not (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compute the logical inverse (not) of an expression. +/// +/// Example: Not true is false. +/// r(true).not().run(conn, callback) +/// r.not(true).run(conn, callback) +/// +/// These evaluate to false. + public Not (Arguments args) : this(args, null) { + } +/// +/// Compute the logical inverse (not) of an expression. +/// +/// Example: Not true is false. +/// r(true).not().run(conn, callback) +/// r.not(true).run(conn, callback) +/// +/// These evaluate to false. + public Not (Arguments args, OptArgs optargs) + : base(TermType.NOT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs.meta new file mode 100644 index 000000000..ad616c860 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Not.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c76c2c2ec9a32694282ac85ec6cc0e20 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs new file mode 100644 index 000000000..3bdf53213 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class November : ReqlExpr { + + + + + public November (object arg) : this(new Arguments(arg), null) { + } + public November (Arguments args) : this(args, null) { + } + public November (Arguments args, OptArgs optargs) + : base(TermType.NOVEMBER, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs.meta new file mode 100644 index 000000000..843bcc9de --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/November.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 03028fb2db43f2c46a1dab2055d29c5a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs new file mode 100644 index 000000000..90b483542 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Now : ReqlExpr { + + + + +/// +/// Return a time object representing the current time in UTC. The command now() is computed once when the server receives the query, so multiple instances of r.now() will always return the same time inside a query. +/// +/// Example: Add a new user with the time at which he subscribed. +/// r.table("users").insert({ +/// name: "John", +/// subscription_date: r.now() +/// }).run(conn, callback) +/// + public Now (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return a time object representing the current time in UTC. The command now() is computed once when the server receives the query, so multiple instances of r.now() will always return the same time inside a query. +/// +/// Example: Add a new user with the time at which he subscribed. +/// r.table("users").insert({ +/// name: "John", +/// subscription_date: r.now() +/// }).run(conn, callback) +/// + public Now (Arguments args) : this(args, null) { + } +/// +/// Return a time object representing the current time in UTC. The command now() is computed once when the server receives the query, so multiple instances of r.now() will always return the same time inside a query. +/// +/// Example: Add a new user with the time at which he subscribed. +/// r.table("users").insert({ +/// name: "John", +/// subscription_date: r.now() +/// }).run(conn, callback) +/// + public Now (Arguments args, OptArgs optargs) + : base(TermType.NOW, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs.meta new file mode 100644 index 000000000..42836a38c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Now.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d6d20c20981b1b46be09c3f6fd42754 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs new file mode 100644 index 000000000..9d9454aee --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Nth : ReqlExpr { + + + + +/// +/// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. +/// +/// Example: Select the second element in the array. +/// r.expr([1,2,3]).nth(1).run(conn, callback) +/// r.expr([1,2,3])(1).run(conn, callback) +/// + public Nth (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. +/// +/// Example: Select the second element in the array. +/// r.expr([1,2,3]).nth(1).run(conn, callback) +/// r.expr([1,2,3])(1).run(conn, callback) +/// + public Nth (Arguments args) : this(args, null) { + } +/// +/// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. +/// +/// Example: Select the second element in the array. +/// r.expr([1,2,3]).nth(1).run(conn, callback) +/// r.expr([1,2,3])(1).run(conn, callback) +/// + public Nth (Arguments args, OptArgs optargs) + : base(TermType.NTH, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs.meta new file mode 100644 index 000000000..3803ed689 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Nth.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60b554c0ae328be4eb69cddfcc6eed1a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs new file mode 100644 index 000000000..765ca9baf --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class October : ReqlExpr { + + + + + public October (object arg) : this(new Arguments(arg), null) { + } + public October (Arguments args) : this(args, null) { + } + public October (Arguments args, OptArgs optargs) + : base(TermType.OCTOBER, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs.meta new file mode 100644 index 000000000..8650c704b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/October.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 47129bc20e539a64b87a98e752f72810 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs new file mode 100644 index 000000000..c54335689 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class OffsetsOf : ReqlExpr { + + + + +/// +/// Get the indexes of an element in a sequence. If the argument is a predicate, get the indexes of all elements matching it. +/// +/// Example: Find the position of the letter 'c'. +/// r.expr(['a','b','c']).offsetsOf('c').run(conn, callback) +/// + public OffsetsOf (object arg) : this(new Arguments(arg), null) { + } +/// +/// Get the indexes of an element in a sequence. If the argument is a predicate, get the indexes of all elements matching it. +/// +/// Example: Find the position of the letter 'c'. +/// r.expr(['a','b','c']).offsetsOf('c').run(conn, callback) +/// + public OffsetsOf (Arguments args) : this(args, null) { + } +/// +/// Get the indexes of an element in a sequence. If the argument is a predicate, get the indexes of all elements matching it. +/// +/// Example: Find the position of the letter 'c'. +/// r.expr(['a','b','c']).offsetsOf('c').run(conn, callback) +/// + public OffsetsOf (Arguments args, OptArgs optargs) + : base(TermType.OFFSETS_OF, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs.meta new file mode 100644 index 000000000..e9af3caf7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OffsetsOf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3caf285c221242242a95bd13e739d86a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs new file mode 100644 index 000000000..ffbd872b1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Or : ReqlExpr { + + + + +/// +/// Compute the logical "or" of one or more values. +/// +/// Example: Return whether either a or b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).or(b).run(conn, callback); +/// // result passed to callback +/// true +/// + public Or (object arg) : this(new Arguments(arg), null) { + } +/// +/// Compute the logical "or" of one or more values. +/// +/// Example: Return whether either a or b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).or(b).run(conn, callback); +/// // result passed to callback +/// true +/// + public Or (Arguments args) : this(args, null) { + } +/// +/// Compute the logical "or" of one or more values. +/// +/// Example: Return whether either a or b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).or(b).run(conn, callback); +/// // result passed to callback +/// true +/// + public Or (Arguments args, OptArgs optargs) + : base(TermType.OR, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs.meta new file mode 100644 index 000000000..d77888235 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Or.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd524041411ff2f488794fcc0c4954d4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs new file mode 100644 index 000000000..c0122e413 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class OrderBy : ReqlExpr { + + + + +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy (object arg) : this(new Arguments(arg), null) { + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy (Arguments args) : this(args, null) { + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy (Arguments args, OptArgs optargs) + : base(TermType.ORDER_BY, args, optargs) { + } + + + + + + + +/// +/// "index": "T_EXPR" +/// + public OrderBy this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new OrderBy (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_EXPR" +/// + public OrderBy this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new OrderBy (this.Args, newOptArgs); + } + } + +/// +/// "index": "T_EXPR" +/// + public OrderBy OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new OrderBy (this.Args, newOptArgs); + } + internal OrderBy optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs.meta new file mode 100644 index 000000000..ee510c709 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OrderBy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a4fec14d2cf0eff42bfa20d85d9942eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs new file mode 100644 index 000000000..306699e50 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class OuterJoin : ReqlExpr { + + + + +/// +/// Returns a left outer join of two sequences. The returned sequence represents a union of the left-hand sequence and the right-hand sequence: all documents in the left-hand sequence will be returned, each matched with a document in the right-hand sequence if one satisfies the predicate condition. In most cases, you will want to follow the join with zip to combine the left and right results. +/// +/// Example: Return a list of all Marvel heroes, paired with any DC heroes who could beat them in a fight. +/// r.table('marvel').outerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).run(conn, callback) +/// +/// (Compare this to an innerJoin with the same inputs and predicate, which would return a list only of the matchups in which the DC hero has the higher strength.) + public OuterJoin (object arg) : this(new Arguments(arg), null) { + } +/// +/// Returns a left outer join of two sequences. The returned sequence represents a union of the left-hand sequence and the right-hand sequence: all documents in the left-hand sequence will be returned, each matched with a document in the right-hand sequence if one satisfies the predicate condition. In most cases, you will want to follow the join with zip to combine the left and right results. +/// +/// Example: Return a list of all Marvel heroes, paired with any DC heroes who could beat them in a fight. +/// r.table('marvel').outerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).run(conn, callback) +/// +/// (Compare this to an innerJoin with the same inputs and predicate, which would return a list only of the matchups in which the DC hero has the higher strength.) + public OuterJoin (Arguments args) : this(args, null) { + } +/// +/// Returns a left outer join of two sequences. The returned sequence represents a union of the left-hand sequence and the right-hand sequence: all documents in the left-hand sequence will be returned, each matched with a document in the right-hand sequence if one satisfies the predicate condition. In most cases, you will want to follow the join with zip to combine the left and right results. +/// +/// Example: Return a list of all Marvel heroes, paired with any DC heroes who could beat them in a fight. +/// r.table('marvel').outerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).run(conn, callback) +/// +/// (Compare this to an innerJoin with the same inputs and predicate, which would return a list only of the matchups in which the DC hero has the higher strength.) + public OuterJoin (Arguments args, OptArgs optargs) + : base(TermType.OUTER_JOIN, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs.meta new file mode 100644 index 000000000..3c6e8b32e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/OuterJoin.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd9264d56b7738b4488b032d1fb6d7f7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs new file mode 100644 index 000000000..a0646982f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Pluck : ReqlExpr { + + + + +/// +/// Plucks out one or more attributes from either an object or a sequence of objects +/// (projection). +/// +/// Example: We just need information about IronMan's reactor and not the rest of the +/// document. +/// r.table('marvel').get('IronMan').pluck('reactorState', 'reactorPower').run(conn, callback) +/// + public Pluck (object arg) : this(new Arguments(arg), null) { + } +/// +/// Plucks out one or more attributes from either an object or a sequence of objects +/// (projection). +/// +/// Example: We just need information about IronMan's reactor and not the rest of the +/// document. +/// r.table('marvel').get('IronMan').pluck('reactorState', 'reactorPower').run(conn, callback) +/// + public Pluck (Arguments args) : this(args, null) { + } +/// +/// Plucks out one or more attributes from either an object or a sequence of objects +/// (projection). +/// +/// Example: We just need information about IronMan's reactor and not the rest of the +/// document. +/// r.table('marvel').get('IronMan').pluck('reactorState', 'reactorPower').run(conn, callback) +/// + public Pluck (Arguments args, OptArgs optargs) + : base(TermType.PLUCK, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs.meta new file mode 100644 index 000000000..afefb80a5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Pluck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f50cdd9e9df10164b90f04334f064603 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs new file mode 100644 index 000000000..c684927fa --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Point : ReqlExpr { + + + + +/// +/// Construct a geometry object of type Point. The point is specified by two floating point numbers, the longitude (-180 to 180) and latitude (-90 to 90) of the point on a perfect sphere. See Geospatial support for more information on ReQL's coordinate system. +/// +/// Example: Define a point. +/// r.table('geo').insert({ +/// id: 1, +/// name: 'San Francisco', +/// location: r.point(-122.423246,37.779388) +/// }).run(conn, callback); +/// + public Point (object arg) : this(new Arguments(arg), null) { + } +/// +/// Construct a geometry object of type Point. The point is specified by two floating point numbers, the longitude (-180 to 180) and latitude (-90 to 90) of the point on a perfect sphere. See Geospatial support for more information on ReQL's coordinate system. +/// +/// Example: Define a point. +/// r.table('geo').insert({ +/// id: 1, +/// name: 'San Francisco', +/// location: r.point(-122.423246,37.779388) +/// }).run(conn, callback); +/// + public Point (Arguments args) : this(args, null) { + } +/// +/// Construct a geometry object of type Point. The point is specified by two floating point numbers, the longitude (-180 to 180) and latitude (-90 to 90) of the point on a perfect sphere. See Geospatial support for more information on ReQL's coordinate system. +/// +/// Example: Define a point. +/// r.table('geo').insert({ +/// id: 1, +/// name: 'San Francisco', +/// location: r.point(-122.423246,37.779388) +/// }).run(conn, callback); +/// + public Point (Arguments args, OptArgs optargs) + : base(TermType.POINT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs.meta new file mode 100644 index 000000000..5139bff41 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Point.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7f7fd63bd26417249a10f1833511c5b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs new file mode 100644 index 000000000..2f2cd1076 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Polygon : ReqlExpr { + + + + +/// +/// Construct a geometry object of type Polygon. The Polygon can be specified in one of two ways: +///
    +///
  • Three or more two-item arrays, specifying latitude and longitude numbers of the polygon's vertices;
  • +///
  • Three or more Point objects specifying the polygon's vertices.
  • +///
+///
+/// Example: Define a polygon. +/// r.table('geo').insert({ +/// id: 101, +/// rectangle: r.polygon( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// + public Polygon (object arg) : this(new Arguments(arg), null) { + } +/// +/// Construct a geometry object of type Polygon. The Polygon can be specified in one of two ways: +///
    +///
  • Three or more two-item arrays, specifying latitude and longitude numbers of the polygon's vertices;
  • +///
  • Three or more Point objects specifying the polygon's vertices.
  • +///
+///
+/// Example: Define a polygon. +/// r.table('geo').insert({ +/// id: 101, +/// rectangle: r.polygon( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// + public Polygon (Arguments args) : this(args, null) { + } +/// +/// Construct a geometry object of type Polygon. The Polygon can be specified in one of two ways: +///
    +///
  • Three or more two-item arrays, specifying latitude and longitude numbers of the polygon's vertices;
  • +///
  • Three or more Point objects specifying the polygon's vertices.
  • +///
+///
+/// Example: Define a polygon. +/// r.table('geo').insert({ +/// id: 101, +/// rectangle: r.polygon( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// + public Polygon (Arguments args, OptArgs optargs) + : base(TermType.POLYGON, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs.meta new file mode 100644 index 000000000..a5cf87ba8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Polygon.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6302a276225ba444e96c2af5324ac47f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs new file mode 100644 index 000000000..85157de7e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class PolygonSub : ReqlExpr { + + + + +/// +/// Use polygon2 to "punch out" a hole in polygon1. polygon2 must be completely contained within polygon1 and must have no holes itself (it must not be the output of polygonSub itself). +/// +/// Example: Define a polygon with a hole punched in it. +/// var outerPolygon = r.polygon( +/// [-122.4,37.7], +/// [-122.4,37.3], +/// [-121.8,37.3], +/// [-121.8,37.7] +/// ); +/// var innerPolygon = r.polygon( +/// [-122.3,37.4], +/// [-122.3,37.6], +/// [-122.0,37.6], +/// [-122.0,37.4] +/// ); +/// outerPolygon.polygonSub(innerPolygon).run(conn, callback); +/// + public PolygonSub (object arg) : this(new Arguments(arg), null) { + } +/// +/// Use polygon2 to "punch out" a hole in polygon1. polygon2 must be completely contained within polygon1 and must have no holes itself (it must not be the output of polygonSub itself). +/// +/// Example: Define a polygon with a hole punched in it. +/// var outerPolygon = r.polygon( +/// [-122.4,37.7], +/// [-122.4,37.3], +/// [-121.8,37.3], +/// [-121.8,37.7] +/// ); +/// var innerPolygon = r.polygon( +/// [-122.3,37.4], +/// [-122.3,37.6], +/// [-122.0,37.6], +/// [-122.0,37.4] +/// ); +/// outerPolygon.polygonSub(innerPolygon).run(conn, callback); +/// + public PolygonSub (Arguments args) : this(args, null) { + } +/// +/// Use polygon2 to "punch out" a hole in polygon1. polygon2 must be completely contained within polygon1 and must have no holes itself (it must not be the output of polygonSub itself). +/// +/// Example: Define a polygon with a hole punched in it. +/// var outerPolygon = r.polygon( +/// [-122.4,37.7], +/// [-122.4,37.3], +/// [-121.8,37.3], +/// [-121.8,37.7] +/// ); +/// var innerPolygon = r.polygon( +/// [-122.3,37.4], +/// [-122.3,37.6], +/// [-122.0,37.6], +/// [-122.0,37.4] +/// ); +/// outerPolygon.polygonSub(innerPolygon).run(conn, callback); +/// + public PolygonSub (Arguments args, OptArgs optargs) + : base(TermType.POLYGON_SUB, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs.meta new file mode 100644 index 000000000..d7ee085db --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/PolygonSub.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 468f247757890344aab3df80e71f6c08 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs new file mode 100644 index 000000000..b7c6fd3ac --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Prepend : ReqlExpr { + + + + +/// +/// Prepend a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').prepend('newBoots').run(conn, callback) +/// + public Prepend (object arg) : this(new Arguments(arg), null) { + } +/// +/// Prepend a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').prepend('newBoots').run(conn, callback) +/// + public Prepend (Arguments args) : this(args, null) { + } +/// +/// Prepend a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').prepend('newBoots').run(conn, callback) +/// + public Prepend (Arguments args, OptArgs optargs) + : base(TermType.PREPEND, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs.meta new file mode 100644 index 000000000..ce4ddb03b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Prepend.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44dc2e8b2acc2e24db97240956fdc804 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs new file mode 100644 index 000000000..8b675ec8d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Random : ReqlExpr { + + + + +/// +/// Generate a random number between given (or implied) bounds. random takes zero, one or two arguments. +/// +/// Example: Generate a random number in the range [0,1) +/// r.random().run(conn, callback) +/// + public Random (object arg) : this(new Arguments(arg), null) { + } +/// +/// Generate a random number between given (or implied) bounds. random takes zero, one or two arguments. +/// +/// Example: Generate a random number in the range [0,1) +/// r.random().run(conn, callback) +/// + public Random (Arguments args) : this(args, null) { + } +/// +/// Generate a random number between given (or implied) bounds. random takes zero, one or two arguments. +/// +/// Example: Generate a random number in the range [0,1) +/// r.random().run(conn, callback) +/// + public Random (Arguments args, OptArgs optargs) + : base(TermType.RANDOM, args, optargs) { + } + + + + + + + +/// +/// "float": "T_BOOL" +/// + public Random this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Random (this.Args, newOptArgs); + } + } + +/// +/// "float": "T_BOOL" +/// + public Random this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Random (this.Args, newOptArgs); + } + } + +/// +/// "float": "T_BOOL" +/// + public Random OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Random (this.Args, newOptArgs); + } + internal Random optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs.meta new file mode 100644 index 000000000..e3d128b2c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Random.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e12ef7d31156bef4081e429825bc3900 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs new file mode 100644 index 000000000..73c3b91d5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Range : ReqlExpr { + + + + +/// +/// Generate a stream of sequential integers in a specified range. +/// +/// Example: Return a four-element range of [0, 1, 2, 3]. +/// > r.range(4).run(conn, callback) +/// // result returned to callback +/// [0, 1, 2, 3] +/// + public Range (object arg) : this(new Arguments(arg), null) { + } +/// +/// Generate a stream of sequential integers in a specified range. +/// +/// Example: Return a four-element range of [0, 1, 2, 3]. +/// > r.range(4).run(conn, callback) +/// // result returned to callback +/// [0, 1, 2, 3] +/// + public Range (Arguments args) : this(args, null) { + } +/// +/// Generate a stream of sequential integers in a specified range. +/// +/// Example: Return a four-element range of [0, 1, 2, 3]. +/// > r.range(4).run(conn, callback) +/// // result returned to callback +/// [0, 1, 2, 3] +/// + public Range (Arguments args, OptArgs optargs) + : base(TermType.RANGE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs.meta new file mode 100644 index 000000000..2f85078dd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Range.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fde7ab7ec84a3af42b38b907c275bfbf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs new file mode 100644 index 000000000..bef9539c2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Rebalance : ReqlExpr { + + + + +/// +/// Rebalances the shards of a table. When called on a database, all the tables in that database will be rebalanced. +/// +/// Example: Rebalance a table. +/// > r.table('superheroes').rebalance().run(conn, callback); +/// + public Rebalance (object arg) : this(new Arguments(arg), null) { + } +/// +/// Rebalances the shards of a table. When called on a database, all the tables in that database will be rebalanced. +/// +/// Example: Rebalance a table. +/// > r.table('superheroes').rebalance().run(conn, callback); +/// + public Rebalance (Arguments args) : this(args, null) { + } +/// +/// Rebalances the shards of a table. When called on a database, all the tables in that database will be rebalanced. +/// +/// Example: Rebalance a table. +/// > r.table('superheroes').rebalance().run(conn, callback); +/// + public Rebalance (Arguments args, OptArgs optargs) + : base(TermType.REBALANCE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs.meta new file mode 100644 index 000000000..d64ebd7df --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Rebalance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b44ecc28f661bb2448d53f0e750dbcf2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs new file mode 100644 index 000000000..dc3bc9717 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Reconfigure : ReqlExpr { + + + + +/// +/// Reconfigure a table's sharding and replication. +/// +/// Example: Reconfigure a table. +/// > r.table('superheroes').reconfigure({shards: 2, replicas: 1}).run(conn, callback); +/// + public Reconfigure (object arg) : this(new Arguments(arg), null) { + } +/// +/// Reconfigure a table's sharding and replication. +/// +/// Example: Reconfigure a table. +/// > r.table('superheroes').reconfigure({shards: 2, replicas: 1}).run(conn, callback); +/// + public Reconfigure (Arguments args) : this(args, null) { + } +/// +/// Reconfigure a table's sharding and replication. +/// +/// Example: Reconfigure a table. +/// > r.table('superheroes').reconfigure({shards: 2, replicas: 1}).run(conn, callback); +/// + public Reconfigure (Arguments args, OptArgs optargs) + : base(TermType.RECONFIGURE, args, optargs) { + } + + + + + + + +/// +/// "shards": "T_NUM", +/// "replicas": [ +/// "T_OBJECT", +/// "T_NUM" +/// ], +/// "primary_replica_tag": "T_STR", +/// "dry_run": "T_BOOL", +/// "nonvoting_replica_tags": "T_ARRAY", +/// "emergency_repair": "E_EMERGENCY_REPAIR" +/// + public Reconfigure this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Reconfigure (this.Args, newOptArgs); + } + } + +/// +/// "shards": "T_NUM", +/// "replicas": [ +/// "T_OBJECT", +/// "T_NUM" +/// ], +/// "primary_replica_tag": "T_STR", +/// "dry_run": "T_BOOL", +/// "nonvoting_replica_tags": "T_ARRAY", +/// "emergency_repair": "E_EMERGENCY_REPAIR" +/// + public Reconfigure this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Reconfigure (this.Args, newOptArgs); + } + } + +/// +/// "shards": "T_NUM", +/// "replicas": [ +/// "T_OBJECT", +/// "T_NUM" +/// ], +/// "primary_replica_tag": "T_STR", +/// "dry_run": "T_BOOL", +/// "nonvoting_replica_tags": "T_ARRAY", +/// "emergency_repair": "E_EMERGENCY_REPAIR" +/// + public Reconfigure OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Reconfigure (this.Args, newOptArgs); + } + internal Reconfigure optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs.meta new file mode 100644 index 000000000..b3c70f99c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reconfigure.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d27bbd6cd80cf845bc543a1f43e92ab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs new file mode 100644 index 000000000..db63d726d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Reduce : ReqlExpr { + + + + +/// +/// Produce a single value from a sequence through repeated application of a reduction function. +/// +/// Example: Return the number of documents in the table posts. +/// r.table("posts").map(function(doc) { +/// return 1; +/// }).reduce(function(left, right) { +/// return left.add(right); +/// }).default(0).run(conn, callback); +/// +/// A shorter way to execute this query is to use count. + public Reduce (object arg) : this(new Arguments(arg), null) { + } +/// +/// Produce a single value from a sequence through repeated application of a reduction function. +/// +/// Example: Return the number of documents in the table posts. +/// r.table("posts").map(function(doc) { +/// return 1; +/// }).reduce(function(left, right) { +/// return left.add(right); +/// }).default(0).run(conn, callback); +/// +/// A shorter way to execute this query is to use count. + public Reduce (Arguments args) : this(args, null) { + } +/// +/// Produce a single value from a sequence through repeated application of a reduction function. +/// +/// Example: Return the number of documents in the table posts. +/// r.table("posts").map(function(doc) { +/// return 1; +/// }).reduce(function(left, right) { +/// return left.add(right); +/// }).default(0).run(conn, callback); +/// +/// A shorter way to execute this query is to use count. + public Reduce (Arguments args, OptArgs optargs) + : base(TermType.REDUCE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs.meta new file mode 100644 index 000000000..152ca36ae --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Reduce.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ddf96213132529249b4a2c5311473b32 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs new file mode 100644 index 000000000..a811e3ae2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Replace : ReqlExpr { + + + + +/// +/// Replace documents in a table. Accepts a JSON document or a ReQL expression, +/// and replaces the original document with the new one. The new document must +/// have the same primary key as the original document. +/// +/// Example: Replace the document with the primary key 1. +/// r.table("posts").get(1).replace({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Aleas jacta est", +/// status: "draft" +/// }).run(conn, callback) +/// + public Replace (object arg) : this(new Arguments(arg), null) { + } +/// +/// Replace documents in a table. Accepts a JSON document or a ReQL expression, +/// and replaces the original document with the new one. The new document must +/// have the same primary key as the original document. +/// +/// Example: Replace the document with the primary key 1. +/// r.table("posts").get(1).replace({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Aleas jacta est", +/// status: "draft" +/// }).run(conn, callback) +/// + public Replace (Arguments args) : this(args, null) { + } +/// +/// Replace documents in a table. Accepts a JSON document or a ReQL expression, +/// and replaces the original document with the new one. The new document must +/// have the same primary key as the original document. +/// +/// Example: Replace the document with the primary key 1. +/// r.table("posts").get(1).replace({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Aleas jacta est", +/// status: "draft" +/// }).run(conn, callback) +/// + public Replace (Arguments args, OptArgs optargs) + : base(TermType.REPLACE, args, optargs) { + } + + + + + + + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "non_atomic": "T_BOOL" +/// + public Replace this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Replace (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "non_atomic": "T_BOOL" +/// + public Replace this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Replace (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "non_atomic": "T_BOOL" +/// + public Replace OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Replace (this.Args, newOptArgs); + } + internal Replace optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs.meta new file mode 100644 index 000000000..652c9e5da --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Replace.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 130f72779160ef74a8257606ea04e4ac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs new file mode 100644 index 000000000..fea85a551 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs @@ -0,0 +1,8562 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ReqlExpr : ReqlAst { + + + + + protected ReqlExpr (TermType termType, Arguments args, OptArgs optargs) : base(termType, args, optargs) + { + } + + + + + + + + + + + + + + + + + + +/// +/// Test if two or more values are equal. +/// +/// Example: See if a user's role field is set to administrator. +/// r.table('users').get(1)('role').eq('administrator').run(conn, callback); +/// + public Eq Eq ( Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Eq (arguments ); + } + internal Eq eq ( Object exprA, params object[] exprs ) + { + return Eq ( exprA, exprs ); + } +/// +/// Test if two or more values are not equal. +/// +/// Example: See if a user's role field is not set to administrator. +/// r.table('users').get(1)('role').ne('administrator').run(conn, callback); +/// + public Ne Ne ( Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Ne (arguments ); + } + internal Ne ne ( Object exprA, params object[] exprs ) + { + return Ne ( exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is less than the right-hand. +/// +/// Example: Test if a player has scored less than 10 points. +/// r.table('players').get(1)('score').lt(10).run(conn, callback); +/// + public Lt Lt ( Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Lt (arguments ); + } + internal Lt lt ( Object exprA, params object[] exprs ) + { + return Lt ( exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is less than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or less. +/// r.table('players').get(1)('score').le(10).run(conn, callback); +/// + public Le Le ( Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Le (arguments ); + } + internal Le le ( Object exprA, params object[] exprs ) + { + return Le ( exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is greater than the right-hand. +/// +/// Example: Test if a player has scored more than 10 points. +/// r.table('players').get(1)('score').gt(10).run(conn, callback); +/// + public Gt Gt ( Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Gt (arguments ); + } + internal Gt gt ( Object exprA, params object[] exprs ) + { + return Gt ( exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is greater than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or more. +/// r.table('players').get(1)('score').ge(10).run(conn, callback); +/// + public Ge Ge ( Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Ge (arguments ); + } + internal Ge ge ( Object exprA, params object[] exprs ) + { + return Ge ( exprA, exprs ); + } +/// +/// Compute the logical inverse (not) of an expression. +/// +/// Example: Not true is false. +/// r(true).not().run(conn, callback) +/// r.not(true).run(conn, callback) +/// +/// These evaluate to false. + public Not Not ( ) + { + Arguments arguments = new Arguments(this); + return new Not (arguments ); + } + internal Not not ( ) + { + return Not ( ); + } +/// +/// Sum two or more numbers, or concatenate two or more strings or arrays. +/// +/// Example: It's as easy as 2 + 2 = 4. +/// > r.expr(2).add(2).run(conn, callback) +/// // result passed to callback +/// 4 +/// + public Add Add ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Add (arguments ); + } + internal Add add ( params object[] exprs ) + { + return Add ( exprs ); + } +/// +/// Subtract two numbers. +/// +/// Example: It's as easy as 2 - 2 = 0. +/// r.expr(2).sub(2).run(conn, callback) +/// + public Sub Sub ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Sub (arguments ); + } + internal Sub sub ( params object[] exprs ) + { + return Sub ( exprs ); + } +/// +/// Multiply two numbers, or make a periodic array. +/// +/// Example: It's as easy as 2 * 2 = 4. +/// r.expr(2).mul(2).run(conn, callback) +/// + public Mul Mul ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Mul (arguments ); + } + internal Mul mul ( params object[] exprs ) + { + return Mul ( exprs ); + } +/// +/// Divide two numbers. +/// +/// Example: It's as easy as 2 / 2 = 1. +/// r.expr(2).div(2).run(conn, callback) +/// + public Div Div ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Div (arguments ); + } + internal Div div ( params object[] exprs ) + { + return Div ( exprs ); + } +/// +/// +/// +/// Example: It's as easy as 2 % 2 = 0. +/// r.expr(2).mod(2).run(conn, callback) +/// + public Mod Mod ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Mod (arguments ); + } + internal Mod mod ( Object exprA ) + { + return Mod ( exprA ); + } +/// +/// Rounds the given value down, returning the largest integer value less than or equal to the given value (the value's floor). +/// +/// Example: Return the floor of 12.345. +/// r.floor(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The floor command can also be chained after an expression. + public Floor Floor ( ) + { + Arguments arguments = new Arguments(this); + return new Floor (arguments ); + } + internal Floor floor ( ) + { + return Floor ( ); + } +/// +/// Rounds the given value up, returning the smallest integer value greater than or equal to the given value (the value's ceiling). +/// +/// Example: Return the ceiling of 12.345. +/// r.ceil(12.345).run(conn, callback); +/// // Result passed to callback +/// 13.0 +/// +/// The ceil command can also be chained after an expression. + public Ceil Ceil ( ) + { + Arguments arguments = new Arguments(this); + return new Ceil (arguments ); + } + internal Ceil ceil ( ) + { + return Ceil ( ); + } +/// +/// Rounds the given value to the nearest whole integer. +/// +/// Example: Round 12.345 to the nearest integer. +/// r.round(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The round command can also be chained after an expression. + public Round Round ( ) + { + Arguments arguments = new Arguments(this); + return new Round (arguments ); + } + internal Round round ( ) + { + return Round ( ); + } +/// +/// Append a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').append('newBoots').run(conn, callback) +/// + public Append Append ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Append (arguments ); + } + internal Append append ( Object exprA ) + { + return Append ( exprA ); + } +/// +/// Prepend a value to an array. +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').prepend('newBoots').run(conn, callback) +/// + public Prepend Prepend ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Prepend (arguments ); + } + internal Prepend prepend ( Object exprA ) + { + return Prepend ( exprA ); + } +/// +/// Remove the elements of one array from another array. +/// +/// Example: Retrieve Iron Man's equipment list without boots. +/// r.table('marvel').get('IronMan')('equipment') +/// .difference(['Boots']) +/// .run(conn, callback) +/// + public Difference Difference ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Difference (arguments ); + } + internal Difference difference ( Object exprA ) + { + return Difference ( exprA ); + } +/// +/// Add a value to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').setInsert('newBoots').run(conn, callback) +/// + public SetInsert SetInsert ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new SetInsert (arguments ); + } + internal SetInsert setInsert ( Object exprA ) + { + return SetInsert ( exprA ); + } +/// +/// Intersect two arrays returning values that occur in both of them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has from a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setIntersection(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetIntersection SetIntersection ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new SetIntersection (arguments ); + } + internal SetIntersection setIntersection ( Object exprA ) + { + return SetIntersection ( exprA ); + } +/// +/// Add a several values to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots and an arc reactor. +/// r.table('marvel').get('IronMan')('equipment').setUnion(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetUnion SetUnion ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new SetUnion (arguments ); + } + internal SetUnion setUnion ( Object exprA ) + { + return SetUnion ( exprA ); + } +/// +/// Remove the elements of one array from another and return them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has, excluding a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setDifference(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetDifference SetDifference ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new SetDifference (arguments ); + } + internal SetDifference setDifference ( Object exprA ) + { + return SetDifference ( exprA ); + } +/// +/// Return the elements of a sequence within the specified range. +/// +/// Example: Return the fourth, fifth and sixth youngest players. (The youngest player is at index 0, so those are elements 3-5.) +/// r.table('players').orderBy({index: 'age'}).slice(3,6).run(conn, callback); +/// + public Slice Slice ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Slice (arguments ); + } + internal Slice slice ( Object exprA ) + { + return Slice ( exprA ); + } +/// +/// Return the elements of a sequence within the specified range. +/// +/// Example: Return the fourth, fifth and sixth youngest players. (The youngest player is at index 0, so those are elements 3-5.) +/// r.table('players').orderBy({index: 'age'}).slice(3,6).run(conn, callback); +/// + public Slice Slice ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Slice (arguments ); + } + internal Slice slice ( Object exprA, Object exprB ) + { + return Slice ( exprA, exprB ); + } +/// +/// Skip a number of elements from the head of the sequence. +/// +/// Example: Here in conjunction with orderBy we choose to ignore the most successful heroes. +/// r.table('marvel').orderBy('successMetric').skip(10).run(conn, callback) +/// + public Skip Skip ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Skip (arguments ); + } + internal Skip skip ( Object exprA ) + { + return Skip ( exprA ); + } +/// +/// End the sequence after the given number of elements. +/// +/// Example: Only so many can fit in our Pantheon of heroes. +/// r.table('marvel').orderBy('belovedness').limit(10).run(conn, callback) +/// + public Limit Limit ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Limit (arguments ); + } + internal Limit limit ( Object exprA ) + { + return Limit ( exprA ); + } +/// +/// Get the indexes of an element in a sequence. If the argument is a predicate, get the indexes of all elements matching it. +/// +/// Example: Find the position of the letter 'c'. +/// r.expr(['a','b','c']).offsetsOf('c').run(conn, callback) +/// + public OffsetsOf OffsetsOf ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new OffsetsOf (arguments ); + } + internal OffsetsOf offsetsOf ( Javascript js ) + { + return OffsetsOf ( js ); + } +/// +/// Get the indexes of an element in a sequence. If the argument is a predicate, get the indexes of all elements matching it. +/// +/// Example: Find the position of the letter 'c'. +/// r.expr(['a','b','c']).offsetsOf('c').run(conn, callback) +/// + public OffsetsOf OffsetsOf ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new OffsetsOf (arguments ); + } + internal OffsetsOf offsetsOf ( Object exprA ) + { + return OffsetsOf ( exprA ); + } +/// +/// Get the indexes of an element in a sequence. If the argument is a predicate, get the indexes of all elements matching it. +/// +/// Example: Find the position of the letter 'c'. +/// r.expr(['a','b','c']).offsetsOf('c').run(conn, callback) +/// + public OffsetsOf OffsetsOf ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new OffsetsOf (arguments ); + } + internal OffsetsOf offsetsOf ( ReqlFunction1 func1 ) + { + return OffsetsOf ( func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ) + { + Arguments arguments = new Arguments(this); + return new Contains (arguments ); + } + internal Contains contains ( ) + { + return Contains ( ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js ) + { + return Contains ( js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Javascript jsA ) + { + return Contains ( js, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Javascript jsA, Javascript jsB ) + { + return Contains ( js, jsA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(jsC); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + return Contains ( js, jsA, jsB, jsC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + return Contains ( js, jsA, jsB, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Javascript jsA, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Javascript jsA, Object exprA ) + { + return Contains ( js, jsA, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + return Contains ( js, jsA, exprA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + return Contains ( js, jsA, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Object exprA ) + { + return Contains ( js, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Object exprA, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Object exprA, Javascript jsA ) + { + return Contains ( js, exprA, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + return Contains ( js, exprA, jsA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + return Contains ( js, exprA, jsA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Object exprA, Object exprB ) + { + return Contains ( js, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + return Contains ( js, exprA, exprB, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments ); + } + internal Contains contains ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + return Contains ( js, exprA, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA ) + { + return Contains ( exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Javascript js ) + { + return Contains ( exprA, js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Javascript js, Javascript jsA ) + { + return Contains ( exprA, js, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + return Contains ( exprA, js, jsA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + return Contains ( exprA, js, jsA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Javascript js, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Javascript js, Object exprB ) + { + return Contains ( exprA, js, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + return Contains ( exprA, js, exprB, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + return Contains ( exprA, js, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB ) + { + return Contains ( exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, Javascript js ) + { + return Contains ( exprA, exprB, js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + return Contains ( exprA, exprB, js, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + return Contains ( exprA, exprB, js, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, Object exprC ) + { + return Contains ( exprA, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + return Contains ( exprA, exprB, exprC, js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(exprD); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + return Contains ( exprA, exprB, exprC, exprD ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func1); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + return Contains ( exprA, exprB, exprC, func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + return Contains ( exprA, exprB, func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + return Contains ( exprA, exprB, func1, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Contains ( exprA, exprB, func1, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, ReqlFunction1 func1 ) + { + return Contains ( exprA, func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + return Contains ( exprA, func1, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + return Contains ( exprA, func1, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + return Contains ( exprA, func1, exprB, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Contains ( exprA, func1, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + return Contains ( exprA, func1, func1A, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments ); + } + internal Contains contains ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Contains ( exprA, func1, func1A, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1 ) + { + return Contains ( func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, Object exprA ) + { + return Contains ( func1, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + return Contains ( func1, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + return Contains ( func1, exprA, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + return Contains ( func1, exprA, exprB, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + return Contains ( func1, exprA, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + return Contains ( func1, exprA, func1A, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Contains ( func1, exprA, func1A, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Contains ( func1, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + return Contains ( func1, func1A, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + return Contains ( func1, func1A, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + return Contains ( func1, func1A, exprA, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Contains ( func1, func1A, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + return Contains ( func1, func1A, func1B, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(func1C); + return new Contains (arguments ); + } + internal Contains contains ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + return Contains ( func1, func1A, func1B, func1C ); + } +/// +/// Get a single field from an object. If called on a sequence, gets that field from every +/// object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan').getField('firstAppearance').run(conn, callback) +/// + public GetField GetField ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new GetField (arguments ); + } + internal GetField getField ( Object exprA ) + { + return GetField ( exprA ); + } +/// +/// Get a single field from an object. If called on a sequence, gets that field from every +/// object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan').getField('firstAppearance').run(conn, callback) +/// + public GetField G ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new GetField (arguments ); + } + internal GetField g ( Object exprA ) + { + return G ( exprA ); + } +/// +/// Return an array containing all of an object's keys. Note that the keys will be sorted as described in ReQL data types (for strings, lexicographically). +/// +/// Example: Get all the keys from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).keys().run(conn, callback); +/// // Result passed to callback +/// [ "id", "mail", "name" ] +/// + public Keys Keys ( ) + { + Arguments arguments = new Arguments(this); + return new Keys (arguments ); + } + internal Keys keys ( ) + { + return Keys ( ); + } +/// +/// Test if an object has one or more fields. An object has a field if it has that key and the key has a non-null value. For instance, the object {'a': 1,'b': 2,'c': null} has the fields a and b. +/// +/// Example: Return the players who have won games. +/// r.table('players').hasFields('games_won').run(conn, callback) +/// + public HasFields HasFields ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new HasFields (arguments ); + } +/// +/// Test if an object has one or more fields. An object has a field if it has that key and the key has a non-null value. For instance, the object {'a': 1,'b': 2,'c': null} has the fields a and b. +/// +/// Example: Return the players who have won games. +/// r.table('players').hasFields('games_won').run(conn, callback) +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public HasFields HasFields ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new HasFields (arguments); + } + internal HasFields hasFields ( params object[] exprs ) + { + return HasFields ( exprs ); + } +/// +/// Plucks one or more attributes from a sequence of objects, filtering out any objects in the sequence that do not have the specified fields. Functionally, this is identical to hasFields followed by pluck on a sequence. +/// +/// Example: Get a list of users and their posts, excluding any users who have not made any posts. +/// Existing table structure: +/// [ +/// { 'id': 1, 'user': 'bob', 'email': 'bob@foo.com', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 2, 'user': 'george', 'email': 'george@foo.com' }, +/// { 'id': 3, 'user': 'jane', 'email': 'jane@foo.com', 'posts': [ 2, 3, 6 ] } +/// ] +/// +/// Command and output: +/// > r.table('users').withFields('id', 'user', 'posts').run(conn, callback) +/// // Result passed to callback +/// [ +/// { 'id': 1, 'user': 'bob', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 3, 'user': 'jane', 'posts': [ 2, 3, 6 ] } +/// ] +/// + public WithFields WithFields ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new WithFields (arguments ); + } +/// +/// Plucks one or more attributes from a sequence of objects, filtering out any objects in the sequence that do not have the specified fields. Functionally, this is identical to hasFields followed by pluck on a sequence. +/// +/// Example: Get a list of users and their posts, excluding any users who have not made any posts. +/// Existing table structure: +/// [ +/// { 'id': 1, 'user': 'bob', 'email': 'bob@foo.com', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 2, 'user': 'george', 'email': 'george@foo.com' }, +/// { 'id': 3, 'user': 'jane', 'email': 'jane@foo.com', 'posts': [ 2, 3, 6 ] } +/// ] +/// +/// Command and output: +/// > r.table('users').withFields('id', 'user', 'posts').run(conn, callback) +/// // Result passed to callback +/// [ +/// { 'id': 1, 'user': 'bob', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 3, 'user': 'jane', 'posts': [ 2, 3, 6 ] } +/// ] +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public WithFields WithFields ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new WithFields (arguments); + } + internal WithFields withFields ( params object[] exprs ) + { + return WithFields ( exprs ); + } +/// +/// Plucks out one or more attributes from either an object or a sequence of objects +/// (projection). +/// +/// Example: We just need information about IronMan's reactor and not the rest of the +/// document. +/// r.table('marvel').get('IronMan').pluck('reactorState', 'reactorPower').run(conn, callback) +/// + public Pluck Pluck ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Pluck (arguments ); + } +/// +/// Plucks out one or more attributes from either an object or a sequence of objects +/// (projection). +/// +/// Example: We just need information about IronMan's reactor and not the rest of the +/// document. +/// r.table('marvel').get('IronMan').pluck('reactorState', 'reactorPower').run(conn, callback) +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public Pluck Pluck ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new Pluck (arguments); + } + internal Pluck pluck ( params object[] exprs ) + { + return Pluck ( exprs ); + } +/// +/// The opposite of pluck; takes an object or a sequence of objects, and returns them with +/// the specified paths removed. +/// +/// Example: Since we don't need it for this computation we'll save bandwidth and leave +/// out the list of IronMan's romantic conquests. +/// r.table('marvel').get('IronMan').without('personalVictoriesList').run(conn, callback) +/// + public Without Without ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Without (arguments ); + } +/// +/// The opposite of pluck; takes an object or a sequence of objects, and returns them with +/// the specified paths removed. +/// +/// Example: Since we don't need it for this computation we'll save bandwidth and leave +/// out the list of IronMan's romantic conquests. +/// r.table('marvel').get('IronMan').without('personalVictoriesList').run(conn, callback) +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public Without Without ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new Without (arguments); + } + internal Without without ( params object[] exprs ) + { + return Without ( exprs ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ) + { + Arguments arguments = new Arguments(this); + return new Merge (arguments ); + } + internal Merge merge ( ) + { + return Merge ( ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js ) + { + return Merge ( js ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Javascript jsA ) + { + return Merge ( js, jsA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Javascript jsA, Javascript jsB ) + { + return Merge ( js, jsA, jsB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(jsC); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + return Merge ( js, jsA, jsB, jsC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(exprA); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + return Merge ( js, jsA, jsB, exprA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Javascript jsA, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Javascript jsA, Object exprA ) + { + return Merge ( js, jsA, exprA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsB); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + return Merge ( js, jsA, exprA, jsB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + return Merge ( js, jsA, exprA, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Object exprA ) + { + return Merge ( js, exprA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Object exprA, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Object exprA, Javascript jsA ) + { + return Merge ( js, exprA, jsA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + return Merge ( js, exprA, jsA, jsB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + return Merge ( js, exprA, jsA, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Object exprA, Object exprB ) + { + return Merge ( js, exprA, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + return Merge ( js, exprA, exprB, jsA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Merge (arguments ); + } + internal Merge merge ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + return Merge ( js, exprA, exprB, exprC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA ) + { + return Merge ( exprA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Javascript js ) + { + return Merge ( exprA, js ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Javascript js, Javascript jsA ) + { + return Merge ( exprA, js, jsA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + return Merge ( exprA, js, jsA, jsB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + return Merge ( exprA, js, jsA, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Javascript js, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Javascript js, Object exprB ) + { + return Merge ( exprA, js, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + return Merge ( exprA, js, exprB, jsA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + return Merge ( exprA, js, exprB, exprC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB ) + { + return Merge ( exprA, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, Javascript js ) + { + return Merge ( exprA, exprB, js ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + return Merge ( exprA, exprB, js, jsA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprC); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + return Merge ( exprA, exprB, js, exprC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, Object exprC ) + { + return Merge ( exprA, exprB, exprC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + return Merge ( exprA, exprB, exprC, js ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(exprD); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + return Merge ( exprA, exprB, exprC, exprD ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func1); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + return Merge ( exprA, exprB, exprC, func1 ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + return Merge ( exprA, exprB, func1 ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprC); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + return Merge ( exprA, exprB, func1, exprC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Merge ( exprA, exprB, func1, func1A ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, ReqlFunction1 func1 ) + { + return Merge ( exprA, func1 ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + return Merge ( exprA, func1, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + return Merge ( exprA, func1, exprB, exprC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + return Merge ( exprA, func1, exprB, func1A ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Merge ( exprA, func1, func1A ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + return Merge ( exprA, func1, func1A, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Merge (arguments ); + } + internal Merge merge ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Merge ( exprA, func1, func1A, func1B ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1 ) + { + return Merge ( func1 ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, Object exprA ) + { + return Merge ( func1, exprA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + return Merge ( func1, exprA, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + return Merge ( func1, exprA, exprB, exprC ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + return Merge ( func1, exprA, exprB, func1A ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + return Merge ( func1, exprA, func1A ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + return Merge ( func1, exprA, func1A, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Merge ( func1, exprA, func1A, func1B ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Merge ( func1, func1A ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + return Merge ( func1, func1A, exprA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + return Merge ( func1, func1A, exprA, exprB ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1B); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + return Merge ( func1, func1A, exprA, func1B ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Merge ( func1, func1A, func1B ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(exprA); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + return Merge ( func1, func1A, func1B, exprA ); + } +/// +/// Merge two or more objects together to construct a new object with properties from all. When there is a conflict between field names, preference is given to fields in the rightmost object in the argument list. merge also accepts a subquery function that returns an object, which will be used similarly to a map function. +/// +/// Example: Equip Thor for battle. +/// r.table('marvel').get('thor').merge( +/// r.table('equipment').get('hammer'), +/// r.table('equipment').get('pimento_sandwich') +/// ).run(conn, callback) +/// + public Merge Merge ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(func1C); + return new Merge (arguments ); + } + internal Merge merge ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + return Merge ( func1, func1A, func1B, func1C ); + } +/// +/// Get all documents between two keys. Accepts three optional arguments: index, leftBound, and rightBound. If index is set to the name of a secondary index, between will return all documents where that index's value is in the specified range (it uses the primary key by default). leftBound or rightBound may be set to open or closed to indicate whether or not to include that endpoint of the range (by default, leftBound is closed and rightBound is open). +/// +/// Example: Find all users with primary key >= 10 and < 20 (a normal half-open interval). +/// r.table('marvel').between(10, 20).run(conn, callback); +/// + public Between Between ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Between (arguments ); + } + internal Between between ( Object exprA, Object exprB ) + { + return Between ( exprA, exprB ); + } +/// +/// Produce a single value from a sequence through repeated application of a reduction function. +/// +/// Example: Return the number of documents in the table posts. +/// r.table("posts").map(function(doc) { +/// return 1; +/// }).reduce(function(left, right) { +/// return left.add(right); +/// }).default(0).run(conn, callback); +/// +/// A shorter way to execute this query is to use count. + public Reduce Reduce ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Reduce (arguments ); + } + internal Reduce reduce ( Javascript js ) + { + return Reduce ( js ); + } +/// +/// Produce a single value from a sequence through repeated application of a reduction function. +/// +/// Example: Return the number of documents in the table posts. +/// r.table("posts").map(function(doc) { +/// return 1; +/// }).reduce(function(left, right) { +/// return left.add(right); +/// }).default(0).run(conn, callback); +/// +/// A shorter way to execute this query is to use count. + public Reduce Reduce ( ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func2); + return new Reduce (arguments ); + } + internal Reduce reduce ( ReqlFunction2 func2 ) + { + return Reduce ( func2 ); + } +/// +/// Apply a function to a sequence in order, maintaining state via an accumulator. The fold command returns either a single value or a new sequence. +/// +/// Example: Concatenate words from a list. +/// r.table('words').orderBy('id').fold('', function (acc, word) { +/// return acc.add(r.branch(acc.eq(''), '', ', ')).add(word); +/// }).run(conn, callback); +/// +/// (This example could be implemented with reduce, but fold will preserve the order when words is a RethinkDB table or other stream, which is not guaranteed with reduce.) + public Fold Fold ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Fold (arguments ); + } + internal Fold fold ( Object exprA, Javascript js ) + { + return Fold ( exprA, js ); + } +/// +/// Apply a function to a sequence in order, maintaining state via an accumulator. The fold command returns either a single value or a new sequence. +/// +/// Example: Concatenate words from a list. +/// r.table('words').orderBy('id').fold('', function (acc, word) { +/// return acc.add(r.branch(acc.eq(''), '', ', ')).add(word); +/// }).run(conn, callback); +/// +/// (This example could be implemented with reduce, but fold will preserve the order when words is a RethinkDB table or other stream, which is not guaranteed with reduce.) + public Fold Fold ( Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new Fold (arguments ); + } + internal Fold fold ( Object exprA, ReqlFunction2 func2 ) + { + return Fold ( exprA, func2 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Map (arguments ); + } + internal Map map ( Javascript js ) + { + return Map ( js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Map (arguments ); + } + internal Map map ( Object exprA, Javascript js ) + { + return Map ( exprA, js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Map (arguments ); + } + internal Map map ( Object exprA, Object exprB, Javascript js ) + { + return Map ( exprA, exprB, js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new Map (arguments ); + } + internal Map map ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + return Map ( exprA, exprB, exprC, js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object exprA, Object exprB, Object exprC, ReqlFunction4 func4 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func4); + return new Map (arguments ); + } + internal Map map ( Object exprA, Object exprB, Object exprC, ReqlFunction4 func4 ) + { + return Map ( exprA, exprB, exprC, func4 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object exprA, Object exprB, ReqlFunction3 func3 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func3); + return new Map (arguments ); + } + internal Map map ( Object exprA, Object exprB, ReqlFunction3 func3 ) + { + return Map ( exprA, exprB, func3 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new Map (arguments ); + } + internal Map map ( Object exprA, ReqlFunction2 func2 ) + { + return Map ( exprA, func2 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( ReqlFunction0 func0 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func0); + return new Map (arguments ); + } + internal Map map ( ReqlFunction0 func0 ) + { + return Map ( func0 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Map (arguments ); + } + internal Map map ( ReqlFunction1 func1 ) + { + return Map ( func1 ); + } +/// +/// Return all the elements in a sequence for which the given predicate is true. The return value of filter will be the same as the input (sequence, stream, or array). Documents can be filtered in a variety of ways—ranges, nested values, boolean conditions, and the results of anonymous functions. +/// +/// Example: Get all users who are 30 years old. +/// r.table('users').filter({age: 30}).run(conn, callback); +/// +/// The predicate {age: 30} selects documents in the users table with an age field whose value is 30. Documents with an age field set to any other value or with no age field present are skipped. + public Filter Filter ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Filter (arguments ); + } + internal Filter filter ( Javascript js ) + { + return Filter ( js ); + } +/// +/// Return all the elements in a sequence for which the given predicate is true. The return value of filter will be the same as the input (sequence, stream, or array). Documents can be filtered in a variety of ways—ranges, nested values, boolean conditions, and the results of anonymous functions. +/// +/// Example: Get all users who are 30 years old. +/// r.table('users').filter({age: 30}).run(conn, callback); +/// +/// The predicate {age: 30} selects documents in the users table with an age field whose value is 30. Documents with an age field set to any other value or with no age field present are skipped. + public Filter Filter ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Filter (arguments ); + } + internal Filter filter ( Object exprA ) + { + return Filter ( exprA ); + } +/// +/// Return all the elements in a sequence for which the given predicate is true. The return value of filter will be the same as the input (sequence, stream, or array). Documents can be filtered in a variety of ways—ranges, nested values, boolean conditions, and the results of anonymous functions. +/// +/// Example: Get all users who are 30 years old. +/// r.table('users').filter({age: 30}).run(conn, callback); +/// +/// The predicate {age: 30} selects documents in the users table with an age field whose value is 30. Documents with an age field set to any other value or with no age field present are skipped. + public Filter Filter ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Filter (arguments ); + } + internal Filter filter ( ReqlFunction1 func1 ) + { + return Filter ( func1 ); + } +/// +/// Concatenate one or more elements into a single sequence using a mapping function. +/// +/// Example: Construct a sequence of all monsters defeated by Marvel heroes. The field "defeatedMonsters" is an array of one or more monster names. +/// r.table('marvel').concatMap(function(hero) { +/// return hero('defeatedMonsters') +/// }).run(conn, callback) +/// + public ConcatMap ConcatMap ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new ConcatMap (arguments ); + } + internal ConcatMap concatMap ( Javascript js ) + { + return ConcatMap ( js ); + } +/// +/// Concatenate one or more elements into a single sequence using a mapping function. +/// +/// Example: Construct a sequence of all monsters defeated by Marvel heroes. The field "defeatedMonsters" is an array of one or more monster names. +/// r.table('marvel').concatMap(function(hero) { +/// return hero('defeatedMonsters') +/// }).run(conn, callback) +/// + public ConcatMap ConcatMap ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new ConcatMap (arguments ); + } + internal ConcatMap concatMap ( ReqlFunction1 func1 ) + { + return ConcatMap ( func1 ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ) + { + Arguments arguments = new Arguments(this); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ) + { + return OrderBy ( ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js ) + { + return OrderBy ( js ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Javascript jsA ) + { + return OrderBy ( js, jsA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Javascript jsA, Javascript jsB ) + { + return OrderBy ( js, jsA, jsB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(jsC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + return OrderBy ( js, jsA, jsB, jsC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(exprA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + return OrderBy ( js, jsA, jsB, exprA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Javascript jsA, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Javascript jsA, Object exprA ) + { + return OrderBy ( js, jsA, exprA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + return OrderBy ( js, jsA, exprA, jsB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + return OrderBy ( js, jsA, exprA, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Object exprA ) + { + return OrderBy ( js, exprA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Object exprA, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Object exprA, Javascript jsA ) + { + return OrderBy ( js, exprA, jsA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + return OrderBy ( js, exprA, jsA, jsB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + return OrderBy ( js, exprA, jsA, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Object exprA, Object exprB ) + { + return OrderBy ( js, exprA, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + return OrderBy ( js, exprA, exprB, jsA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + return OrderBy ( js, exprA, exprB, exprC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA ) + { + return OrderBy ( exprA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Javascript js ) + { + return OrderBy ( exprA, js ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Javascript js, Javascript jsA ) + { + return OrderBy ( exprA, js, jsA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + return OrderBy ( exprA, js, jsA, jsB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + return OrderBy ( exprA, js, jsA, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Javascript js, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Javascript js, Object exprB ) + { + return OrderBy ( exprA, js, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + return OrderBy ( exprA, js, exprB, jsA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + return OrderBy ( exprA, js, exprB, exprC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB ) + { + return OrderBy ( exprA, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, Javascript js ) + { + return OrderBy ( exprA, exprB, js ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + return OrderBy ( exprA, exprB, js, jsA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + return OrderBy ( exprA, exprB, js, exprC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, Object exprC ) + { + return OrderBy ( exprA, exprB, exprC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + return OrderBy ( exprA, exprB, exprC, js ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(exprD); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + return OrderBy ( exprA, exprB, exprC, exprD ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func1); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + return OrderBy ( exprA, exprB, exprC, func1 ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + return OrderBy ( exprA, exprB, func1 ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + return OrderBy ( exprA, exprB, func1, exprC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return OrderBy ( exprA, exprB, func1, func1A ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, ReqlFunction1 func1 ) + { + return OrderBy ( exprA, func1 ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + return OrderBy ( exprA, func1, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + return OrderBy ( exprA, func1, exprB, exprC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + return OrderBy ( exprA, func1, exprB, func1A ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return OrderBy ( exprA, func1, func1A ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + return OrderBy ( exprA, func1, func1A, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return OrderBy ( exprA, func1, func1A, func1B ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1 ) + { + return OrderBy ( func1 ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, Object exprA ) + { + return OrderBy ( func1, exprA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + return OrderBy ( func1, exprA, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + return OrderBy ( func1, exprA, exprB, exprC ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + return OrderBy ( func1, exprA, exprB, func1A ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + return OrderBy ( func1, exprA, func1A ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + return OrderBy ( func1, exprA, func1A, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return OrderBy ( func1, exprA, func1A, func1B ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return OrderBy ( func1, func1A ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + return OrderBy ( func1, func1A, exprA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + return OrderBy ( func1, func1A, exprA, exprB ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1B); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + return OrderBy ( func1, func1A, exprA, func1B ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return OrderBy ( func1, func1A, func1B ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(exprA); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + return OrderBy ( func1, func1A, func1B, exprA ); + } +/// +/// Sort the sequence by document values of the given key(s). To specify +/// the ordering, wrap the attribute with either r.asc or r.desc +/// (defaults to ascending). +/// +/// Example: Order all the posts using the index date. +/// r.table('posts').orderBy({index: 'date'}).run(conn, callback); +/// + public OrderBy OrderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(func1C); + return new OrderBy (arguments ); + } + internal OrderBy orderBy ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + return OrderBy ( func1, func1A, func1B, func1C ); + } +/// +/// Removes duplicates from elements in a sequence. +/// +/// Example: Which unique villains have been vanquished by Marvel heroes? +/// r.table('marvel').concatMap(function(hero) { +/// return hero('villainList') +/// }).distinct().run(conn, callback) +/// + public Distinct Distinct ( ) + { + Arguments arguments = new Arguments(this); + return new Distinct (arguments ); + } + internal Distinct distinct ( ) + { + return Distinct ( ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( ) + { + Arguments arguments = new Arguments(this); + return new Count (arguments ); + } + internal Count count ( ) + { + return Count ( ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Count (arguments ); + } + internal Count count ( Javascript js ) + { + return Count ( js ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Count (arguments ); + } + internal Count count ( Object exprA ) + { + return Count ( exprA ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Count (arguments ); + } + internal Count count ( ReqlFunction1 func1 ) + { + return Count ( func1 ); + } +/// +/// Test if a sequence is empty. +/// +/// Example: Are there any documents in the marvel table? +/// r.table('marvel').isEmpty().run(conn, callback) +/// + public IsEmpty IsEmpty ( ) + { + Arguments arguments = new Arguments(this); + return new IsEmpty (arguments ); + } + internal IsEmpty isEmpty ( ) + { + return IsEmpty ( ); + } +/// +/// Merge two or more sequences. +/// +/// Example: Construct a stream of all heroes. +/// r.table('marvel').union(r.table('dc')).run(conn, callback); +/// + public Union Union ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Union (arguments ); + } + internal Union union ( params object[] exprs ) + { + return Union ( exprs ); + } +/// +/// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. +/// +/// Example: Select the second element in the array. +/// r.expr([1,2,3]).nth(1).run(conn, callback) +/// r.expr([1,2,3])(1).run(conn, callback) +/// + public Nth Nth ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Nth (arguments ); + } + internal Nth nth ( Object exprA ) + { + return Nth ( exprA ); + } +/// +/// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. +/// +/// Example: What was Iron Man's first appearance in a comic? +/// r.table('marvel').get('IronMan')('firstAppearance').run(conn, callback) +/// + public Bracket Bracket ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Bracket (arguments ); + } + internal Bracket bracket ( Object exprA ) + { + return Bracket ( exprA ); + } +/// +/// Returns an inner join of two sequences. +/// +/// Example: Return a list of all matchups between Marvel and DC heroes in which the DC hero could beat the Marvel hero in a fight. +/// r.table('marvel').innerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).zip().run(conn, callback) +/// + public InnerJoin InnerJoin ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new InnerJoin (arguments ); + } + internal InnerJoin innerJoin ( Object exprA, Javascript js ) + { + return InnerJoin ( exprA, js ); + } +/// +/// Returns an inner join of two sequences. +/// +/// Example: Return a list of all matchups between Marvel and DC heroes in which the DC hero could beat the Marvel hero in a fight. +/// r.table('marvel').innerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).zip().run(conn, callback) +/// + public InnerJoin InnerJoin ( Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new InnerJoin (arguments ); + } + internal InnerJoin innerJoin ( Object exprA, ReqlFunction2 func2 ) + { + return InnerJoin ( exprA, func2 ); + } +/// +/// Returns a left outer join of two sequences. The returned sequence represents a union of the left-hand sequence and the right-hand sequence: all documents in the left-hand sequence will be returned, each matched with a document in the right-hand sequence if one satisfies the predicate condition. In most cases, you will want to follow the join with zip to combine the left and right results. +/// +/// Example: Return a list of all Marvel heroes, paired with any DC heroes who could beat them in a fight. +/// r.table('marvel').outerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).run(conn, callback) +/// +/// (Compare this to an innerJoin with the same inputs and predicate, which would return a list only of the matchups in which the DC hero has the higher strength.) + public OuterJoin OuterJoin ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new OuterJoin (arguments ); + } + internal OuterJoin outerJoin ( Object exprA, Javascript js ) + { + return OuterJoin ( exprA, js ); + } +/// +/// Returns a left outer join of two sequences. The returned sequence represents a union of the left-hand sequence and the right-hand sequence: all documents in the left-hand sequence will be returned, each matched with a document in the right-hand sequence if one satisfies the predicate condition. In most cases, you will want to follow the join with zip to combine the left and right results. +/// +/// Example: Return a list of all Marvel heroes, paired with any DC heroes who could beat them in a fight. +/// r.table('marvel').outerJoin(r.table('dc'), function(marvelRow, dcRow) { +/// return marvelRow('strength').lt(dcRow('strength')) +/// }).run(conn, callback) +/// +/// (Compare this to an innerJoin with the same inputs and predicate, which would return a list only of the matchups in which the DC hero has the higher strength.) + public OuterJoin OuterJoin ( Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new OuterJoin (arguments ); + } + internal OuterJoin outerJoin ( Object exprA, ReqlFunction2 func2 ) + { + return OuterJoin ( exprA, func2 ); + } +/// +/// Join tables using a field or function on the left-hand sequence matching primary keys or secondary indexes on the right-hand table. eqJoin is more efficient than other ReQL join types, and operates much faster. Documents in the result set consist of pairs of left-hand and right-hand documents, matched when the field on the left-hand side exists and is non-null and an entry with that field's value exists in the specified index on the right-hand side. +/// +/// + public EqJoin EqJoin ( Javascript js, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + return new EqJoin (arguments ); + } + internal EqJoin eqJoin ( Javascript js, Object exprA ) + { + return EqJoin ( js, exprA ); + } +/// +/// Join tables using a field or function on the left-hand sequence matching primary keys or secondary indexes on the right-hand table. eqJoin is more efficient than other ReQL join types, and operates much faster. Documents in the result set consist of pairs of left-hand and right-hand documents, matched when the field on the left-hand side exists and is non-null and an entry with that field's value exists in the specified index on the right-hand side. +/// +/// + public EqJoin EqJoin ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new EqJoin (arguments ); + } + internal EqJoin eqJoin ( Object exprA, Object exprB ) + { + return EqJoin ( exprA, exprB ); + } +/// +/// Join tables using a field or function on the left-hand sequence matching primary keys or secondary indexes on the right-hand table. eqJoin is more efficient than other ReQL join types, and operates much faster. Documents in the result set consist of pairs of left-hand and right-hand documents, matched when the field on the left-hand side exists and is non-null and an entry with that field's value exists in the specified index on the right-hand side. +/// +/// + public EqJoin EqJoin ( ReqlFunction1 func1, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + return new EqJoin (arguments ); + } + internal EqJoin eqJoin ( ReqlFunction1 func1, Object exprA ) + { + return EqJoin ( func1, exprA ); + } +/// +/// Used to 'zip' up the result of a join by merging the 'right' fields into 'left' fields of each member of the sequence. +/// +/// Example: 'zips up' the sequence by merging the left and right fields produced by a join. +/// r.table('marvel').eqJoin('main_dc_collaborator', r.table('dc')) +/// .zip().run(conn, callback) +/// + public Zip Zip ( ) + { + Arguments arguments = new Arguments(this); + return new Zip (arguments ); + } + internal Zip zip ( ) + { + return Zip ( ); + } +/// +/// Insert a value in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk decides to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).insertAt(1, "Hulk").run(conn, callback) +/// + public InsertAt InsertAt ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new InsertAt (arguments ); + } + internal InsertAt insertAt ( Object exprA, Object exprB ) + { + return InsertAt ( exprA, exprB ); + } +/// +/// Remove one or more elements from an array at a given index. Returns the modified array. (Note: deleteAt operates on arrays, not documents; to delete documents, see the delete command.) +/// +/// Example: Delete the second element of an array. +/// > r(['a','b','c','d','e','f']).deleteAt(1).run(conn, callback) +/// // result passed to callback +/// ['a', 'c', 'd', 'e', 'f'] +/// + public DeleteAt DeleteAt ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new DeleteAt (arguments ); + } + internal DeleteAt deleteAt ( Object exprA ) + { + return DeleteAt ( exprA ); + } +/// +/// Remove one or more elements from an array at a given index. Returns the modified array. (Note: deleteAt operates on arrays, not documents; to delete documents, see the delete command.) +/// +/// Example: Delete the second element of an array. +/// > r(['a','b','c','d','e','f']).deleteAt(1).run(conn, callback) +/// // result passed to callback +/// ['a', 'c', 'd', 'e', 'f'] +/// + public DeleteAt DeleteAt ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new DeleteAt (arguments ); + } + internal DeleteAt deleteAt ( Object exprA, Object exprB ) + { + return DeleteAt ( exprA, exprB ); + } +/// +/// Change a value in an array at a given index. Returns the modified array. +/// +/// Example: Bruce Banner hulks out. +/// r.expr(["Iron Man", "Bruce", "Spider-Man"]).changeAt(1, "Hulk").run(conn, callback) +/// + public ChangeAt ChangeAt ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new ChangeAt (arguments ); + } + internal ChangeAt changeAt ( Object exprA, Object exprB ) + { + return ChangeAt ( exprA, exprB ); + } +/// +/// Insert several values in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk and Thor decide to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).spliceAt(1, ["Hulk", "Thor"]).run(conn, callback) +/// + public SpliceAt SpliceAt ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new SpliceAt (arguments ); + } + internal SpliceAt spliceAt ( Object exprA, Object exprB ) + { + return SpliceAt ( exprA, exprB ); + } +/// +/// Convert a value of one type into another. +/// +/// Example: Coerce a stream to an array to store its output in a field. (A stream cannot be stored in a field directly.) +/// r.table('posts').map(function (post) { +/// return post.merge({ comments: r.table('comments').getAll(post('id'), {index: 'postId'}).coerceTo('array')}); +/// }).run(conn, callback) +/// + public CoerceTo CoerceTo ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new CoerceTo (arguments ); + } + internal CoerceTo coerceTo ( Object exprA ) + { + return CoerceTo ( exprA ); + } +/// +/// Gets the type of a ReQL query's return value. +/// +/// Example: Get the type of a string. +/// r.expr("foo").typeOf().run(conn, callback); +/// // Result passed to callback +/// "STRING" +/// + public TypeOf TypeOf ( ) + { + Arguments arguments = new Arguments(this); + return new TypeOf (arguments ); + } + internal TypeOf typeOf ( ) + { + return TypeOf ( ); + } +/// +/// Update JSON documents in a table. Accepts a JSON document, a ReQL expression, or a combination of the two. +/// +/// Example: Update the status of the post with id of 1 to published. +/// r.table("posts").get(1).update({status: "published"}).run(conn, callback) +/// + public Update Update ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Update (arguments ); + } + internal Update update ( Javascript js ) + { + return Update ( js ); + } +/// +/// Update JSON documents in a table. Accepts a JSON document, a ReQL expression, or a combination of the two. +/// +/// Example: Update the status of the post with id of 1 to published. +/// r.table("posts").get(1).update({status: "published"}).run(conn, callback) +/// + public Update Update ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Update (arguments ); + } + internal Update update ( Object exprA ) + { + return Update ( exprA ); + } +/// +/// Update JSON documents in a table. Accepts a JSON document, a ReQL expression, or a combination of the two. +/// +/// Example: Update the status of the post with id of 1 to published. +/// r.table("posts").get(1).update({status: "published"}).run(conn, callback) +/// + public Update Update ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Update (arguments ); + } + internal Update update ( ReqlFunction1 func1 ) + { + return Update ( func1 ); + } +/// +/// Delete one or more documents from a table. +/// +/// Example: Delete a single document from the table comments. +/// r.table("comments").get("7eab9e63-73f1-4f33-8ce4-95cbea626f59").delete().run(conn, callback) +/// + public Delete Delete ( ) + { + Arguments arguments = new Arguments(this); + return new Delete (arguments ); + } + internal Delete delete ( ) + { + return Delete ( ); + } +/// +/// Replace documents in a table. Accepts a JSON document or a ReQL expression, +/// and replaces the original document with the new one. The new document must +/// have the same primary key as the original document. +/// +/// Example: Replace the document with the primary key 1. +/// r.table("posts").get(1).replace({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Aleas jacta est", +/// status: "draft" +/// }).run(conn, callback) +/// + public Replace Replace ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Replace (arguments ); + } + internal Replace replace ( Javascript js ) + { + return Replace ( js ); + } +/// +/// Replace documents in a table. Accepts a JSON document or a ReQL expression, +/// and replaces the original document with the new one. The new document must +/// have the same primary key as the original document. +/// +/// Example: Replace the document with the primary key 1. +/// r.table("posts").get(1).replace({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Aleas jacta est", +/// status: "draft" +/// }).run(conn, callback) +/// + public Replace Replace ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Replace (arguments ); + } + internal Replace replace ( Object exprA ) + { + return Replace ( exprA ); + } +/// +/// Replace documents in a table. Accepts a JSON document or a ReQL expression, +/// and replaces the original document with the new one. The new document must +/// have the same primary key as the original document. +/// +/// Example: Replace the document with the primary key 1. +/// r.table("posts").get(1).replace({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Aleas jacta est", +/// status: "draft" +/// }).run(conn, callback) +/// + public Replace Replace ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Replace (arguments ); + } + internal Replace replace ( ReqlFunction1 func1 ) + { + return Replace ( func1 ); + } + public Funcall Do_ ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Funcall (arguments ); + } + internal Funcall do_ ( Javascript js ) + { + return Do_ ( js ); + } + public Funcall Do_ ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Funcall (arguments ); + } + internal Funcall do_ ( Object exprA, Javascript js ) + { + return Do_ ( exprA, js ); + } + public Funcall Do_ ( Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Funcall (arguments ); + } + internal Funcall do_ ( Object exprA, Object exprB, Javascript js ) + { + return Do_ ( exprA, exprB, js ); + } + public Funcall Do_ ( Object exprA, Object exprB, ReqlFunction3 func3 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func3); + return new Funcall (arguments ); + } + internal Funcall do_ ( Object exprA, Object exprB, ReqlFunction3 func3 ) + { + return Do_ ( exprA, exprB, func3 ); + } + public Funcall Do_ ( Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new Funcall (arguments ); + } + internal Funcall do_ ( Object exprA, ReqlFunction2 func2 ) + { + return Do_ ( exprA, func2 ); + } + public Funcall Do_ ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Funcall (arguments ); + } + internal Funcall do_ ( params object[] exprs ) + { + return Do_ ( exprs ); + } + public Funcall Do_ ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Funcall (arguments ); + } + internal Funcall do_ ( ReqlFunction1 func1 ) + { + return Do_ ( func1 ); + } +/// +/// Compute the logical "or" of one or more values. +/// +/// Example: Return whether either a or b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).or(b).run(conn, callback); +/// // result passed to callback +/// true +/// + public Or Or ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new Or (arguments ); + } + internal Or or ( params object[] exprs ) + { + return Or ( exprs ); + } +/// +/// Compute the logical "and" of one or more values. +/// +/// Example: Return whether both a and b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).and(b).run(conn, callback); +/// // result passed to callback +/// false +/// + public And And ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new And (arguments ); + } + internal And and ( params object[] exprs ) + { + return And ( exprs ); + } +/// +/// Loop over a sequence, evaluating the given write query for each element. +/// +/// Example: Now that our heroes have defeated their villains, we can safely remove them from the villain table. +/// r.table('marvel').forEach(function(hero) { +/// return r.table('villains').get(hero('villainDefeated')).delete() +/// }).run(conn, callback) +/// + public ForEach ForEach ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new ForEach (arguments ); + } + internal ForEach forEach ( Javascript js ) + { + return ForEach ( js ); + } +/// +/// Loop over a sequence, evaluating the given write query for each element. +/// +/// Example: Now that our heroes have defeated their villains, we can safely remove them from the villain table. +/// r.table('marvel').forEach(function(hero) { +/// return r.table('villains').get(hero('villainDefeated')).delete() +/// }).run(conn, callback) +/// + public ForEach ForEach ( ReqlFunction0 func0 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func0); + return new ForEach (arguments ); + } + internal ForEach forEach ( ReqlFunction0 func0 ) + { + return ForEach ( func0 ); + } +/// +/// Loop over a sequence, evaluating the given write query for each element. +/// +/// Example: Now that our heroes have defeated their villains, we can safely remove them from the villain table. +/// r.table('marvel').forEach(function(hero) { +/// return r.table('villains').get(hero('villainDefeated')).delete() +/// }).run(conn, callback) +/// + public ForEach ForEach ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new ForEach (arguments ); + } + internal ForEach forEach ( ReqlFunction1 func1 ) + { + return ForEach ( func1 ); + } +/// +/// Get information about a ReQL value. +/// +/// Example: Get information about a table such as primary key, or cache size. +/// r.table('marvel').info().run(conn, callback) +/// + public Info Info ( ) + { + Arguments arguments = new Arguments(this); + return new Info (arguments ); + } + internal Info info ( ) + { + return Info ( ); + } +/// +/// Matches against a regular expression. If there is a match, returns an object with the fields: +///
    +///
  • str: The matched string
  • +///
  • start: The matched string's start
  • +///
  • end: The matched string's end
  • +///
  • groups: The capture groups defined with parentheses
  • +///
+/// If no match is found, returns null. +///
+/// Example: Get all users whose name starts with "A". Because null evaluates to false in +/// filter, you can just use the result of match for the predicate. +/// r.table('users').filter(function(doc){ +/// return doc('name').match("^A") +/// }).run(conn, callback) +/// + public Match Match ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Match (arguments ); + } + internal Match match ( Object exprA ) + { + return Match ( exprA ); + } +/// +/// Uppercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").upcase().run(conn, callback) +/// +/// Result: +/// "SENTENCE ABOUT LATEX." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Upcase Upcase ( ) + { + Arguments arguments = new Arguments(this); + return new Upcase (arguments ); + } + internal Upcase upcase ( ) + { + return Upcase ( ); + } +/// +/// Lowercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").downcase().run(conn, callback) +/// +/// Result: +/// "sentence about latex." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Downcase Downcase ( ) + { + Arguments arguments = new Arguments(this); + return new Downcase (arguments ); + } + internal Downcase downcase ( ) + { + return Downcase ( ); + } +/// +/// Select a given number of elements from a sequence with uniform random distribution. Selection is done without replacement. +/// +/// Example: Select 3 random heroes. +/// r.table('marvel').sample(3).run(conn, callback) +/// + public Sample Sample ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Sample (arguments ); + } + internal Sample sample ( Object exprA ) + { + return Sample ( exprA ); + } +/// +/// Provide a default value in case of non-existence errors. The default command evaluates its first argument (the value it's chained to). If that argument returns null or a non-existence error is thrown in evaluation, then default returns its second argument. The second argument is usually a default value, but it can be a function that returns a value. +/// +/// Example: Retrieve the titles and authors of the table posts. +/// In the case where the author field is missing or null, we want to retrieve the string +/// Anonymous. +/// r.table("posts").map(function (post) { +/// return { +/// title: post("title"), +/// author: post("author").default("Anonymous") +/// } +/// }).run(conn, callback); +/// + public Default Default_ ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Default (arguments ); + } + internal Default default_ ( Javascript js ) + { + return Default_ ( js ); + } +/// +/// Provide a default value in case of non-existence errors. The default command evaluates its first argument (the value it's chained to). If that argument returns null or a non-existence error is thrown in evaluation, then default returns its second argument. The second argument is usually a default value, but it can be a function that returns a value. +/// +/// Example: Retrieve the titles and authors of the table posts. +/// In the case where the author field is missing or null, we want to retrieve the string +/// Anonymous. +/// r.table("posts").map(function (post) { +/// return { +/// title: post("title"), +/// author: post("author").default("Anonymous") +/// } +/// }).run(conn, callback); +/// + public Default Default_ ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Default (arguments ); + } + internal Default default_ ( Object exprA ) + { + return Default_ ( exprA ); + } +/// +/// Provide a default value in case of non-existence errors. The default command evaluates its first argument (the value it's chained to). If that argument returns null or a non-existence error is thrown in evaluation, then default returns its second argument. The second argument is usually a default value, but it can be a function that returns a value. +/// +/// Example: Retrieve the titles and authors of the table posts. +/// In the case where the author field is missing or null, we want to retrieve the string +/// Anonymous. +/// r.table("posts").map(function (post) { +/// return { +/// title: post("title"), +/// author: post("author").default("Anonymous") +/// } +/// }).run(conn, callback); +/// + public Default Default_ ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Default (arguments ); + } + internal Default default_ ( ReqlFunction1 func1 ) + { + return Default_ ( func1 ); + } +/// +/// Convert a ReQL value or object to a JSON string. You may use either toJsonString or toJSON. +/// +/// Example: Get a ReQL document as a JSON string. +/// > r.table('hero').get(1).toJSON() +/// // result returned to callback +/// '{"id": 1, "name": "Batman", "city": "Gotham", "powers": ["martial arts", "cinematic entrances"]}' +/// + public ToJsonString ToJsonString ( ) + { + Arguments arguments = new Arguments(this); + return new ToJsonString (arguments ); + } + internal ToJsonString toJsonString ( ) + { + return ToJsonString ( ); + } +/// +/// Convert a ReQL value or object to a JSON string. You may use either toJsonString or toJSON. +/// +/// Example: Get a ReQL document as a JSON string. +/// > r.table('hero').get(1).toJSON() +/// // result returned to callback +/// '{"id": 1, "name": "Batman", "city": "Gotham", "powers": ["martial arts", "cinematic entrances"]}' +/// + public ToJsonString ToJson ( ) + { + Arguments arguments = new Arguments(this); + return new ToJsonString (arguments ); + } + internal ToJsonString toJson ( ) + { + return ToJson ( ); + } +/// +/// Convert a time object to a string in ISO 8601 format. +/// +/// Example: Return the current ISO 8601 time. +/// r.now().toISO8601().run(conn, callback) +/// // Result passed to callback +/// "2015-04-20T18:37:52.690+00:00" +/// + public ToIso8601 ToIso8601 ( ) + { + Arguments arguments = new Arguments(this); + return new ToIso8601 (arguments ); + } + internal ToIso8601 toIso8601 ( ) + { + return ToIso8601 ( ); + } +/// +/// Convert a time object to its epoch time. +/// +/// Example: Return the current time in seconds since the Unix Epoch with millisecond-precision. +/// r.now().toEpochTime() +/// + public ToEpochTime ToEpochTime ( ) + { + Arguments arguments = new Arguments(this); + return new ToEpochTime (arguments ); + } + internal ToEpochTime toEpochTime ( ) + { + return ToEpochTime ( ); + } +/// +/// Return a new time object with a different timezone. While the time stays the same, the results returned by methods such as hours() will change since they take the timezone into account. The timezone argument has to be of the ISO 8601 format. +/// +/// Example: Hour of the day in San Francisco (UTC/GMT -8, without daylight saving time). +/// r.now().inTimezone('-08:00').hours().run(conn, callback) +/// + public InTimezone InTimezone ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new InTimezone (arguments ); + } + internal InTimezone inTimezone ( Object exprA ) + { + return InTimezone ( exprA ); + } +/// +/// Return whether a time is between two other times. +/// +/// Example: Retrieve all the posts that were posted between December 1st, 2013 +/// (inclusive) and December 10th, 2013 (exclusive). +/// r.table("posts").filter( +/// r.row('date').during(r.time(2013, 12, 1, "Z"), r.time(2013, 12, 10, "Z")) +/// ).run(conn, callback) +/// + public During During ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new During (arguments ); + } + internal During during ( Object exprA, Object exprB ) + { + return During ( exprA, exprB ); + } +/// +/// Return a new time object only based on the day, month and year (ie. the same day at 00:00). +/// +/// Example: Retrieve all the users whose birthday is today. +/// r.table("users").filter(function(user) { +/// return user("birthdate").date().eq(r.now().date()) +/// }).run(conn, callback) +/// + public Date Date ( ) + { + Arguments arguments = new Arguments(this); + return new Date (arguments ); + } + internal Date date ( ) + { + return Date ( ); + } +/// +/// Return the number of seconds elapsed since the beginning of the day stored in the time object. +/// +/// Example: Retrieve posts that were submitted before noon. +/// r.table("posts").filter( +/// r.row("date").timeOfDay().le(12*60*60) +/// ).run(conn, callback) +/// + public TimeOfDay TimeOfDay ( ) + { + Arguments arguments = new Arguments(this); + return new TimeOfDay (arguments ); + } + internal TimeOfDay timeOfDay ( ) + { + return TimeOfDay ( ); + } +/// +/// Return the timezone of the time object. +/// +/// Example: Return all the users in the "-07:00" timezone. +/// r.table("users").filter( function(user) { +/// return user("subscriptionDate").timezone().eq("-07:00") +/// }) +/// + public Timezone Timezone ( ) + { + Arguments arguments = new Arguments(this); + return new Timezone (arguments ); + } + internal Timezone timezone ( ) + { + return Timezone ( ); + } +/// +/// Return the year of a time object. +/// +/// Example: Retrieve all the users born in 1986. +/// r.table("users").filter(function(user) { +/// return user("birthdate").year().eq(1986) +/// }).run(conn, callback) +/// + public Year Year ( ) + { + Arguments arguments = new Arguments(this); + return new Year (arguments ); + } + internal Year year ( ) + { + return Year ( ); + } +/// +/// Return the month of a time object as a number between 1 and 12. For your convenience, the terms r.january, r.february etc. are defined and map to the appropriate integer. +/// +/// Example: Retrieve all the users who were born in November. +/// r.table("users").filter( +/// r.row("birthdate").month().eq(11) +/// ) +/// + public Month Month ( ) + { + Arguments arguments = new Arguments(this); + return new Month (arguments ); + } + internal Month month ( ) + { + return Month ( ); + } +/// +/// Return the day of a time object as a number between 1 and 31. +/// +/// Example: Return the users born on the 24th of any month. +/// r.table("users").filter( +/// r.row("birthdate").day().eq(24) +/// ).run(conn, callback) +/// + public Day Day ( ) + { + Arguments arguments = new Arguments(this); + return new Day (arguments ); + } + internal Day day ( ) + { + return Day ( ); + } +/// +/// Return the day of week of a time object as a number between 1 and 7 (following ISO 8601 standard). For your convenience, the terms r.monday, r.tuesday etc. are defined and map to the appropriate integer. +/// +/// Example: Return today's day of week. +/// r.now().dayOfWeek().run(conn, callback) +/// + public DayOfWeek DayOfWeek ( ) + { + Arguments arguments = new Arguments(this); + return new DayOfWeek (arguments ); + } + internal DayOfWeek dayOfWeek ( ) + { + return DayOfWeek ( ); + } +/// +/// Return the day of the year of a time object as a number between 1 and 366 (following ISO 8601 standard). +/// +/// Example: Retrieve all the users who were born the first day of a year. +/// r.table("users").filter( +/// r.row("birthdate").dayOfYear().eq(1) +/// ) +/// + public DayOfYear DayOfYear ( ) + { + Arguments arguments = new Arguments(this); + return new DayOfYear (arguments ); + } + internal DayOfYear dayOfYear ( ) + { + return DayOfYear ( ); + } +/// +/// Return the hour in a time object as a number between 0 and 23. +/// +/// Example: Return all the posts submitted after midnight and before 4am. +/// r.table("posts").filter(function(post) { +/// return post("date").hours().lt(4) +/// }) +/// + public Hours Hours ( ) + { + Arguments arguments = new Arguments(this); + return new Hours (arguments ); + } + internal Hours hours ( ) + { + return Hours ( ); + } +/// +/// Return the minute in a time object as a number between 0 and 59. +/// +/// Example: Return all the posts submitted during the first 10 minutes of every hour. +/// r.table("posts").filter(function(post) { +/// return post("date").minutes().lt(10) +/// }) +/// + public Minutes Minutes ( ) + { + Arguments arguments = new Arguments(this); + return new Minutes (arguments ); + } + internal Minutes minutes ( ) + { + return Minutes ( ); + } +/// +/// Return the seconds in a time object as a number between 0 and 59.999 (double precision). +/// +/// Example: Return the post submitted during the first 30 seconds of every minute. +/// r.table("posts").filter(function(post) { +/// return post("date").seconds().lt(30) +/// }) +/// + public Seconds Seconds ( ) + { + Arguments arguments = new Arguments(this); + return new Seconds (arguments ); + } + internal Seconds seconds ( ) + { + return Seconds ( ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ) + { + Arguments arguments = new Arguments(this); + return new Group (arguments ); + } + internal Group group ( ) + { + return Group ( ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Group (arguments ); + } + internal Group group ( Javascript js ) + { + return Group ( js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Group (arguments ); + } + internal Group group ( Javascript js, Javascript jsA ) + { + return Group ( js, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments ); + } + internal Group group ( Javascript js, Javascript jsA, Javascript jsB ) + { + return Group ( js, jsA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(jsC); + return new Group (arguments ); + } + internal Group group ( Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + return Group ( js, jsA, jsB, jsC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(exprA); + return new Group (arguments ); + } + internal Group group ( Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + return Group ( js, jsA, jsB, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Javascript jsA, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + return new Group (arguments ); + } + internal Group group ( Javascript js, Javascript jsA, Object exprA ) + { + return Group ( js, jsA, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments ); + } + internal Group group ( Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + return Group ( js, jsA, exprA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + return Group ( js, jsA, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + return new Group (arguments ); + } + internal Group group ( Javascript js, Object exprA ) + { + return Group ( js, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Object exprA, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + return new Group (arguments ); + } + internal Group group ( Javascript js, Object exprA, Javascript jsA ) + { + return Group ( js, exprA, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments ); + } + internal Group group ( Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + return Group ( js, exprA, jsA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + return Group ( js, exprA, jsA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Javascript js, Object exprA, Object exprB ) + { + return Group ( js, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Group (arguments ); + } + internal Group group ( Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + return Group ( js, exprA, exprB, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments ); + } + internal Group group ( Javascript js, Object exprA, Object exprB, Object exprC ) + { + return Group ( js, exprA, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Group (arguments ); + } + internal Group group ( Object exprA ) + { + return Group ( exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Group (arguments ); + } + internal Group group ( Object exprA, Javascript js ) + { + return Group ( exprA, js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Group (arguments ); + } + internal Group group ( Object exprA, Javascript js, Javascript jsA ) + { + return Group ( exprA, js, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments ); + } + internal Group group ( Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + return Group ( exprA, js, jsA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + return Group ( exprA, js, jsA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Javascript js, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Object exprA, Javascript js, Object exprB ) + { + return Group ( exprA, js, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Group (arguments ); + } + internal Group group ( Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + return Group ( exprA, js, exprB, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments ); + } + internal Group group ( Object exprA, Javascript js, Object exprB, Object exprC ) + { + return Group ( exprA, js, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB ) + { + return Group ( exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, Javascript js ) + { + return Group ( exprA, exprB, js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + return Group ( exprA, exprB, js, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprC); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, Javascript js, Object exprC ) + { + return Group ( exprA, exprB, js, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, Object exprC ) + { + return Group ( exprA, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, Object exprC, Javascript js ) + { + return Group ( exprA, exprB, exprC, js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(exprD); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, Object exprC, Object exprD ) + { + return Group ( exprA, exprB, exprC, exprD ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func1); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + return Group ( exprA, exprB, exprC, func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, ReqlFunction1 func1 ) + { + return Group ( exprA, exprB, func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprC); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + return Group ( exprA, exprB, func1, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Group (arguments ); + } + internal Group group ( Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Group ( exprA, exprB, func1, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + return new Group (arguments ); + } + internal Group group ( Object exprA, ReqlFunction1 func1 ) + { + return Group ( exprA, func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Object exprA, ReqlFunction1 func1, Object exprB ) + { + return Group ( exprA, func1, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments ); + } + internal Group group ( Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + return Group ( exprA, func1, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Group (arguments ); + } + internal Group group ( Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + return Group ( exprA, func1, exprB, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Group (arguments ); + } + internal Group group ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Group ( exprA, func1, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + return Group ( exprA, func1, func1A, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Group (arguments ); + } + internal Group group ( Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Group ( exprA, func1, func1A, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1 ) + { + return Group ( func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, Object exprA ) + { + return Group ( func1, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, Object exprA, Object exprB ) + { + return Group ( func1, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + return Group ( func1, exprA, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + return Group ( func1, exprA, exprB, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + return Group ( func1, exprA, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + return Group ( func1, exprA, func1A, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Group ( func1, exprA, func1A, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Group ( func1, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + return Group ( func1, func1A, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + return Group ( func1, func1A, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1B); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + return Group ( func1, func1A, exprA, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Group ( func1, func1A, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(exprA); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + return Group ( func1, func1A, func1B, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(func1C); + return new Group (arguments ); + } + internal Group group ( ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + return Group ( func1, func1A, func1B, func1C ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( ) + { + Arguments arguments = new Arguments(this); + return new Sum (arguments ); + } + internal Sum sum ( ) + { + return Sum ( ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Sum (arguments ); + } + internal Sum sum ( Javascript js ) + { + return Sum ( js ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Sum (arguments ); + } + internal Sum sum ( Object exprA ) + { + return Sum ( exprA ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Sum (arguments ); + } + internal Sum sum ( ReqlFunction1 func1 ) + { + return Sum ( func1 ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( ) + { + Arguments arguments = new Arguments(this); + return new Avg (arguments ); + } + internal Avg avg ( ) + { + return Avg ( ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Avg (arguments ); + } + internal Avg avg ( Javascript js ) + { + return Avg ( js ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Avg (arguments ); + } + internal Avg avg ( Object exprA ) + { + return Avg ( exprA ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Avg (arguments ); + } + internal Avg avg ( ReqlFunction1 func1 ) + { + return Avg ( func1 ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( ) + { + Arguments arguments = new Arguments(this); + return new Min (arguments ); + } + internal Min min ( ) + { + return Min ( ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Min (arguments ); + } + internal Min min ( Javascript js ) + { + return Min ( js ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Min (arguments ); + } + internal Min min ( Object exprA ) + { + return Min ( exprA ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Min (arguments ); + } + internal Min min ( ReqlFunction1 func1 ) + { + return Min ( func1 ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( ) + { + Arguments arguments = new Arguments(this); + return new Max (arguments ); + } + internal Max max ( ) + { + return Max ( ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(js); + return new Max (arguments ); + } + internal Max max ( Javascript js ) + { + return Max ( js ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Max (arguments ); + } + internal Max max ( Object exprA ) + { + return Max ( exprA ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(func1); + return new Max (arguments ); + } + internal Max max ( ReqlFunction1 func1 ) + { + return Max ( func1 ); + } +/// +/// Splits a string into substrings. Splits on whitespace when called +/// with no arguments. When called with a separator, splits on that +/// separator. When called with a separator and a maximum number of +/// splits, splits on that separator at most max_splits times. (Can be +/// called with null as the separator if you want to split on whitespace +/// while still specifying max_splits.) +/// +/// Example: Split on whitespace. +/// r.expr("foo bar bax").split().run(conn, callback) +/// +/// Result: +/// ["foo", "bar", "bax"] +/// + public Split Split ( ) + { + Arguments arguments = new Arguments(this); + return new Split (arguments ); + } + internal Split split ( ) + { + return Split ( ); + } +/// +/// Splits a string into substrings. Splits on whitespace when called +/// with no arguments. When called with a separator, splits on that +/// separator. When called with a separator and a maximum number of +/// splits, splits on that separator at most max_splits times. (Can be +/// called with null as the separator if you want to split on whitespace +/// while still specifying max_splits.) +/// +/// Example: Split on whitespace. +/// r.expr("foo bar bax").split().run(conn, callback) +/// +/// Result: +/// ["foo", "bar", "bax"] +/// + public Split Split ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Split (arguments ); + } + internal Split split ( Object exprA ) + { + return Split ( exprA ); + } +/// +/// Splits a string into substrings. Splits on whitespace when called +/// with no arguments. When called with a separator, splits on that +/// separator. When called with a separator and a maximum number of +/// splits, splits on that separator at most max_splits times. (Can be +/// called with null as the separator if you want to split on whitespace +/// while still specifying max_splits.) +/// +/// Example: Split on whitespace. +/// r.expr("foo bar bax").split().run(conn, callback) +/// +/// Result: +/// ["foo", "bar", "bax"] +/// + public Split Split ( Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Split (arguments ); + } + internal Split split ( Object exprA, Object exprB ) + { + return Split ( exprA, exprB ); + } +/// +/// Takes a grouped stream or grouped data and turns it into an array of +/// objects representing the groups. Any commands chained after ungroup +/// will operate on this array, rather than operating on each group +/// individually. This is useful if you want to e.g. order the groups by +/// the value of their reduction. +/// +/// Example: What is the maximum number of points scored by each +/// player, with the highest scorers first? +/// r.table('games') +/// .group('player').max('points')('points') +/// .ungroup().orderBy(r.desc('reduction')).run(conn, callback) +/// + public Ungroup Ungroup ( ) + { + Arguments arguments = new Arguments(this); + return new Ungroup (arguments ); + } + internal Ungroup ungroup ( ) + { + return Ungroup ( ); + } +/// +/// Turn a query into a changefeed, an infinite stream of objects representing changes to the query's results as they occur. A changefeed may return changes to a table or an individual document (a "point" changefeed). Commands such as filter or map may be used before the changes command to transform or filter the output, and many commands that operate on sequences can be chained after changes. +/// +/// Example: Subscribe to the changes on a table. +/// Start monitoring the changefeed in one client: +/// r.table('games').changes().run(conn, function(err, cursor) { +/// cursor.each(console.log); +/// }); +/// +/// As these queries are performed in a second client, the first +/// client would receive and print the following objects: +/// > r.table('games').insert({id: 1}).run(conn, callback); +/// {old_val: null, new_val: {id: 1}} +/// +/// > r.table('games').get(1).update({player1: 'Bob'}).run(conn, callback); +/// {old_val: {id: 1}, new_val: {id: 1, player1: 'Bob'}} +/// +/// > r.table('games').get(1).replace({id: 1, player1: 'Bob', player2: 'Alice'}).run(conn, callback); +/// {old_val: {id: 1, player1: 'Bob'}, +/// new_val: {id: 1, player1: 'Bob', player2: 'Alice'}} +/// +/// > r.table('games').get(1).delete().run(conn, callback) +/// {old_val: {id: 1, player1: 'Bob', player2: 'Alice'}, new_val: null} +/// +/// > r.tableDrop('games').run(conn, callback); +/// ReqlRuntimeError: Changefeed aborted (table unavailable) +/// + public Changes Changes ( ) + { + Arguments arguments = new Arguments(this); + return new Changes (arguments ); + } + internal Changes changes ( ) + { + return Changes ( ); + } +/// +/// Convert a ReQL geometry object to a GeoJSON object. +/// +/// Example: Convert a ReQL geometry object to a GeoJSON object. +/// r.table('geo').get('sfo')('location').toGeojson.run(conn, callback); +/// // result passed to callback +/// { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// } +/// + public ToGeojson ToGeojson ( ) + { + Arguments arguments = new Arguments(this); + return new ToGeojson (arguments ); + } + internal ToGeojson toGeojson ( ) + { + return ToGeojson ( ); + } +/// +/// Compute the distance between a point and another geometry object. At least one of the geometry objects specified must be a point. +/// +/// Example: Compute the distance between two points on the Earth in kilometers. +/// var point1 = r.point(-122.423246,37.779388); +/// var point2 = r.point(-117.220406,32.719464); +/// r.distance(point1, point2, {unit: 'km'}).run(conn, callback); +/// // result returned to callback +/// 734.1252496021841 +/// + public Distance Distance ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Distance (arguments ); + } + internal Distance distance ( Object exprA ) + { + return Distance ( exprA ); + } +/// +/// Tests whether two geometry objects intersect with one another. When applied to a sequence of geometry objects, intersects acts as a filter, returning a sequence of objects from the sequence that intersect with the argument. +/// +/// Example: Is point2 within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).intersects(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Intersects Intersects ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Intersects (arguments ); + } + internal Intersects intersects ( Object exprA ) + { + return Intersects ( exprA ); + } +/// +/// Tests whether a geometry object is completely contained within another. When applied to a sequence of geometry objects, includes acts as a filter, returning a sequence of objects from the sequence that include the argument. +/// +/// Example: Is point2 included within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).includes(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Includes Includes ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new Includes (arguments ); + } + internal Includes includes ( Object exprA ) + { + return Includes ( exprA ); + } +/// +/// Convert a Line object into a Polygon object. If the last point does not specify the same coordinates as the first point, polygon will close the polygon by connecting them. +/// +/// Example: Create a line object and then convert it to a polygon. +/// r.table('geo').insert({ +/// id: 201, +/// rectangle: r.line( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// +/// r.table('geo').get(201).update({ +/// rectangle: r.row('rectangle').fill() +/// }, {nonAtomic: true}).run(conn, callback); +/// + public Fill Fill ( ) + { + Arguments arguments = new Arguments(this); + return new Fill (arguments ); + } + internal Fill fill ( ) + { + return Fill ( ); + } +/// +/// Use polygon2 to "punch out" a hole in polygon1. polygon2 must be completely contained within polygon1 and must have no holes itself (it must not be the output of polygonSub itself). +/// +/// Example: Define a polygon with a hole punched in it. +/// var outerPolygon = r.polygon( +/// [-122.4,37.7], +/// [-122.4,37.3], +/// [-121.8,37.3], +/// [-121.8,37.7] +/// ); +/// var innerPolygon = r.polygon( +/// [-122.3,37.4], +/// [-122.3,37.6], +/// [-122.0,37.6], +/// [-122.0,37.4] +/// ); +/// outerPolygon.polygonSub(innerPolygon).run(conn, callback); +/// + public PolygonSub PolygonSub ( Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(exprA); + return new PolygonSub (arguments ); + } + internal PolygonSub polygonSub ( Object exprA ) + { + return PolygonSub ( exprA ); + } +/// +/// Return an array containing all of an object's values. values() guarantees the values will come out in the same order as keys. +/// +/// Example: Get all of the values from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).values().run(conn, callback); +/// // Result passed to callback +/// [ 1, "fred@example.com", "fred" ] +/// + public Values Values ( ) + { + Arguments arguments = new Arguments(this); + return new Values (arguments ); + } + internal Values values ( ) + { + return Values ( ); + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs.meta new file mode 100644 index 000000000..db634066c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlExpr.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7f5f8e4bcd4fed44982e0ce547a45d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs new file mode 100644 index 000000000..8321b164e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ReqlObject : ReqlExpr { + + + + +/// +/// Creates an object from a list of key-value pairs, where the keys must +/// be strings. r.object(A, B, C, D) is equivalent to +/// r.expr([[A, B], [C, D]]).coerce_to('OBJECT'). +/// +/// Example: Create a simple object. +/// r.object('id', 5, 'data', ['foo', 'bar']).run(conn, callback) +/// +/// Result: +/// {data: ["foo", "bar"], id: 5} +/// + public ReqlObject (object arg) : this(new Arguments(arg), null) { + } +/// +/// Creates an object from a list of key-value pairs, where the keys must +/// be strings. r.object(A, B, C, D) is equivalent to +/// r.expr([[A, B], [C, D]]).coerce_to('OBJECT'). +/// +/// Example: Create a simple object. +/// r.object('id', 5, 'data', ['foo', 'bar']).run(conn, callback) +/// +/// Result: +/// {data: ["foo", "bar"], id: 5} +/// + public ReqlObject (Arguments args) : this(args, null) { + } +/// +/// Creates an object from a list of key-value pairs, where the keys must +/// be strings. r.object(A, B, C, D) is equivalent to +/// r.expr([[A, B], [C, D]]).coerce_to('OBJECT'). +/// +/// Example: Create a simple object. +/// r.object('id', 5, 'data', ['foo', 'bar']).run(conn, callback) +/// +/// Result: +/// {data: ["foo", "bar"], id: 5} +/// + public ReqlObject (Arguments args, OptArgs optargs) + : base(TermType.OBJECT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs.meta new file mode 100644 index 000000000..a38061fb7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ReqlObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da058ad79684d854abb299535cf753aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs new file mode 100644 index 000000000..ecfe436b1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Round : ReqlExpr { + + + + +/// +/// Rounds the given value to the nearest whole integer. +/// +/// Example: Round 12.345 to the nearest integer. +/// r.round(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The round command can also be chained after an expression. + public Round (object arg) : this(new Arguments(arg), null) { + } +/// +/// Rounds the given value to the nearest whole integer. +/// +/// Example: Round 12.345 to the nearest integer. +/// r.round(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The round command can also be chained after an expression. + public Round (Arguments args) : this(args, null) { + } +/// +/// Rounds the given value to the nearest whole integer. +/// +/// Example: Round 12.345 to the nearest integer. +/// r.round(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The round command can also be chained after an expression. + public Round (Arguments args, OptArgs optargs) + : base(TermType.ROUND, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs.meta new file mode 100644 index 000000000..019b03d98 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Round.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 773834debc24f1147a7a6c73d0d00505 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs new file mode 100644 index 000000000..6613bf9dd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Sample : ReqlExpr { + + + + +/// +/// Select a given number of elements from a sequence with uniform random distribution. Selection is done without replacement. +/// +/// Example: Select 3 random heroes. +/// r.table('marvel').sample(3).run(conn, callback) +/// + public Sample (object arg) : this(new Arguments(arg), null) { + } +/// +/// Select a given number of elements from a sequence with uniform random distribution. Selection is done without replacement. +/// +/// Example: Select 3 random heroes. +/// r.table('marvel').sample(3).run(conn, callback) +/// + public Sample (Arguments args) : this(args, null) { + } +/// +/// Select a given number of elements from a sequence with uniform random distribution. Selection is done without replacement. +/// +/// Example: Select 3 random heroes. +/// r.table('marvel').sample(3).run(conn, callback) +/// + public Sample (Arguments args, OptArgs optargs) + : base(TermType.SAMPLE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs.meta new file mode 100644 index 000000000..03554f382 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sample.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9682308924fc125438128c05420304c3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs new file mode 100644 index 000000000..3ba690dbd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Saturday : ReqlExpr { + + + + + public Saturday (object arg) : this(new Arguments(arg), null) { + } + public Saturday (Arguments args) : this(args, null) { + } + public Saturday (Arguments args, OptArgs optargs) + : base(TermType.SATURDAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs.meta new file mode 100644 index 000000000..5aead4d5d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Saturday.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39a0b01f4af4ae84ab278aed02954d59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs new file mode 100644 index 000000000..86918548b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Seconds : ReqlExpr { + + + + +/// +/// Return the seconds in a time object as a number between 0 and 59.999 (double precision). +/// +/// Example: Return the post submitted during the first 30 seconds of every minute. +/// r.table("posts").filter(function(post) { +/// return post("date").seconds().lt(30) +/// }) +/// + public Seconds (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the seconds in a time object as a number between 0 and 59.999 (double precision). +/// +/// Example: Return the post submitted during the first 30 seconds of every minute. +/// r.table("posts").filter(function(post) { +/// return post("date").seconds().lt(30) +/// }) +/// + public Seconds (Arguments args) : this(args, null) { + } +/// +/// Return the seconds in a time object as a number between 0 and 59.999 (double precision). +/// +/// Example: Return the post submitted during the first 30 seconds of every minute. +/// r.table("posts").filter(function(post) { +/// return post("date").seconds().lt(30) +/// }) +/// + public Seconds (Arguments args, OptArgs optargs) + : base(TermType.SECONDS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs.meta new file mode 100644 index 000000000..67ba40a1d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Seconds.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e85a5608ea58a504c96c5951b2ca3ddf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs new file mode 100644 index 000000000..31e04fb83 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class September : ReqlExpr { + + + + + public September (object arg) : this(new Arguments(arg), null) { + } + public September (Arguments args) : this(args, null) { + } + public September (Arguments args, OptArgs optargs) + : base(TermType.SEPTEMBER, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs.meta new file mode 100644 index 000000000..099f24017 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/September.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3fba4ebb22068654fac418d69d09c13a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs new file mode 100644 index 000000000..ae6ed5d2f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class SetDifference : ReqlExpr { + + + + +/// +/// Remove the elements of one array from another and return them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has, excluding a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setDifference(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetDifference (object arg) : this(new Arguments(arg), null) { + } +/// +/// Remove the elements of one array from another and return them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has, excluding a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setDifference(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetDifference (Arguments args) : this(args, null) { + } +/// +/// Remove the elements of one array from another and return them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has, excluding a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setDifference(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetDifference (Arguments args, OptArgs optargs) + : base(TermType.SET_DIFFERENCE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs.meta new file mode 100644 index 000000000..56162c7ab --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetDifference.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 686eb734e7b8dd04093a736e73473e7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs new file mode 100644 index 000000000..826596c3b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class SetInsert : ReqlExpr { + + + + +/// +/// Add a value to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').setInsert('newBoots').run(conn, callback) +/// + public SetInsert (object arg) : this(new Arguments(arg), null) { + } +/// +/// Add a value to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').setInsert('newBoots').run(conn, callback) +/// + public SetInsert (Arguments args) : this(args, null) { + } +/// +/// Add a value to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots. +/// r.table('marvel').get('IronMan')('equipment').setInsert('newBoots').run(conn, callback) +/// + public SetInsert (Arguments args, OptArgs optargs) + : base(TermType.SET_INSERT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs.meta new file mode 100644 index 000000000..dad725ea4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetInsert.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe0b14d2dd2056345bee0aa492896433 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs new file mode 100644 index 000000000..d06af3dd8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class SetIntersection : ReqlExpr { + + + + +/// +/// Intersect two arrays returning values that occur in both of them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has from a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setIntersection(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetIntersection (object arg) : this(new Arguments(arg), null) { + } +/// +/// Intersect two arrays returning values that occur in both of them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has from a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setIntersection(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetIntersection (Arguments args) : this(args, null) { + } +/// +/// Intersect two arrays returning values that occur in both of them as a set (an array with +/// distinct values). +/// +/// Example: Check which pieces of equipment Iron Man has from a fixed list. +/// r.table('marvel').get('IronMan')('equipment').setIntersection(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetIntersection (Arguments args, OptArgs optargs) + : base(TermType.SET_INTERSECTION, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs.meta new file mode 100644 index 000000000..8c7e4f497 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetIntersection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 96a4477171fd63444ac69ccf0c320302 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs new file mode 100644 index 000000000..32ffac5bb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class SetUnion : ReqlExpr { + + + + +/// +/// Add a several values to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots and an arc reactor. +/// r.table('marvel').get('IronMan')('equipment').setUnion(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetUnion (object arg) : this(new Arguments(arg), null) { + } +/// +/// Add a several values to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots and an arc reactor. +/// r.table('marvel').get('IronMan')('equipment').setUnion(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetUnion (Arguments args) : this(args, null) { + } +/// +/// Add a several values to an array and return it as a set (an array with distinct values). +/// +/// Example: Retrieve Iron Man's equipment list with the addition of some new boots and an arc reactor. +/// r.table('marvel').get('IronMan')('equipment').setUnion(['newBoots', 'arc_reactor']).run(conn, callback) +/// + public SetUnion (Arguments args, OptArgs optargs) + : base(TermType.SET_UNION, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs.meta new file mode 100644 index 000000000..30a09d60b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SetUnion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d64d7a9249eb11540a4437cd112d2942 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs new file mode 100644 index 000000000..3b5016b47 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Skip : ReqlExpr { + + + + +/// +/// Skip a number of elements from the head of the sequence. +/// +/// Example: Here in conjunction with orderBy we choose to ignore the most successful heroes. +/// r.table('marvel').orderBy('successMetric').skip(10).run(conn, callback) +/// + public Skip (object arg) : this(new Arguments(arg), null) { + } +/// +/// Skip a number of elements from the head of the sequence. +/// +/// Example: Here in conjunction with orderBy we choose to ignore the most successful heroes. +/// r.table('marvel').orderBy('successMetric').skip(10).run(conn, callback) +/// + public Skip (Arguments args) : this(args, null) { + } +/// +/// Skip a number of elements from the head of the sequence. +/// +/// Example: Here in conjunction with orderBy we choose to ignore the most successful heroes. +/// r.table('marvel').orderBy('successMetric').skip(10).run(conn, callback) +/// + public Skip (Arguments args, OptArgs optargs) + : base(TermType.SKIP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs.meta new file mode 100644 index 000000000..0fb35abd6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Skip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3a6010e213070fc48bcec0afb7362502 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs new file mode 100644 index 000000000..cc7efb662 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Slice : ReqlExpr { + + + + +/// +/// Return the elements of a sequence within the specified range. +/// +/// Example: Return the fourth, fifth and sixth youngest players. (The youngest player is at index 0, so those are elements 3-5.) +/// r.table('players').orderBy({index: 'age'}).slice(3,6).run(conn, callback); +/// + public Slice (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the elements of a sequence within the specified range. +/// +/// Example: Return the fourth, fifth and sixth youngest players. (The youngest player is at index 0, so those are elements 3-5.) +/// r.table('players').orderBy({index: 'age'}).slice(3,6).run(conn, callback); +/// + public Slice (Arguments args) : this(args, null) { + } +/// +/// Return the elements of a sequence within the specified range. +/// +/// Example: Return the fourth, fifth and sixth youngest players. (The youngest player is at index 0, so those are elements 3-5.) +/// r.table('players').orderBy({index: 'age'}).slice(3,6).run(conn, callback); +/// + public Slice (Arguments args, OptArgs optargs) + : base(TermType.SLICE, args, optargs) { + } + + + + + + + +/// +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public Slice this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Slice (this.Args, newOptArgs); + } + } + +/// +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public Slice this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Slice (this.Args, newOptArgs); + } + } + +/// +/// "left_bound": "E_BOUND", +/// "right_bound": "E_BOUND" +/// + public Slice OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Slice (this.Args, newOptArgs); + } + internal Slice optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs.meta new file mode 100644 index 000000000..77d3a2e7f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Slice.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd843f0298468f54fbe8aa839d512008 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs new file mode 100644 index 000000000..fd5c78a29 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class SpliceAt : ReqlExpr { + + + + +/// +/// Insert several values in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk and Thor decide to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).spliceAt(1, ["Hulk", "Thor"]).run(conn, callback) +/// + public SpliceAt (object arg) : this(new Arguments(arg), null) { + } +/// +/// Insert several values in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk and Thor decide to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).spliceAt(1, ["Hulk", "Thor"]).run(conn, callback) +/// + public SpliceAt (Arguments args) : this(args, null) { + } +/// +/// Insert several values in to an array at a given index. Returns the modified array. +/// +/// Example: Hulk and Thor decide to join the avengers. +/// r.expr(["Iron Man", "Spider-Man"]).spliceAt(1, ["Hulk", "Thor"]).run(conn, callback) +/// + public SpliceAt (Arguments args, OptArgs optargs) + : base(TermType.SPLICE_AT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs.meta new file mode 100644 index 000000000..853076748 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/SpliceAt.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a8a0ede67bf3db14f81d1fd20fd1012d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs new file mode 100644 index 000000000..b14e36b64 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Split : ReqlExpr { + + + + +/// +/// Splits a string into substrings. Splits on whitespace when called +/// with no arguments. When called with a separator, splits on that +/// separator. When called with a separator and a maximum number of +/// splits, splits on that separator at most max_splits times. (Can be +/// called with null as the separator if you want to split on whitespace +/// while still specifying max_splits.) +/// +/// Example: Split on whitespace. +/// r.expr("foo bar bax").split().run(conn, callback) +/// +/// Result: +/// ["foo", "bar", "bax"] +/// + public Split (object arg) : this(new Arguments(arg), null) { + } +/// +/// Splits a string into substrings. Splits on whitespace when called +/// with no arguments. When called with a separator, splits on that +/// separator. When called with a separator and a maximum number of +/// splits, splits on that separator at most max_splits times. (Can be +/// called with null as the separator if you want to split on whitespace +/// while still specifying max_splits.) +/// +/// Example: Split on whitespace. +/// r.expr("foo bar bax").split().run(conn, callback) +/// +/// Result: +/// ["foo", "bar", "bax"] +/// + public Split (Arguments args) : this(args, null) { + } +/// +/// Splits a string into substrings. Splits on whitespace when called +/// with no arguments. When called with a separator, splits on that +/// separator. When called with a separator and a maximum number of +/// splits, splits on that separator at most max_splits times. (Can be +/// called with null as the separator if you want to split on whitespace +/// while still specifying max_splits.) +/// +/// Example: Split on whitespace. +/// r.expr("foo bar bax").split().run(conn, callback) +/// +/// Result: +/// ["foo", "bar", "bax"] +/// + public Split (Arguments args, OptArgs optargs) + : base(TermType.SPLIT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs.meta new file mode 100644 index 000000000..eea6987d9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Split.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3515ba7cbb4efb429fe0f210a96eb49 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs new file mode 100644 index 000000000..59f94a89d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Status : ReqlExpr { + + + + +/// +/// Return the status of a table. +/// +/// Example: Get a table's status. +/// > r.table('superheroes').status().run(conn, callback); +/// + public Status (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the status of a table. +/// +/// Example: Get a table's status. +/// > r.table('superheroes').status().run(conn, callback); +/// + public Status (Arguments args) : this(args, null) { + } +/// +/// Return the status of a table. +/// +/// Example: Get a table's status. +/// > r.table('superheroes').status().run(conn, callback); +/// + public Status (Arguments args, OptArgs optargs) + : base(TermType.STATUS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs.meta new file mode 100644 index 000000000..1fdadc5db --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Status.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0716b013d15071041a0bbc3da441552b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs new file mode 100644 index 000000000..8e627bdeb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Sub : ReqlExpr { + + + + +/// +/// Subtract two numbers. +/// +/// Example: It's as easy as 2 - 2 = 0. +/// r.expr(2).sub(2).run(conn, callback) +/// + public Sub (object arg) : this(new Arguments(arg), null) { + } +/// +/// Subtract two numbers. +/// +/// Example: It's as easy as 2 - 2 = 0. +/// r.expr(2).sub(2).run(conn, callback) +/// + public Sub (Arguments args) : this(args, null) { + } +/// +/// Subtract two numbers. +/// +/// Example: It's as easy as 2 - 2 = 0. +/// r.expr(2).sub(2).run(conn, callback) +/// + public Sub (Arguments args, OptArgs optargs) + : base(TermType.SUB, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs.meta new file mode 100644 index 000000000..2964ae5cb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sub.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 28f6e5eaf91085a4fa474f45cb7adb4b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs new file mode 100644 index 000000000..71b47bc3e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Sum : ReqlExpr { + + + + +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum (object arg) : this(new Arguments(arg), null) { + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum (Arguments args) : this(args, null) { + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum (Arguments args, OptArgs optargs) + : base(TermType.SUM, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs.meta new file mode 100644 index 000000000..5b6a5cd7f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sum.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29ffd15633bf0f842b0a2028d15d067a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs new file mode 100644 index 000000000..2a0b575a0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Sunday : ReqlExpr { + + + + + public Sunday (object arg) : this(new Arguments(arg), null) { + } + public Sunday (Arguments args) : this(args, null) { + } + public Sunday (Arguments args, OptArgs optargs) + : base(TermType.SUNDAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs.meta new file mode 100644 index 000000000..2a9e0aa8b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sunday.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf8c03e110a6b8b4dab397dce8aa3703 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs new file mode 100644 index 000000000..8f839ee7b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Sync : ReqlExpr { + + + + +/// +/// sync ensures that writes on a given table are written to permanent storage. Queries +/// that specify soft durability ({durability: 'soft'}) do not give such guarantees, so +/// sync can be used to ensure the state of these queries. A call to sync does not return +/// until all previous writes to the table are persisted. +/// +/// Example: After having updated multiple heroes with soft durability, we now want to wait +/// until these changes are persisted. +/// r.table('marvel').sync().run(conn, callback) +/// + public Sync (object arg) : this(new Arguments(arg), null) { + } +/// +/// sync ensures that writes on a given table are written to permanent storage. Queries +/// that specify soft durability ({durability: 'soft'}) do not give such guarantees, so +/// sync can be used to ensure the state of these queries. A call to sync does not return +/// until all previous writes to the table are persisted. +/// +/// Example: After having updated multiple heroes with soft durability, we now want to wait +/// until these changes are persisted. +/// r.table('marvel').sync().run(conn, callback) +/// + public Sync (Arguments args) : this(args, null) { + } +/// +/// sync ensures that writes on a given table are written to permanent storage. Queries +/// that specify soft durability ({durability: 'soft'}) do not give such guarantees, so +/// sync can be used to ensure the state of these queries. A call to sync does not return +/// until all previous writes to the table are persisted. +/// +/// Example: After having updated multiple heroes with soft durability, we now want to wait +/// until these changes are persisted. +/// r.table('marvel').sync().run(conn, callback) +/// + public Sync (Arguments args, OptArgs optargs) + : base(TermType.SYNC, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs.meta new file mode 100644 index 000000000..85c4f1d89 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Sync.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4672caa1c687a3c4db69017380219f1d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs new file mode 100644 index 000000000..441c54419 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs @@ -0,0 +1,567 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Table : ReqlExpr { + + + + +/// +/// Return all documents in a table. Other commands may be chained after table to return a subset of documents (such as get and filter) or perform further processing. +/// +/// Example: Return all documents in the table 'marvel' of the default database. +/// r.table('marvel').run(conn, callback) +/// + public Table (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return all documents in a table. Other commands may be chained after table to return a subset of documents (such as get and filter) or perform further processing. +/// +/// Example: Return all documents in the table 'marvel' of the default database. +/// r.table('marvel').run(conn, callback) +/// + public Table (Arguments args) : this(args, null) { + } +/// +/// Return all documents in a table. Other commands may be chained after table to return a subset of documents (such as get and filter) or perform further processing. +/// +/// Example: Return all documents in the table 'marvel' of the default database. +/// r.table('marvel').run(conn, callback) +/// + public Table (Arguments args, OptArgs optargs) + : base(TermType.TABLE, args, optargs) { + } + + + + + + + +/// +/// "read_mode": "E_READ_MODE", +/// "identifier_format": "E_IDENTIFIER_FORMAT" +/// + public Table this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Table (this.Args, newOptArgs); + } + } + +/// +/// "read_mode": "E_READ_MODE", +/// "identifier_format": "E_IDENTIFIER_FORMAT" +/// + public Table this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Table (this.Args, newOptArgs); + } + } + +/// +/// "read_mode": "E_READ_MODE", +/// "identifier_format": "E_IDENTIFIER_FORMAT" +/// + public Table OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Table (this.Args, newOptArgs); + } + internal Table optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + +/// +/// Get a document by primary key. +/// +/// Example: Find a document by UUID. +/// r.table('posts').get('a9849eef-7176-4411-935b-79a6e3c56a74').run(conn, callback); +/// + public Get Get ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new Get (arguments ); + } + internal Get get ( Object expr ) + { + return Get ( expr ); + } +/// +/// Get all documents where the given value matches the value of the requested index. +/// +/// Example: Secondary index keys are not guaranteed to be unique so we cannot query via get when using a secondary index. +/// r.table('marvel').getAll('man_of_steel', {index:'code_name'}).run(conn, callback) +/// + public GetAll GetAll ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new GetAll (arguments ); + } +/// +/// Get all documents where the given value matches the value of the requested index. +/// +/// Example: Secondary index keys are not guaranteed to be unique so we cannot query via get when using a secondary index. +/// r.table('marvel').getAll('man_of_steel', {index:'code_name'}).run(conn, callback) +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public GetAll GetAll ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new GetAll (arguments); + } +/// +/// Get all documents where the given value matches the value of the requested index. +/// +/// Example: Secondary index keys are not guaranteed to be unique so we cannot query via get when using a secondary index. +/// r.table('marvel').getAll('man_of_steel', {index:'code_name'}).run(conn, callback) +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public GetAll GetAll ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new GetAll (arguments); + } + internal GetAll getAll ( params object[] exprs ) + { + return GetAll ( exprs ); + } +/// +/// Insert documents into a table. Accepts a single document or an array of +/// documents. +/// +/// Example: Insert a document into the table posts. +/// r.table("posts").insert({ +/// id: 1, +/// title: "Lorem ipsum", +/// content: "Dolor sit amet" +/// }).run(conn, callback) +/// + public Insert Insert ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new Insert (arguments ); + } + internal Insert insert ( Object expr ) + { + return Insert ( expr ); + } +/// +/// Query (read and/or update) the configurations for individual tables or databases. +/// +/// Example: Get the configuration for the users table. +/// > r.table('users').config().run(conn, callback); +/// + public Config Config ( ) + { + Arguments arguments = new Arguments(this); + return new Config (arguments ); + } + internal Config config ( ) + { + return Config ( ); + } +/// +/// Return the status of a table. +/// +/// Example: Get a table's status. +/// > r.table('superheroes').status().run(conn, callback); +/// + public Status Status ( ) + { + Arguments arguments = new Arguments(this); + return new Status (arguments ); + } + internal Status status ( ) + { + return Status ( ); + } +/// +/// Wait for a table or all the tables in a database to be ready. A table may be temporarily unavailable after creation, rebalancing or reconfiguring. The wait command blocks until the given table (or database) is fully up to date. +/// +/// Example: Wait on a table to be ready. +/// > r.table('superheroes').wait().run(conn, callback); +/// // Result passed to callback +/// { "ready": 1 } +/// + public Wait Wait_ ( ) + { + Arguments arguments = new Arguments(this); + return new Wait (arguments ); + } + internal Wait wait_ ( ) + { + return Wait_ ( ); + } +/// +/// Reconfigure a table's sharding and replication. +/// +/// Example: Reconfigure a table. +/// > r.table('superheroes').reconfigure({shards: 2, replicas: 1}).run(conn, callback); +/// + public Reconfigure Reconfigure ( ) + { + Arguments arguments = new Arguments(this); + return new Reconfigure (arguments ); + } + internal Reconfigure reconfigure ( ) + { + return Reconfigure ( ); + } +/// +/// Rebalances the shards of a table. When called on a database, all the tables in that database will be rebalanced. +/// +/// Example: Rebalance a table. +/// > r.table('superheroes').rebalance().run(conn, callback); +/// + public Rebalance Rebalance ( ) + { + Arguments arguments = new Arguments(this); + return new Rebalance (arguments ); + } + internal Rebalance rebalance ( ) + { + return Rebalance ( ); + } +/// +/// sync ensures that writes on a given table are written to permanent storage. Queries +/// that specify soft durability ({durability: 'soft'}) do not give such guarantees, so +/// sync can be used to ensure the state of these queries. A call to sync does not return +/// until all previous writes to the table are persisted. +/// +/// Example: After having updated multiple heroes with soft durability, we now want to wait +/// until these changes are persisted. +/// r.table('marvel').sync().run(conn, callback) +/// + public Sync Sync ( ) + { + Arguments arguments = new Arguments(this); + return new Sync (arguments ); + } + internal Sync sync ( ) + { + return Sync ( ); + } +/// +/// Grant or deny access permissions for a user account, globally or on a per-database or per-table basis. +/// +/// Example: Grant the chatapp user account read and write permissions on the users database. +/// r.db('users').grant('chatapp', {read: true, write: true}).run(conn, callback); +/// +/// // Result passed to callback +/// { +/// "granted": 1, +/// "permissions_changes": [ +/// { +/// "new_val": { "read": true, "write": true }, +/// "old_val": { null } +/// } +/// ] +/// + public Grant Grant ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Grant (arguments ); + } + internal Grant grant ( Object expr, Object exprA ) + { + return Grant ( expr, exprA ); + } +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate IndexCreate ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new IndexCreate (arguments ); + } + internal IndexCreate indexCreate ( Object expr ) + { + return IndexCreate ( expr ); + } +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate IndexCreate ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new IndexCreate (arguments ); + } + internal IndexCreate indexCreate ( Object expr, Javascript js ) + { + return IndexCreate ( expr, js ); + } +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate IndexCreate ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new IndexCreate (arguments ); + } + internal IndexCreate indexCreate ( Object expr, Object exprA ) + { + return IndexCreate ( expr, exprA ); + } +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate IndexCreate ( Object expr, ReqlFunction0 func0 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func0); + return new IndexCreate (arguments ); + } + internal IndexCreate indexCreate ( Object expr, ReqlFunction0 func0 ) + { + return IndexCreate ( expr, func0 ); + } +/// +/// Create a new secondary index on a table. Secondary indexes improve the speed of many read queries at the slight cost of increased storage space and decreased write performance. For more information about secondary indexes, read the article "Using secondary indexes in RethinkDB." +/// +/// Example: Create a simple index based on the field postId. +/// r.table('comments').indexCreate('postId').run(conn, callback) +/// + public IndexCreate IndexCreate ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new IndexCreate (arguments ); + } + internal IndexCreate indexCreate ( Object expr, ReqlFunction1 func1 ) + { + return IndexCreate ( expr, func1 ); + } +/// +/// Delete a previously created secondary index of this table. +/// +/// Example: Drop a secondary index named 'code_name'. +/// r.table('dc').indexDrop('code_name').run(conn, callback) +/// + public IndexDrop IndexDrop ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new IndexDrop (arguments ); + } + internal IndexDrop indexDrop ( Object expr ) + { + return IndexDrop ( expr ); + } +/// +/// List all the secondary indexes of this table. +/// +/// Example: List the available secondary indexes for this table. +/// r.table('marvel').indexList().run(conn, callback) +/// + public IndexList IndexList ( ) + { + Arguments arguments = new Arguments(this); + return new IndexList (arguments ); + } + internal IndexList indexList ( ) + { + return IndexList ( ); + } +/// +/// Get the status of the specified indexes on this table, or the status +/// of all indexes on this table if no indexes are specified. +/// +/// Example: Get the status of all the indexes on test: +/// r.table('test').indexStatus().run(conn, callback) +/// + public IndexStatus IndexStatus ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new IndexStatus (arguments ); + } +/// +/// Get the status of the specified indexes on this table, or the status +/// of all indexes on this table if no indexes are specified. +/// +/// Example: Get the status of all the indexes on test: +/// r.table('test').indexStatus().run(conn, callback) +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public IndexStatus IndexStatus ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new IndexStatus (arguments); + } + internal IndexStatus indexStatus ( params object[] exprs ) + { + return IndexStatus ( exprs ); + } +/// +/// Wait for the specified indexes on this table to be ready, or for all +/// indexes on this table to be ready if no indexes are specified. +/// +/// Example: Wait for all indexes on the table test to be ready: +/// r.table('test').indexWait().run(conn, callback) +/// + public IndexWait IndexWait ( params object[] exprs ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAddAll(exprs); + return new IndexWait (arguments ); + } +/// +/// Wait for the specified indexes on this table to be ready, or for all +/// indexes on this table to be ready if no indexes are specified. +/// +/// Example: Wait for all indexes on the table test to be ready: +/// r.table('test').indexWait().run(conn, callback) +/// + /// Same as calling params object[] overload, except the collection is applied as object[] params. + public IndexWait IndexWait ( ICollection args ) + { + var arguments = new Arguments(this); + arguments.CoerceAndAddAll(args); + return new IndexWait (arguments); + } + internal IndexWait indexWait ( params object[] exprs ) + { + return IndexWait ( exprs ); + } +/// +/// Rename an existing secondary index on a table. If the optional argument overwrite is specified as true, a previously existing index with the new name will be deleted and the index will be renamed. If overwrite is false (the default) an error will be raised if the new index name already exists. +/// +/// Example: Rename an index on the comments table. +/// r.table('comments').indexRename('postId', 'messageId').run(conn, callback) +/// + public IndexRename IndexRename ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new IndexRename (arguments ); + } + internal IndexRename indexRename ( Object expr, Object exprA ) + { + return IndexRename ( expr, exprA ); + } +/// +/// Get all documents where the given geometry object intersects the geometry object of the requested geospatial index. +/// +/// Example: Which of the locations in a list of parks intersect circle1? +/// var circle1 = r.circle([-117.220406,32.719464], 10, {unit: 'mi'}); +/// r.table('parks').getIntersecting(circle1, {index: 'area'}).run(conn, callback); +/// + public GetIntersecting GetIntersecting ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new GetIntersecting (arguments ); + } + internal GetIntersecting getIntersecting ( Object expr ) + { + return GetIntersecting ( expr ); + } +/// +/// Get all documents where the specified geospatial index is within a certain distance of the specified point (default 100 kilometers). +/// +/// Example: Return a list of enemy hideouts within 5000 meters of the secret base. +/// var secretBase = r.point(-122.422876,37.777128); +/// r.table('hideouts').getNearest(secretBase, +/// {index: 'location', maxDist: 5000} +/// ).run(conn, callback) +/// + public GetNearest GetNearest ( Object expr ) + { + Arguments arguments = new Arguments(this); + arguments.CoerceAndAdd(expr); + return new GetNearest (arguments ); + } + internal GetNearest getNearest ( Object expr ) + { + return GetNearest ( expr ); + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs.meta new file mode 100644 index 000000000..4e1b05e8b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Table.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5412c9519016c184785b6327c48602f0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs new file mode 100644 index 000000000..f6531c7dd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class TableCreate : ReqlExpr { + + + + +/// +/// Create a table. A RethinkDB table is a collection of JSON documents. +/// +/// Example: Create a table named 'dc_universe' with the default settings. +/// > r.db('heroes').tableCreate('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "old_val": null +/// } +/// ], +/// "tables_created": 1 +/// } +/// + public TableCreate (object arg) : this(new Arguments(arg), null) { + } +/// +/// Create a table. A RethinkDB table is a collection of JSON documents. +/// +/// Example: Create a table named 'dc_universe' with the default settings. +/// > r.db('heroes').tableCreate('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "old_val": null +/// } +/// ], +/// "tables_created": 1 +/// } +/// + public TableCreate (Arguments args) : this(args, null) { + } +/// +/// Create a table. A RethinkDB table is a collection of JSON documents. +/// +/// Example: Create a table named 'dc_universe' with the default settings. +/// > r.db('heroes').tableCreate('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "old_val": null +/// } +/// ], +/// "tables_created": 1 +/// } +/// + public TableCreate (Arguments args, OptArgs optargs) + : base(TermType.TABLE_CREATE, args, optargs) { + } + + + + + + + +/// +/// "primary_key": "T_STR", +/// "durability": "E_DURABILITY", +/// "shards": "T_NUM", +/// "replicas": [ +/// "T_NUM", +/// "T_OBJECT" +/// ], +/// "primary_replica_tag": "T_STR" +/// + public TableCreate this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new TableCreate (this.Args, newOptArgs); + } + } + +/// +/// "primary_key": "T_STR", +/// "durability": "E_DURABILITY", +/// "shards": "T_NUM", +/// "replicas": [ +/// "T_NUM", +/// "T_OBJECT" +/// ], +/// "primary_replica_tag": "T_STR" +/// + public TableCreate this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new TableCreate (this.Args, newOptArgs); + } + } + +/// +/// "primary_key": "T_STR", +/// "durability": "E_DURABILITY", +/// "shards": "T_NUM", +/// "replicas": [ +/// "T_NUM", +/// "T_OBJECT" +/// ], +/// "primary_replica_tag": "T_STR" +/// + public TableCreate OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new TableCreate (this.Args, newOptArgs); + } + internal TableCreate optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs.meta new file mode 100644 index 000000000..86aedece9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableCreate.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 548a5cade0754a94f86a31f5ea931155 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs new file mode 100644 index 000000000..76d489567 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class TableDrop : ReqlExpr { + + + + +/// +/// Drop a table from a database. The table and all its data will be deleted. +/// +/// Example: Drop a table named 'dc_universe'. +/// > r.db('test').tableDrop('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 1 +/// } +/// + public TableDrop (object arg) : this(new Arguments(arg), null) { + } +/// +/// Drop a table from a database. The table and all its data will be deleted. +/// +/// Example: Drop a table named 'dc_universe'. +/// > r.db('test').tableDrop('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 1 +/// } +/// + public TableDrop (Arguments args) : this(args, null) { + } +/// +/// Drop a table from a database. The table and all its data will be deleted. +/// +/// Example: Drop a table named 'dc_universe'. +/// > r.db('test').tableDrop('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 1 +/// } +/// + public TableDrop (Arguments args, OptArgs optargs) + : base(TermType.TABLE_DROP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs.meta new file mode 100644 index 000000000..e55d96cd1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableDrop.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c8cb37409c0ace549bec757fcfa12518 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs new file mode 100644 index 000000000..66f0cfb33 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class TableList : ReqlExpr { + + + + +/// +/// List all table names in a database. The result is a list of strings. +/// +/// Example: List all tables of the 'test' database. +/// r.db('test').tableList().run(conn, callback) +/// + public TableList (object arg) : this(new Arguments(arg), null) { + } +/// +/// List all table names in a database. The result is a list of strings. +/// +/// Example: List all tables of the 'test' database. +/// r.db('test').tableList().run(conn, callback) +/// + public TableList (Arguments args) : this(args, null) { + } +/// +/// List all table names in a database. The result is a list of strings. +/// +/// Example: List all tables of the 'test' database. +/// r.db('test').tableList().run(conn, callback) +/// + public TableList (Arguments args, OptArgs optargs) + : base(TermType.TABLE_LIST, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs.meta new file mode 100644 index 000000000..5e2876fed --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TableList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8418ddfd047871a4ab88e7b53775cb72 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs new file mode 100644 index 000000000..8702e1c45 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Thursday : ReqlExpr { + + + + + public Thursday (object arg) : this(new Arguments(arg), null) { + } + public Thursday (Arguments args) : this(args, null) { + } + public Thursday (Arguments args, OptArgs optargs) + : base(TermType.THURSDAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs.meta new file mode 100644 index 000000000..eb5919f2d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Thursday.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e5380b457618b648b28722467bb98ae +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs new file mode 100644 index 000000000..be62496fb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Time : ReqlExpr { + + + + +/// +/// Create a time object for a specific time. +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986 UTC. +/// r.table("user").get("John").update({birthdate: r.time(1986, 11, 3, 'Z')}).run(conn, callback) +/// + public Time (object arg) : this(new Arguments(arg), null) { + } +/// +/// Create a time object for a specific time. +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986 UTC. +/// r.table("user").get("John").update({birthdate: r.time(1986, 11, 3, 'Z')}).run(conn, callback) +/// + public Time (Arguments args) : this(args, null) { + } +/// +/// Create a time object for a specific time. +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986 UTC. +/// r.table("user").get("John").update({birthdate: r.time(1986, 11, 3, 'Z')}).run(conn, callback) +/// + public Time (Arguments args, OptArgs optargs) + : base(TermType.TIME, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs.meta new file mode 100644 index 000000000..e8287f87b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Time.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 57768b57977b55d49a8e6c2a60e95eac +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs new file mode 100644 index 000000000..ffff56178 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class TimeOfDay : ReqlExpr { + + + + +/// +/// Return the number of seconds elapsed since the beginning of the day stored in the time object. +/// +/// Example: Retrieve posts that were submitted before noon. +/// r.table("posts").filter( +/// r.row("date").timeOfDay().le(12*60*60) +/// ).run(conn, callback) +/// + public TimeOfDay (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the number of seconds elapsed since the beginning of the day stored in the time object. +/// +/// Example: Retrieve posts that were submitted before noon. +/// r.table("posts").filter( +/// r.row("date").timeOfDay().le(12*60*60) +/// ).run(conn, callback) +/// + public TimeOfDay (Arguments args) : this(args, null) { + } +/// +/// Return the number of seconds elapsed since the beginning of the day stored in the time object. +/// +/// Example: Retrieve posts that were submitted before noon. +/// r.table("posts").filter( +/// r.row("date").timeOfDay().le(12*60*60) +/// ).run(conn, callback) +/// + public TimeOfDay (Arguments args, OptArgs optargs) + : base(TermType.TIME_OF_DAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs.meta new file mode 100644 index 000000000..379905b7f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TimeOfDay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e7b715a95ba6f854387b003cb457cbab +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs new file mode 100644 index 000000000..1bd4191f4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Timezone : ReqlExpr { + + + + +/// +/// Return the timezone of the time object. +/// +/// Example: Return all the users in the "-07:00" timezone. +/// r.table("users").filter( function(user) { +/// return user("subscriptionDate").timezone().eq("-07:00") +/// }) +/// + public Timezone (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the timezone of the time object. +/// +/// Example: Return all the users in the "-07:00" timezone. +/// r.table("users").filter( function(user) { +/// return user("subscriptionDate").timezone().eq("-07:00") +/// }) +/// + public Timezone (Arguments args) : this(args, null) { + } +/// +/// Return the timezone of the time object. +/// +/// Example: Return all the users in the "-07:00" timezone. +/// r.table("users").filter( function(user) { +/// return user("subscriptionDate").timezone().eq("-07:00") +/// }) +/// + public Timezone (Arguments args, OptArgs optargs) + : base(TermType.TIMEZONE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs.meta new file mode 100644 index 000000000..452f199d4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Timezone.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5f8ebe7c27936f94f9bb08d02fbea429 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs new file mode 100644 index 000000000..5bdf270ab --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ToEpochTime : ReqlExpr { + + + + +/// +/// Convert a time object to its epoch time. +/// +/// Example: Return the current time in seconds since the Unix Epoch with millisecond-precision. +/// r.now().toEpochTime() +/// + public ToEpochTime (object arg) : this(new Arguments(arg), null) { + } +/// +/// Convert a time object to its epoch time. +/// +/// Example: Return the current time in seconds since the Unix Epoch with millisecond-precision. +/// r.now().toEpochTime() +/// + public ToEpochTime (Arguments args) : this(args, null) { + } +/// +/// Convert a time object to its epoch time. +/// +/// Example: Return the current time in seconds since the Unix Epoch with millisecond-precision. +/// r.now().toEpochTime() +/// + public ToEpochTime (Arguments args, OptArgs optargs) + : base(TermType.TO_EPOCH_TIME, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs.meta new file mode 100644 index 000000000..b992dc464 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToEpochTime.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbae5760f1ce5d3458465b71ed8a889a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs new file mode 100644 index 000000000..ef54c6425 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ToGeojson : ReqlExpr { + + + + +/// +/// Convert a ReQL geometry object to a GeoJSON object. +/// +/// Example: Convert a ReQL geometry object to a GeoJSON object. +/// r.table('geo').get('sfo')('location').toGeojson.run(conn, callback); +/// // result passed to callback +/// { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// } +/// + public ToGeojson (object arg) : this(new Arguments(arg), null) { + } +/// +/// Convert a ReQL geometry object to a GeoJSON object. +/// +/// Example: Convert a ReQL geometry object to a GeoJSON object. +/// r.table('geo').get('sfo')('location').toGeojson.run(conn, callback); +/// // result passed to callback +/// { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// } +/// + public ToGeojson (Arguments args) : this(args, null) { + } +/// +/// Convert a ReQL geometry object to a GeoJSON object. +/// +/// Example: Convert a ReQL geometry object to a GeoJSON object. +/// r.table('geo').get('sfo')('location').toGeojson.run(conn, callback); +/// // result passed to callback +/// { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// } +/// + public ToGeojson (Arguments args, OptArgs optargs) + : base(TermType.TO_GEOJSON, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs.meta new file mode 100644 index 000000000..208bdee60 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToGeojson.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: af5c881e8435efe4aa9c8eecc0f23d31 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs new file mode 100644 index 000000000..6e3eac7d1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ToIso8601 : ReqlExpr { + + + + +/// +/// Convert a time object to a string in ISO 8601 format. +/// +/// Example: Return the current ISO 8601 time. +/// r.now().toISO8601().run(conn, callback) +/// // Result passed to callback +/// "2015-04-20T18:37:52.690+00:00" +/// + public ToIso8601 (object arg) : this(new Arguments(arg), null) { + } +/// +/// Convert a time object to a string in ISO 8601 format. +/// +/// Example: Return the current ISO 8601 time. +/// r.now().toISO8601().run(conn, callback) +/// // Result passed to callback +/// "2015-04-20T18:37:52.690+00:00" +/// + public ToIso8601 (Arguments args) : this(args, null) { + } +/// +/// Convert a time object to a string in ISO 8601 format. +/// +/// Example: Return the current ISO 8601 time. +/// r.now().toISO8601().run(conn, callback) +/// // Result passed to callback +/// "2015-04-20T18:37:52.690+00:00" +/// + public ToIso8601 (Arguments args, OptArgs optargs) + : base(TermType.TO_ISO8601, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs.meta new file mode 100644 index 000000000..c0dbfd3c8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToIso8601.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c7c45644588e3d408e004d6a2e5984e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs new file mode 100644 index 000000000..78637171f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class ToJsonString : ReqlExpr { + + + + +/// +/// Convert a ReQL value or object to a JSON string. You may use either toJsonString or toJSON. +/// +/// Example: Get a ReQL document as a JSON string. +/// > r.table('hero').get(1).toJSON() +/// // result returned to callback +/// '{"id": 1, "name": "Batman", "city": "Gotham", "powers": ["martial arts", "cinematic entrances"]}' +/// + public ToJsonString (object arg) : this(new Arguments(arg), null) { + } +/// +/// Convert a ReQL value or object to a JSON string. You may use either toJsonString or toJSON. +/// +/// Example: Get a ReQL document as a JSON string. +/// > r.table('hero').get(1).toJSON() +/// // result returned to callback +/// '{"id": 1, "name": "Batman", "city": "Gotham", "powers": ["martial arts", "cinematic entrances"]}' +/// + public ToJsonString (Arguments args) : this(args, null) { + } +/// +/// Convert a ReQL value or object to a JSON string. You may use either toJsonString or toJSON. +/// +/// Example: Get a ReQL document as a JSON string. +/// > r.table('hero').get(1).toJSON() +/// // result returned to callback +/// '{"id": 1, "name": "Batman", "city": "Gotham", "powers": ["martial arts", "cinematic entrances"]}' +/// + public ToJsonString (Arguments args, OptArgs optargs) + : base(TermType.TO_JSON_STRING, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs.meta new file mode 100644 index 000000000..a26adc429 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/ToJsonString.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b39329fb66ceee04c89421d09b8957e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs new file mode 100644 index 000000000..83fa99bab --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Tuesday : ReqlExpr { + + + + + public Tuesday (object arg) : this(new Arguments(arg), null) { + } + public Tuesday (Arguments args) : this(args, null) { + } + public Tuesday (Arguments args, OptArgs optargs) + : base(TermType.TUESDAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs.meta new file mode 100644 index 000000000..930516a8b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Tuesday.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b1c541ac7dd95b84aa70f08028653572 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs new file mode 100644 index 000000000..cd0f69053 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class TypeOf : ReqlExpr { + + + + +/// +/// Gets the type of a ReQL query's return value. +/// +/// Example: Get the type of a string. +/// r.expr("foo").typeOf().run(conn, callback); +/// // Result passed to callback +/// "STRING" +/// + public TypeOf (object arg) : this(new Arguments(arg), null) { + } +/// +/// Gets the type of a ReQL query's return value. +/// +/// Example: Get the type of a string. +/// r.expr("foo").typeOf().run(conn, callback); +/// // Result passed to callback +/// "STRING" +/// + public TypeOf (Arguments args) : this(args, null) { + } +/// +/// Gets the type of a ReQL query's return value. +/// +/// Example: Get the type of a string. +/// r.expr("foo").typeOf().run(conn, callback); +/// // Result passed to callback +/// "STRING" +/// + public TypeOf (Arguments args, OptArgs optargs) + : base(TermType.TYPE_OF, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs.meta new file mode 100644 index 000000000..c08b1436e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/TypeOf.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 91f146662b300c14e94bfdd21f3450d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs new file mode 100644 index 000000000..20e430e98 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Ungroup : ReqlExpr { + + + + +/// +/// Takes a grouped stream or grouped data and turns it into an array of +/// objects representing the groups. Any commands chained after ungroup +/// will operate on this array, rather than operating on each group +/// individually. This is useful if you want to e.g. order the groups by +/// the value of their reduction. +/// +/// Example: What is the maximum number of points scored by each +/// player, with the highest scorers first? +/// r.table('games') +/// .group('player').max('points')('points') +/// .ungroup().orderBy(r.desc('reduction')).run(conn, callback) +/// + public Ungroup (object arg) : this(new Arguments(arg), null) { + } +/// +/// Takes a grouped stream or grouped data and turns it into an array of +/// objects representing the groups. Any commands chained after ungroup +/// will operate on this array, rather than operating on each group +/// individually. This is useful if you want to e.g. order the groups by +/// the value of their reduction. +/// +/// Example: What is the maximum number of points scored by each +/// player, with the highest scorers first? +/// r.table('games') +/// .group('player').max('points')('points') +/// .ungroup().orderBy(r.desc('reduction')).run(conn, callback) +/// + public Ungroup (Arguments args) : this(args, null) { + } +/// +/// Takes a grouped stream or grouped data and turns it into an array of +/// objects representing the groups. Any commands chained after ungroup +/// will operate on this array, rather than operating on each group +/// individually. This is useful if you want to e.g. order the groups by +/// the value of their reduction. +/// +/// Example: What is the maximum number of points scored by each +/// player, with the highest scorers first? +/// r.table('games') +/// .group('player').max('points')('points') +/// .ungroup().orderBy(r.desc('reduction')).run(conn, callback) +/// + public Ungroup (Arguments args, OptArgs optargs) + : base(TermType.UNGROUP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs.meta new file mode 100644 index 000000000..e91b90ed8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Ungroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a4b087e44b166044bacc6e0b88d7854 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs new file mode 100644 index 000000000..b2609b024 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Union : ReqlExpr { + + + + +/// +/// Merge two or more sequences. +/// +/// Example: Construct a stream of all heroes. +/// r.table('marvel').union(r.table('dc')).run(conn, callback); +/// + public Union (object arg) : this(new Arguments(arg), null) { + } +/// +/// Merge two or more sequences. +/// +/// Example: Construct a stream of all heroes. +/// r.table('marvel').union(r.table('dc')).run(conn, callback); +/// + public Union (Arguments args) : this(args, null) { + } +/// +/// Merge two or more sequences. +/// +/// Example: Construct a stream of all heroes. +/// r.table('marvel').union(r.table('dc')).run(conn, callback); +/// + public Union (Arguments args, OptArgs optargs) + : base(TermType.UNION, args, optargs) { + } + + + + + + + +/// +/// "interleave": "T_EXPR" +/// + public Union this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Union (this.Args, newOptArgs); + } + } + +/// +/// "interleave": "T_EXPR" +/// + public Union this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Union (this.Args, newOptArgs); + } + } + +/// +/// "interleave": "T_EXPR" +/// + public Union OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Union (this.Args, newOptArgs); + } + internal Union optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs.meta new file mode 100644 index 000000000..6275acaab --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Union.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 237725b8c0e9f3a4ca4c3ad1fdcfeff5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs new file mode 100644 index 000000000..5de467e58 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Upcase : ReqlExpr { + + + + +/// +/// Uppercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").upcase().run(conn, callback) +/// +/// Result: +/// "SENTENCE ABOUT LATEX." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Upcase (object arg) : this(new Arguments(arg), null) { + } +/// +/// Uppercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").upcase().run(conn, callback) +/// +/// Result: +/// "SENTENCE ABOUT LATEX." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Upcase (Arguments args) : this(args, null) { + } +/// +/// Uppercases a string. +/// +/// Example: +/// r.expr("Sentence about LaTeX.").upcase().run(conn, callback) +/// +/// Result: +/// "SENTENCE ABOUT LATEX." +/// +/// Note: upcase and downcase only affect ASCII characters. + public Upcase (Arguments args, OptArgs optargs) + : base(TermType.UPCASE, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs.meta new file mode 100644 index 000000000..6b0644593 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Upcase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 54b2958d32fa7bc4b942120fc5a7c94c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs new file mode 100644 index 000000000..16d3db50e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Update : ReqlExpr { + + + + +/// +/// Update JSON documents in a table. Accepts a JSON document, a ReQL expression, or a combination of the two. +/// +/// Example: Update the status of the post with id of 1 to published. +/// r.table("posts").get(1).update({status: "published"}).run(conn, callback) +/// + public Update (object arg) : this(new Arguments(arg), null) { + } +/// +/// Update JSON documents in a table. Accepts a JSON document, a ReQL expression, or a combination of the two. +/// +/// Example: Update the status of the post with id of 1 to published. +/// r.table("posts").get(1).update({status: "published"}).run(conn, callback) +/// + public Update (Arguments args) : this(args, null) { + } +/// +/// Update JSON documents in a table. Accepts a JSON document, a ReQL expression, or a combination of the two. +/// +/// Example: Update the status of the post with id of 1 to published. +/// r.table("posts").get(1).update({status: "published"}).run(conn, callback) +/// + public Update (Arguments args, OptArgs optargs) + : base(TermType.UPDATE, args, optargs) { + } + + + + + + + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "non_atomic": "T_BOOL" +/// + public Update this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Update (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "non_atomic": "T_BOOL" +/// + public Update this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Update (this.Args, newOptArgs); + } + } + +/// +/// "durability": "E_DURABILITY", +/// "return_changes": [ +/// "T_BOOL", +/// "always" +/// ], +/// "non_atomic": "T_BOOL" +/// + public Update OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Update (this.Args, newOptArgs); + } + internal Update optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs.meta new file mode 100644 index 000000000..f296bb586 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Update.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 100e97024133ae649b3e75690e49b99d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs new file mode 100644 index 000000000..dd8867eff --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Uuid : ReqlExpr { + + + + +/// +/// Return a UUID (universally unique identifier), a string that can be used as a unique ID. If a string is passed to uuid as an argument, the UUID will be deterministic, derived from the string's SHA-1 hash. +/// +/// Example: Generate a UUID. +/// > r.uuid().run(conn, callback) +/// // result returned to callback +/// "27961a0e-f4e8-4eb3-bf95-c5203e1d87b9" +/// + public Uuid (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return a UUID (universally unique identifier), a string that can be used as a unique ID. If a string is passed to uuid as an argument, the UUID will be deterministic, derived from the string's SHA-1 hash. +/// +/// Example: Generate a UUID. +/// > r.uuid().run(conn, callback) +/// // result returned to callback +/// "27961a0e-f4e8-4eb3-bf95-c5203e1d87b9" +/// + public Uuid (Arguments args) : this(args, null) { + } +/// +/// Return a UUID (universally unique identifier), a string that can be used as a unique ID. If a string is passed to uuid as an argument, the UUID will be deterministic, derived from the string's SHA-1 hash. +/// +/// Example: Generate a UUID. +/// > r.uuid().run(conn, callback) +/// // result returned to callback +/// "27961a0e-f4e8-4eb3-bf95-c5203e1d87b9" +/// + public Uuid (Arguments args, OptArgs optargs) + : base(TermType.UUID, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs.meta new file mode 100644 index 000000000..f61401f18 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Uuid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a4189395dac0404d95840086077be1e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs new file mode 100644 index 000000000..180082bb6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Values : ReqlExpr { + + + + +/// +/// Return an array containing all of an object's values. values() guarantees the values will come out in the same order as keys. +/// +/// Example: Get all of the values from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).values().run(conn, callback); +/// // Result passed to callback +/// [ 1, "fred@example.com", "fred" ] +/// + public Values (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return an array containing all of an object's values. values() guarantees the values will come out in the same order as keys. +/// +/// Example: Get all of the values from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).values().run(conn, callback); +/// // Result passed to callback +/// [ 1, "fred@example.com", "fred" ] +/// + public Values (Arguments args) : this(args, null) { + } +/// +/// Return an array containing all of an object's values. values() guarantees the values will come out in the same order as keys. +/// +/// Example: Get all of the values from a table row. +/// // row: { id: 1, mail: "fred@example.com", name: "fred" } +/// +/// r.table('users').get(1).values().run(conn, callback); +/// // Result passed to callback +/// [ 1, "fred@example.com", "fred" ] +/// + public Values (Arguments args, OptArgs optargs) + : base(TermType.VALUES, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs.meta new file mode 100644 index 000000000..bcf54b121 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Values.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d70a684680ae2bb4ab383fa31bbfe4e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs new file mode 100644 index 000000000..2a444f5ec --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Var : ReqlExpr { + + + + + public Var (object arg) : this(new Arguments(arg), null) { + } + public Var (Arguments args) : this(args, null) { + } + public Var (Arguments args, OptArgs optargs) + : base(TermType.VAR, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs.meta new file mode 100644 index 000000000..922e2287a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Var.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6fe6156a4c49c264280d8257832a48c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs new file mode 100644 index 000000000..0b2f1bf41 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Wait : ReqlExpr { + + + + +/// +/// Wait for a table or all the tables in a database to be ready. A table may be temporarily unavailable after creation, rebalancing or reconfiguring. The wait command blocks until the given table (or database) is fully up to date. +/// +/// Example: Wait on a table to be ready. +/// > r.table('superheroes').wait().run(conn, callback); +/// // Result passed to callback +/// { "ready": 1 } +/// + public Wait (object arg) : this(new Arguments(arg), null) { + } +/// +/// Wait for a table or all the tables in a database to be ready. A table may be temporarily unavailable after creation, rebalancing or reconfiguring. The wait command blocks until the given table (or database) is fully up to date. +/// +/// Example: Wait on a table to be ready. +/// > r.table('superheroes').wait().run(conn, callback); +/// // Result passed to callback +/// { "ready": 1 } +/// + public Wait (Arguments args) : this(args, null) { + } +/// +/// Wait for a table or all the tables in a database to be ready. A table may be temporarily unavailable after creation, rebalancing or reconfiguring. The wait command blocks until the given table (or database) is fully up to date. +/// +/// Example: Wait on a table to be ready. +/// > r.table('superheroes').wait().run(conn, callback); +/// // Result passed to callback +/// { "ready": 1 } +/// + public Wait (Arguments args, OptArgs optargs) + : base(TermType.WAIT, args, optargs) { + } + + + + + + + +/// +/// "wait_for": "E_STATUS", +/// "timeout": "T_NUM" +/// + public Wait this[object optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Wait (this.Args, newOptArgs); + } + } + +/// +/// "wait_for": "E_STATUS", +/// "timeout": "T_NUM" +/// + public Wait this[OptArgs optArgs] { + get + { + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(optArgs); + + return new Wait (this.Args, newOptArgs); + } + } + +/// +/// "wait_for": "E_STATUS", +/// "timeout": "T_NUM" +/// + public Wait OptArg(string key, object val){ + + var newOptArgs = OptArgs.FromMap(this.OptArgs).With(key, val); + + return new Wait (this.Args, newOptArgs); + } + internal Wait optArg(string key, object val){ + + return this.OptArg(key, val); + } + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs.meta new file mode 100644 index 000000000..0de64c8dd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wait.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cbf8d0def5d96924b81e0330eddbd645 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs new file mode 100644 index 000000000..7a53d58cf --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Wednesday : ReqlExpr { + + + + + public Wednesday (object arg) : this(new Arguments(arg), null) { + } + public Wednesday (Arguments args) : this(args, null) { + } + public Wednesday (Arguments args, OptArgs optargs) + : base(TermType.WEDNESDAY, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs.meta new file mode 100644 index 000000000..793db751c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Wednesday.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5dfb1c55ca42c4479def39ece61eb22 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs new file mode 100644 index 000000000..e01cb99aa --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class WithFields : ReqlExpr { + + + + +/// +/// Plucks one or more attributes from a sequence of objects, filtering out any objects in the sequence that do not have the specified fields. Functionally, this is identical to hasFields followed by pluck on a sequence. +/// +/// Example: Get a list of users and their posts, excluding any users who have not made any posts. +/// Existing table structure: +/// [ +/// { 'id': 1, 'user': 'bob', 'email': 'bob@foo.com', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 2, 'user': 'george', 'email': 'george@foo.com' }, +/// { 'id': 3, 'user': 'jane', 'email': 'jane@foo.com', 'posts': [ 2, 3, 6 ] } +/// ] +/// +/// Command and output: +/// > r.table('users').withFields('id', 'user', 'posts').run(conn, callback) +/// // Result passed to callback +/// [ +/// { 'id': 1, 'user': 'bob', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 3, 'user': 'jane', 'posts': [ 2, 3, 6 ] } +/// ] +/// + public WithFields (object arg) : this(new Arguments(arg), null) { + } +/// +/// Plucks one or more attributes from a sequence of objects, filtering out any objects in the sequence that do not have the specified fields. Functionally, this is identical to hasFields followed by pluck on a sequence. +/// +/// Example: Get a list of users and their posts, excluding any users who have not made any posts. +/// Existing table structure: +/// [ +/// { 'id': 1, 'user': 'bob', 'email': 'bob@foo.com', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 2, 'user': 'george', 'email': 'george@foo.com' }, +/// { 'id': 3, 'user': 'jane', 'email': 'jane@foo.com', 'posts': [ 2, 3, 6 ] } +/// ] +/// +/// Command and output: +/// > r.table('users').withFields('id', 'user', 'posts').run(conn, callback) +/// // Result passed to callback +/// [ +/// { 'id': 1, 'user': 'bob', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 3, 'user': 'jane', 'posts': [ 2, 3, 6 ] } +/// ] +/// + public WithFields (Arguments args) : this(args, null) { + } +/// +/// Plucks one or more attributes from a sequence of objects, filtering out any objects in the sequence that do not have the specified fields. Functionally, this is identical to hasFields followed by pluck on a sequence. +/// +/// Example: Get a list of users and their posts, excluding any users who have not made any posts. +/// Existing table structure: +/// [ +/// { 'id': 1, 'user': 'bob', 'email': 'bob@foo.com', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 2, 'user': 'george', 'email': 'george@foo.com' }, +/// { 'id': 3, 'user': 'jane', 'email': 'jane@foo.com', 'posts': [ 2, 3, 6 ] } +/// ] +/// +/// Command and output: +/// > r.table('users').withFields('id', 'user', 'posts').run(conn, callback) +/// // Result passed to callback +/// [ +/// { 'id': 1, 'user': 'bob', 'posts': [ 1, 4, 5 ] }, +/// { 'id': 3, 'user': 'jane', 'posts': [ 2, 3, 6 ] } +/// ] +/// + public WithFields (Arguments args, OptArgs optargs) + : base(TermType.WITH_FIELDS, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs.meta new file mode 100644 index 000000000..173827349 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/WithFields.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27d06a991d01b1247b2beb24e743bb2b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs new file mode 100644 index 000000000..54e61d440 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Without : ReqlExpr { + + + + +/// +/// The opposite of pluck; takes an object or a sequence of objects, and returns them with +/// the specified paths removed. +/// +/// Example: Since we don't need it for this computation we'll save bandwidth and leave +/// out the list of IronMan's romantic conquests. +/// r.table('marvel').get('IronMan').without('personalVictoriesList').run(conn, callback) +/// + public Without (object arg) : this(new Arguments(arg), null) { + } +/// +/// The opposite of pluck; takes an object or a sequence of objects, and returns them with +/// the specified paths removed. +/// +/// Example: Since we don't need it for this computation we'll save bandwidth and leave +/// out the list of IronMan's romantic conquests. +/// r.table('marvel').get('IronMan').without('personalVictoriesList').run(conn, callback) +/// + public Without (Arguments args) : this(args, null) { + } +/// +/// The opposite of pluck; takes an object or a sequence of objects, and returns them with +/// the specified paths removed. +/// +/// Example: Since we don't need it for this computation we'll save bandwidth and leave +/// out the list of IronMan's romantic conquests. +/// r.table('marvel').get('IronMan').without('personalVictoriesList').run(conn, callback) +/// + public Without (Arguments args, OptArgs optargs) + : base(TermType.WITHOUT, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs.meta new file mode 100644 index 000000000..6704e3fcb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Without.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ee199140220a9f2429eb2b2b6b99c22b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs new file mode 100644 index 000000000..c9b431744 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Year : ReqlExpr { + + + + +/// +/// Return the year of a time object. +/// +/// Example: Retrieve all the users born in 1986. +/// r.table("users").filter(function(user) { +/// return user("birthdate").year().eq(1986) +/// }).run(conn, callback) +/// + public Year (object arg) : this(new Arguments(arg), null) { + } +/// +/// Return the year of a time object. +/// +/// Example: Retrieve all the users born in 1986. +/// r.table("users").filter(function(user) { +/// return user("birthdate").year().eq(1986) +/// }).run(conn, callback) +/// + public Year (Arguments args) : this(args, null) { + } +/// +/// Return the year of a time object. +/// +/// Example: Retrieve all the users born in 1986. +/// r.table("users").filter(function(user) { +/// return user("birthdate").year().eq(1986) +/// }).run(conn, callback) +/// + public Year (Arguments args, OptArgs optargs) + : base(TermType.YEAR, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs.meta new file mode 100644 index 000000000..4459798c5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Year.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe31f3f4d2e2b9c4b8abcf91d146618e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs new file mode 100644 index 000000000..48e86088d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using System.Collections; +using System.Collections.Generic; + + +namespace RethinkDb.Driver.Ast { + + public partial class Zip : ReqlExpr { + + + + +/// +/// Used to 'zip' up the result of a join by merging the 'right' fields into 'left' fields of each member of the sequence. +/// +/// Example: 'zips up' the sequence by merging the left and right fields produced by a join. +/// r.table('marvel').eqJoin('main_dc_collaborator', r.table('dc')) +/// .zip().run(conn, callback) +/// + public Zip (object arg) : this(new Arguments(arg), null) { + } +/// +/// Used to 'zip' up the result of a join by merging the 'right' fields into 'left' fields of each member of the sequence. +/// +/// Example: 'zips up' the sequence by merging the left and right fields produced by a join. +/// r.table('marvel').eqJoin('main_dc_collaborator', r.table('dc')) +/// .zip().run(conn, callback) +/// + public Zip (Arguments args) : this(args, null) { + } +/// +/// Used to 'zip' up the result of a join by merging the 'right' fields into 'left' fields of each member of the sequence. +/// +/// Example: 'zips up' the sequence by merging the left and right fields produced by a join. +/// r.table('marvel').eqJoin('main_dc_collaborator', r.table('dc')) +/// .zip().run(conn, callback) +/// + public Zip (Arguments args, OptArgs optargs) + : base(TermType.ZIP, args, optargs) { + } + + + + + + + + + + + + + /// + /// Get a single field from an object. If called on a sequence, gets that field from every object in the sequence, skipping objects that lack it. + /// + /// + public new Bracket this[string bracket] => base[bracket]; + + /// + /// Get the nth element of a sequence, counting from zero. If the argument is negative, count from the last element. + /// + /// + /// + public new Bracket this[int bracket] => base[bracket]; + + + + + + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs.meta new file mode 100644 index 000000000..2834acf04 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Ast/Zip.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 009287b2e71edcc47bc7a4a3c349dd53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model.meta new file mode 100644 index 000000000..7d23143c8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f68541073a1be34cbbbb6e415e7a8d6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs new file mode 100644 index 000000000..8e4064b15 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class AuthType { + public const string Basic = "basic"; + public const string Digest = "digest"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs.meta new file mode 100644 index 000000000..436ae5d2a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/AuthType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1cb2cfb8d6716cb4bb9490aa7074b096 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs new file mode 100644 index 000000000..2de8b9903 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class Bound { + public const string Open = "open"; + public const string Closed = "closed"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs.meta new file mode 100644 index 000000000..fde3b8d84 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Bound.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c02a319eb8355741b589b1220aeda7f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs new file mode 100644 index 000000000..052b37ee3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs @@ -0,0 +1,22 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class Conflict { + public const string Error = "error"; + public const string Replace = "replace"; + public const string Update = "update"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs.meta new file mode 100644 index 000000000..d664b3848 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Conflict.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d7e93e001feed81469486cd008e40a40 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs new file mode 100644 index 000000000..9bf6fc35a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class Durability { + public const string Hard = "hard"; + public const string Soft = "soft"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs.meta new file mode 100644 index 000000000..76928b3d6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Durability.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b95b7a9a50becf843be3c787e3852311 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs new file mode 100644 index 000000000..671d875f4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class EmergencyRepair { + public const string UnsafeRollback = "unsafe_rollback"; + public const string UnsafeRollbackOrErase = "unsafe_rollback_or_erase"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs.meta new file mode 100644 index 000000000..0dcc5c5de --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/EmergencyRepair.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30dc86498f9a80c44bdf4ca055f27812 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs new file mode 100644 index 000000000..ff59be179 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class Format { + public const string Raw = "raw"; + public const string Native = "native"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs.meta new file mode 100644 index 000000000..c2c44501d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Format.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf7213c306c4fb8468b34cc4e193f692 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs new file mode 100644 index 000000000..cf75e4651 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class GeoSystem { + public const string WGS84 = "WGS84"; + public const string UnitSphere = "unit_sphere"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs.meta new file mode 100644 index 000000000..8528ecc98 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/GeoSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0c94b4e55a90e04a889175b20c0425b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs new file mode 100644 index 000000000..a9759a51b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs @@ -0,0 +1,25 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class HttpMethod { + public const string GET = "GET"; + public const string POST = "POST"; + public const string PUT = "PUT"; + public const string PATCH = "PATCH"; + public const string DELETE = "DELETE"; + public const string HEAD = "HEAD"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs.meta new file mode 100644 index 000000000..8947a0039 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/HttpMethod.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 359efe1c840fefa4c9eafdaa52424cd0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs new file mode 100644 index 000000000..a1ed05672 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class IdentifierFormat { + public const string Name = "name"; + public const string Uuid = "uuid"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs.meta new file mode 100644 index 000000000..02179e8e6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/IdentifierFormat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 69cd42f4fe261fe4b904dfd3b6dde1ed +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs new file mode 100644 index 000000000..a4ee623c2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs @@ -0,0 +1,22 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class ReadMode { + public const string Single = "single"; + public const string Majority = "majority"; + public const string Outdated = "outdated"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs.meta new file mode 100644 index 000000000..37893b7db --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReadMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44a43bc52fc74d84e9e67591023cdb01 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs new file mode 100644 index 000000000..87fe6458b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs @@ -0,0 +1,19 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Ast { + public delegate object ReqlFunction0 ( ); + //marker interface for marking some terms (like javascript) as lambdas. + //public interface IReqlFunction0Expr : ReqlLambda { } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs.meta new file mode 100644 index 000000000..1f54d7659 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction0.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 176f39b7bbd2aa04993fec0045d51cd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs new file mode 100644 index 000000000..72276445f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs @@ -0,0 +1,19 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Ast { + public delegate object ReqlFunction1 ( ReqlExpr arg1 ); + //marker interface for marking some terms (like javascript) as lambdas. + //public interface IReqlFunction1Expr : ReqlLambda { } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs.meta new file mode 100644 index 000000000..b97df02e4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction1.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0ba964f19ce6fd045b3f315b2a98d2fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs new file mode 100644 index 000000000..d40566f14 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs @@ -0,0 +1,19 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Ast { + public delegate object ReqlFunction2 ( ReqlExpr arg1, ReqlExpr arg2 ); + //marker interface for marking some terms (like javascript) as lambdas. + //public interface IReqlFunction2Expr : ReqlLambda { } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs.meta new file mode 100644 index 000000000..da6558d9d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction2.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f4433a235e4733349a80111792b58c5b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs new file mode 100644 index 000000000..afc2c67cf --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs @@ -0,0 +1,19 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Ast { + public delegate object ReqlFunction3 ( ReqlExpr arg1, ReqlExpr arg2, ReqlExpr arg3 ); + //marker interface for marking some terms (like javascript) as lambdas. + //public interface IReqlFunction3Expr : ReqlLambda { } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs.meta new file mode 100644 index 000000000..087eef171 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction3.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7903ba429aa941a419ce8bf930b2d550 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs new file mode 100644 index 000000000..24e4f5650 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs @@ -0,0 +1,19 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Ast { + public delegate object ReqlFunction4 ( ReqlExpr arg1, ReqlExpr arg2, ReqlExpr arg3, ReqlExpr arg4 ); + //marker interface for marking some terms (like javascript) as lambdas. + //public interface IReqlFunction4Expr : ReqlLambda { } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs.meta new file mode 100644 index 000000000..eb809d308 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ReqlFunction4.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5c51d137f2a7594aa4906b503e68380 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs new file mode 100644 index 000000000..92061138f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs @@ -0,0 +1,24 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class ResultFormat { + public const string Text = "text"; + public const string Json = "json"; + public const string Jsonp = "jsonp"; + public const string Binary = "binary"; + public const string Auto = "auto"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs.meta new file mode 100644 index 000000000..620ae2a07 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/ResultFormat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a02838e2422f28547ba8f46b0cdfd614 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs new file mode 100644 index 000000000..5471e462b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs @@ -0,0 +1,23 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class Status { + public const string ReadyForOutdatedReads = "ready_for_outdated_reads"; + public const string ReadyForReads = "ready_for_reads"; + public const string ReadyForWrites = "ready_for_writes"; + public const string AllReplicasReady = "all_replicas_ready"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs.meta new file mode 100644 index 000000000..cd7449a40 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Status.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f389494f6ac95df4385e50b028d9b989 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs new file mode 100644 index 000000000..6cf2db190 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs @@ -0,0 +1,5804 @@ + + + + + + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member +// ReSharper disable CheckNamespace + +using System; +using System.Linq; +using System.Collections; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Ast { + public partial class TopLevel { + + public ReqlExpr Expr(Object value){ + return Util.ToReqlExpr(value); + + } + internal ReqlExpr expr(Object value){ + return Expr(value); + } + + + public ReqlExpr Row(params object[] values) { + throw new ReqlDriverError("r.row is not implemented in the C# driver. Use lambda syntax instead."); + } + internal ReqlExpr row(params object[] values) { + return Row(values); + } + + public MapObject HashMap(object key, object val) { + return new MapObject().With(key, val); + } + internal MapObject hashMap(object key, object val) { + return new MapObject().With(key, val); + } + + public MapObject HashMap() + { + return new MapObject(); + } + internal MapObject hashMap() + { + return HashMap(); + } + + + public IList Array(params object[] values){ + return values.ToList(); + } + internal IList array(params object[] values){ + return Array(values); + } + + public Javascript Js ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Javascript (arguments); + } + internal Javascript js ( Object expr ) + { + return Js ( expr ); + } +/// +/// Return a UUID (universally unique identifier), a string that can be used as a unique ID. If a string is passed to uuid as an argument, the UUID will be deterministic, derived from the string's SHA-1 hash. +/// +/// Example: Generate a UUID. +/// > r.uuid().run(conn, callback) +/// // result returned to callback +/// "27961a0e-f4e8-4eb3-bf95-c5203e1d87b9" +/// + public Uuid Uuid ( ) + { + Arguments arguments = new Arguments(); + return new Uuid (arguments); + } + internal Uuid uuid ( ) + { + return Uuid ( ); + } +/// +/// Return a UUID (universally unique identifier), a string that can be used as a unique ID. If a string is passed to uuid as an argument, the UUID will be deterministic, derived from the string's SHA-1 hash. +/// +/// Example: Generate a UUID. +/// > r.uuid().run(conn, callback) +/// // result returned to callback +/// "27961a0e-f4e8-4eb3-bf95-c5203e1d87b9" +/// + public Uuid Uuid ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Uuid (arguments); + } + internal Uuid uuid ( Object expr ) + { + return Uuid ( expr ); + } +/// +/// Retrieve data from the specified URL over HTTP. The return type depends on the resultFormat option, which checks the Content-Type of the response by default. +/// +/// Example: Perform an HTTP GET and store the result in a table. +/// r.table('posts').insert(r.http('http://httpbin.org/get')).run(conn, callback) +/// + public Http Http ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Http (arguments); + } + internal Http http ( Object expr ) + { + return Http ( expr ); + } +/// +/// Throw a runtime error. If called with no arguments inside the second argument to default, re-throw the current error. +/// +/// Example: Iron Man can't possibly have lost a battle: +/// r.table('marvel').get('IronMan').do(function(ironman) { +/// return r.branch(ironman('victories').lt(ironman('battles')), +/// r.error('impossible code path'), +/// ironman) +/// }).run(conn, callback) +/// + public Error Error ( ) + { + Arguments arguments = new Arguments(); + return new Error (arguments); + } + internal Error error ( ) + { + return Error ( ); + } +/// +/// Throw a runtime error. If called with no arguments inside the second argument to default, re-throw the current error. +/// +/// Example: Iron Man can't possibly have lost a battle: +/// r.table('marvel').get('IronMan').do(function(ironman) { +/// return r.branch(ironman('victories').lt(ironman('battles')), +/// r.error('impossible code path'), +/// ironman) +/// }).run(conn, callback) +/// + public Error Error ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Error (arguments); + } + internal Error error ( Object expr ) + { + return Error ( expr ); + } +/// +/// Reference a database. +/// +/// Example: Explicitly specify a database for a query. +/// r.db('heroes').table('marvel').run(conn, callback) +/// + public Db Db ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Db (arguments); + } + internal Db db ( Object expr ) + { + return Db ( expr ); + } +/// +/// Return all documents in a table. Other commands may be chained after table to return a subset of documents (such as get and filter) or perform further processing. +/// +/// Example: Return all documents in the table 'marvel' of the default database. +/// r.table('marvel').run(conn, callback) +/// + public Table Table ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Table (arguments); + } + internal Table table ( Object expr ) + { + return Table ( expr ); + } +/// +/// Test if two or more values are equal. +/// +/// Example: See if a user's role field is set to administrator. +/// r.table('users').get(1)('role').eq('administrator').run(conn, callback); +/// + public Eq Eq ( Object expr, Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Eq (arguments); + } + internal Eq eq ( Object expr, Object exprA, params object[] exprs ) + { + return Eq ( expr, exprA, exprs ); + } +/// +/// Test if two or more values are not equal. +/// +/// Example: See if a user's role field is not set to administrator. +/// r.table('users').get(1)('role').ne('administrator').run(conn, callback); +/// + public Ne Ne ( Object expr, Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Ne (arguments); + } + internal Ne ne ( Object expr, Object exprA, params object[] exprs ) + { + return Ne ( expr, exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is less than the right-hand. +/// +/// Example: Test if a player has scored less than 10 points. +/// r.table('players').get(1)('score').lt(10).run(conn, callback); +/// + public Lt Lt ( Object expr, Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Lt (arguments); + } + internal Lt lt ( Object expr, Object exprA, params object[] exprs ) + { + return Lt ( expr, exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is less than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or less. +/// r.table('players').get(1)('score').le(10).run(conn, callback); +/// + public Le Le ( Object expr, Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Le (arguments); + } + internal Le le ( Object expr, Object exprA, params object[] exprs ) + { + return Le ( expr, exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is greater than the right-hand. +/// +/// Example: Test if a player has scored more than 10 points. +/// r.table('players').get(1)('score').gt(10).run(conn, callback); +/// + public Gt Gt ( Object expr, Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Gt (arguments); + } + internal Gt gt ( Object expr, Object exprA, params object[] exprs ) + { + return Gt ( expr, exprA, exprs ); + } +/// +/// Compare values, testing if the left-hand value is greater than or equal to the right-hand. +/// +/// Example: Test if a player has scored 10 points or more. +/// r.table('players').get(1)('score').ge(10).run(conn, callback); +/// + public Ge Ge ( Object expr, Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Ge (arguments); + } + internal Ge ge ( Object expr, Object exprA, params object[] exprs ) + { + return Ge ( expr, exprA, exprs ); + } +/// +/// Compute the logical inverse (not) of an expression. +/// +/// Example: Not true is false. +/// r(true).not().run(conn, callback) +/// r.not(true).run(conn, callback) +/// +/// These evaluate to false. + public Not Not ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Not (arguments); + } + internal Not not ( Object expr ) + { + return Not ( expr ); + } +/// +/// Sum two or more numbers, or concatenate two or more strings or arrays. +/// +/// Example: It's as easy as 2 + 2 = 4. +/// > r.expr(2).add(2).run(conn, callback) +/// // result passed to callback +/// 4 +/// + public Add Add ( Object expr, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAddAll(exprs); + return new Add (arguments); + } + internal Add add ( Object expr, params object[] exprs ) + { + return Add ( expr, exprs ); + } +/// +/// Subtract two numbers. +/// +/// Example: It's as easy as 2 - 2 = 0. +/// r.expr(2).sub(2).run(conn, callback) +/// + public Sub Sub ( Object expr, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAddAll(exprs); + return new Sub (arguments); + } + internal Sub sub ( Object expr, params object[] exprs ) + { + return Sub ( expr, exprs ); + } +/// +/// Multiply two numbers, or make a periodic array. +/// +/// Example: It's as easy as 2 * 2 = 4. +/// r.expr(2).mul(2).run(conn, callback) +/// + public Mul Mul ( Object expr, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAddAll(exprs); + return new Mul (arguments); + } + internal Mul mul ( Object expr, params object[] exprs ) + { + return Mul ( expr, exprs ); + } +/// +/// Divide two numbers. +/// +/// Example: It's as easy as 2 / 2 = 1. +/// r.expr(2).div(2).run(conn, callback) +/// + public Div Div ( Object expr, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAddAll(exprs); + return new Div (arguments); + } + internal Div div ( Object expr, params object[] exprs ) + { + return Div ( expr, exprs ); + } +/// +/// +/// +/// Example: It's as easy as 2 % 2 = 0. +/// r.expr(2).mod(2).run(conn, callback) +/// + public Mod Mod ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Mod (arguments); + } + internal Mod mod ( Object expr, Object exprA ) + { + return Mod ( expr, exprA ); + } +/// +/// Rounds the given value down, returning the largest integer value less than or equal to the given value (the value's floor). +/// +/// Example: Return the floor of 12.345. +/// r.floor(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The floor command can also be chained after an expression. + public Floor Floor ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Floor (arguments); + } + internal Floor floor ( Object expr ) + { + return Floor ( expr ); + } +/// +/// Rounds the given value up, returning the smallest integer value greater than or equal to the given value (the value's ceiling). +/// +/// Example: Return the ceiling of 12.345. +/// r.ceil(12.345).run(conn, callback); +/// // Result passed to callback +/// 13.0 +/// +/// The ceil command can also be chained after an expression. + public Ceil Ceil ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Ceil (arguments); + } + internal Ceil ceil ( Object expr ) + { + return Ceil ( expr ); + } +/// +/// Rounds the given value to the nearest whole integer. +/// +/// Example: Round 12.345 to the nearest integer. +/// r.round(12.345).run(conn, callback); +/// // Result passed to callback +/// 12.0 +/// +/// The round command can also be chained after an expression. + public Round Round ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Round (arguments); + } + internal Round round ( Object expr ) + { + return Round ( expr ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Contains (arguments); + } + internal Contains contains ( Object expr ) + { + return Contains ( expr ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js ) + { + return Contains ( expr, js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Javascript jsA ) + { + return Contains ( expr, js, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Javascript jsA, Javascript jsB ) + { + return Contains ( expr, js, jsA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(jsC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + return Contains ( expr, js, jsA, jsB, jsC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + return Contains ( expr, js, jsA, jsB, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Javascript jsA, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Javascript jsA, Object exprA ) + { + return Contains ( expr, js, jsA, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + return Contains ( expr, js, jsA, exprA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + return Contains ( expr, js, jsA, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Object exprA ) + { + return Contains ( expr, js, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Object exprA, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Object exprA, Javascript jsA ) + { + return Contains ( expr, js, exprA, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + return Contains ( expr, js, exprA, jsA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + return Contains ( expr, js, exprA, jsA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Object exprA, Object exprB ) + { + return Contains ( expr, js, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + return Contains ( expr, js, exprA, exprB, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Javascript js, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Javascript js, Object exprA, Object exprB, Object exprC ) + { + return Contains ( expr, js, exprA, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA ) + { + return Contains ( expr, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Javascript js ) + { + return Contains ( expr, exprA, js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Javascript js, Javascript jsA ) + { + return Contains ( expr, exprA, js, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + return Contains ( expr, exprA, js, jsA, jsB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + return Contains ( expr, exprA, js, jsA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Javascript js, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Javascript js, Object exprB ) + { + return Contains ( expr, exprA, js, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + return Contains ( expr, exprA, js, exprB, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Javascript js, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Javascript js, Object exprB, Object exprC ) + { + return Contains ( expr, exprA, js, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB ) + { + return Contains ( expr, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, Javascript js ) + { + return Contains ( expr, exprA, exprB, js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + return Contains ( expr, exprA, exprB, js, jsA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, Javascript js, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, Javascript js, Object exprC ) + { + return Contains ( expr, exprA, exprB, js, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, Object exprC ) + { + return Contains ( expr, exprA, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, Object exprC, Javascript js ) + { + return Contains ( expr, exprA, exprB, exprC, js ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, Object exprC, Object exprD ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(exprD); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, Object exprC, Object exprD ) + { + return Contains ( expr, exprA, exprB, exprC, exprD ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func1); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + return Contains ( expr, exprA, exprB, exprC, func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1 ) + { + return Contains ( expr, exprA, exprB, func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + return Contains ( expr, exprA, exprB, func1, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Contains ( expr, exprA, exprB, func1, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, ReqlFunction1 func1 ) + { + return Contains ( expr, exprA, func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB ) + { + return Contains ( expr, exprA, func1, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + return Contains ( expr, exprA, func1, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + return Contains ( expr, exprA, func1, exprB, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Contains ( expr, exprA, func1, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + return Contains ( expr, exprA, func1, func1A, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments); + } + internal Contains contains ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Contains ( expr, exprA, func1, func1A, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1 ) + { + return Contains ( expr, func1 ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, Object exprA ) + { + return Contains ( expr, func1, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB ) + { + return Contains ( expr, func1, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + return Contains ( expr, func1, exprA, exprB, exprC ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + return Contains ( expr, func1, exprA, exprB, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + return Contains ( expr, func1, exprA, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + return Contains ( expr, func1, exprA, func1A, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Contains ( expr, func1, exprA, func1A, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Contains ( expr, func1, func1A ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + return Contains ( expr, func1, func1A, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + return Contains ( expr, func1, func1A, exprA, exprB ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + return Contains ( expr, func1, func1A, exprA, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Contains ( expr, func1, func1A, func1B ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(exprA); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + return Contains ( expr, func1, func1A, func1B, exprA ); + } +/// +/// When called with values, returns true if a sequence contains all the +/// specified values. When called with predicate functions, returns true +/// if for each predicate there exists at least one element of the stream +/// where that predicate returns true. +/// +/// Example: Has Iron Man ever fought Superman? +/// r.table('marvel').get('ironman')('opponents').contains('superman').run(conn, callback) +/// + public Contains Contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(func1C); + return new Contains (arguments); + } + internal Contains contains ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + return Contains ( expr, func1, func1A, func1B, func1C ); + } +/// +/// Creates an object from a list of key-value pairs, where the keys must +/// be strings. r.object(A, B, C, D) is equivalent to +/// r.expr([[A, B], [C, D]]).coerce_to('OBJECT'). +/// +/// Example: Create a simple object. +/// r.object('id', 5, 'data', ['foo', 'bar']).run(conn, callback) +/// +/// Result: +/// {data: ["foo", "bar"], id: 5} +/// + public ReqlObject Object_ ( params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAddAll(exprs); + return new ReqlObject (arguments); + } + internal ReqlObject object_ ( params object[] exprs ) + { + return Object_ ( exprs ); + } +/// +/// Produce a single value from a sequence through repeated application of a reduction function. +/// +/// Example: Return the number of documents in the table posts. +/// r.table("posts").map(function(doc) { +/// return 1; +/// }).reduce(function(left, right) { +/// return left.add(right); +/// }).default(0).run(conn, callback); +/// +/// A shorter way to execute this query is to use count. + public Reduce Reduce ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Reduce (arguments); + } + internal Reduce reduce ( Object expr, Javascript js ) + { + return Reduce ( expr, js ); + } +/// +/// Produce a single value from a sequence through repeated application of a reduction function. +/// +/// Example: Return the number of documents in the table posts. +/// r.table("posts").map(function(doc) { +/// return 1; +/// }).reduce(function(left, right) { +/// return left.add(right); +/// }).default(0).run(conn, callback); +/// +/// A shorter way to execute this query is to use count. + public Reduce Reduce ( Object expr, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func2); + return new Reduce (arguments); + } + internal Reduce reduce ( Object expr, ReqlFunction2 func2 ) + { + return Reduce ( expr, func2 ); + } +/// +/// Apply a function to a sequence in order, maintaining state via an accumulator. The fold command returns either a single value or a new sequence. +/// +/// Example: Concatenate words from a list. +/// r.table('words').orderBy('id').fold('', function (acc, word) { +/// return acc.add(r.branch(acc.eq(''), '', ', ')).add(word); +/// }).run(conn, callback); +/// +/// (This example could be implemented with reduce, but fold will preserve the order when words is a RethinkDB table or other stream, which is not guaranteed with reduce.) + public Fold Fold ( Object expr, Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Fold (arguments); + } + internal Fold fold ( Object expr, Object exprA, Javascript js ) + { + return Fold ( expr, exprA, js ); + } +/// +/// Apply a function to a sequence in order, maintaining state via an accumulator. The fold command returns either a single value or a new sequence. +/// +/// Example: Concatenate words from a list. +/// r.table('words').orderBy('id').fold('', function (acc, word) { +/// return acc.add(r.branch(acc.eq(''), '', ', ')).add(word); +/// }).run(conn, callback); +/// +/// (This example could be implemented with reduce, but fold will preserve the order when words is a RethinkDB table or other stream, which is not guaranteed with reduce.) + public Fold Fold ( Object expr, Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new Fold (arguments); + } + internal Fold fold ( Object expr, Object exprA, ReqlFunction2 func2 ) + { + return Fold ( expr, exprA, func2 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Map (arguments); + } + internal Map map ( Object expr, Javascript js ) + { + return Map ( expr, js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Map (arguments); + } + internal Map map ( Object expr, Object exprA, Javascript js ) + { + return Map ( expr, exprA, js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Map (arguments); + } + internal Map map ( Object expr, Object exprA, Object exprB, Javascript js ) + { + return Map ( expr, exprA, exprB, js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new Map (arguments); + } + internal Map map ( Object expr, Object exprA, Object exprB, Object exprC, Javascript js ) + { + return Map ( expr, exprA, exprB, exprC, js ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, Object exprA, Object exprB, Object exprC, ReqlFunction4 func4 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func4); + return new Map (arguments); + } + internal Map map ( Object expr, Object exprA, Object exprB, Object exprC, ReqlFunction4 func4 ) + { + return Map ( expr, exprA, exprB, exprC, func4 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, Object exprA, Object exprB, ReqlFunction3 func3 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func3); + return new Map (arguments); + } + internal Map map ( Object expr, Object exprA, Object exprB, ReqlFunction3 func3 ) + { + return Map ( expr, exprA, exprB, func3 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new Map (arguments); + } + internal Map map ( Object expr, Object exprA, ReqlFunction2 func2 ) + { + return Map ( expr, exprA, func2 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, ReqlFunction0 func0 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func0); + return new Map (arguments); + } + internal Map map ( Object expr, ReqlFunction0 func0 ) + { + return Map ( expr, func0 ); + } +/// +/// Transform each element of one or more sequences by applying a mapping function to them. If map is run with two or more sequences, it will iterate for as many items as there are in the shortest sequence. +/// +/// Example: Return the first five squares. +/// r.expr([1, 2, 3, 4, 5]).map(function (val) { +/// return val.mul(val); +/// }).run(conn, callback); +/// // Result passed to callback +/// [1, 4, 9, 16, 25] +/// + public Map Map ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Map (arguments); + } + internal Map map ( Object expr, ReqlFunction1 func1 ) + { + return Map ( expr, func1 ); + } +/// +/// Removes duplicates from elements in a sequence. +/// +/// Example: Which unique villains have been vanquished by Marvel heroes? +/// r.table('marvel').concatMap(function(hero) { +/// return hero('villainList') +/// }).distinct().run(conn, callback) +/// + public Distinct Distinct ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Distinct (arguments); + } + internal Distinct distinct ( Object expr ) + { + return Distinct ( expr ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Count (arguments); + } + internal Count count ( Object expr ) + { + return Count ( expr ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Count (arguments); + } + internal Count count ( Object expr, Javascript js ) + { + return Count ( expr, js ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Count (arguments); + } + internal Count count ( Object expr, Object exprA ) + { + return Count ( expr, exprA ); + } +/// +/// Counts the number of elements in a sequence or key/value pairs in an object, or returns the size of a string or binary object. +/// +/// Example: Count the number of users. +/// r.table('users').count().run(conn, callback); +/// + public Count Count ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Count (arguments); + } + internal Count count ( Object expr, ReqlFunction1 func1 ) + { + return Count ( expr, func1 ); + } +/// +/// Merge two or more sequences. +/// +/// Example: Construct a stream of all heroes. +/// r.table('marvel').union(r.table('dc')).run(conn, callback); +/// + public Union Union ( Object expr, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAddAll(exprs); + return new Union (arguments); + } + internal Union union ( Object expr, params object[] exprs ) + { + return Union ( expr, exprs ); + } +/// +/// Generate a stream of sequential integers in a specified range. +/// +/// Example: Return a four-element range of [0, 1, 2, 3]. +/// > r.range(4).run(conn, callback) +/// // result returned to callback +/// [0, 1, 2, 3] +/// + public Range Range ( ) + { + Arguments arguments = new Arguments(); + return new Range (arguments); + } + internal Range range ( ) + { + return Range ( ); + } +/// +/// Generate a stream of sequential integers in a specified range. +/// +/// Example: Return a four-element range of [0, 1, 2, 3]. +/// > r.range(4).run(conn, callback) +/// // result returned to callback +/// [0, 1, 2, 3] +/// + public Range Range ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Range (arguments); + } + internal Range range ( Object expr ) + { + return Range ( expr ); + } +/// +/// Generate a stream of sequential integers in a specified range. +/// +/// Example: Return a four-element range of [0, 1, 2, 3]. +/// > r.range(4).run(conn, callback) +/// // result returned to callback +/// [0, 1, 2, 3] +/// + public Range Range ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Range (arguments); + } + internal Range range ( Object expr, Object exprA ) + { + return Range ( expr, exprA ); + } +/// +/// Gets the type of a ReQL query's return value. +/// +/// Example: Get the type of a string. +/// r.expr("foo").typeOf().run(conn, callback); +/// // Result passed to callback +/// "STRING" +/// + public TypeOf TypeOf ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new TypeOf (arguments); + } + internal TypeOf typeOf ( Object expr ) + { + return TypeOf ( expr ); + } +/// +/// Create a database. A RethinkDB database is a collection of tables, similar to +/// relational databases. +/// +/// Example: Create a database named 'superheroes'. +/// > r.dbCreate('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "old_val": null +/// } +/// ], +/// "dbs_created": 1 +/// } +/// + public DbCreate DbCreate ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new DbCreate (arguments); + } + internal DbCreate dbCreate ( Object expr ) + { + return DbCreate ( expr ); + } +/// +/// Drop a database. The database, all its tables, and corresponding data will be deleted. +/// +/// Example: Drop a database named 'superheroes'. +/// > r.dbDrop('superheroes').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "id": "e4689cfc-e903-4532-a0e6-2d6797a43f07", +/// "name": "superheroes" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 3, +/// "dbs_dropped": 1 +/// } +/// + public DbDrop DbDrop ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new DbDrop (arguments); + } + internal DbDrop dbDrop ( Object expr ) + { + return DbDrop ( expr ); + } +/// +/// List all database names in the system. The result is a list of strings. +/// +/// Example: List all databases. +/// r.dbList().run(conn, callback) +/// + public DbList DbList ( ) + { + Arguments arguments = new Arguments(); + return new DbList (arguments); + } + internal DbList dbList ( ) + { + return DbList ( ); + } +/// +/// Create a table. A RethinkDB table is a collection of JSON documents. +/// +/// Example: Create a table named 'dc_universe' with the default settings. +/// > r.db('heroes').tableCreate('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "new_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "old_val": null +/// } +/// ], +/// "tables_created": 1 +/// } +/// + public TableCreate TableCreate ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new TableCreate (arguments); + } + internal TableCreate tableCreate ( Object expr ) + { + return TableCreate ( expr ); + } +/// +/// Drop a table from a database. The table and all its data will be deleted. +/// +/// Example: Drop a table named 'dc_universe'. +/// > r.db('test').tableDrop('dc_universe').run(conn, callback); +/// // Result passed to callback +/// { +/// "config_changes": [ +/// { +/// "old_val": { +/// "db": "test", +/// "durability": "hard", +/// "id": "20ea60d4-3b76-4817-8828-98a236df0297", +/// "name": "dc_universe", +/// "primary_key": "id", +/// "shards": [ +/// { +/// "primary_replica": "rethinkdb_srv1", +/// "replicas": [ +/// "rethinkdb_srv1", +/// "rethinkdb_srv2" +/// ] +/// } +/// ], +/// "write_acks": "majority" +/// }, +/// "new_val": null +/// } +/// ], +/// "tables_dropped": 1 +/// } +/// + public TableDrop TableDrop ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new TableDrop (arguments); + } + internal TableDrop tableDrop ( Object expr ) + { + return TableDrop ( expr ); + } +/// +/// List all table names in a database. The result is a list of strings. +/// +/// Example: List all tables of the 'test' database. +/// r.db('test').tableList().run(conn, callback) +/// + public TableList TableList ( ) + { + Arguments arguments = new Arguments(); + return new TableList (arguments); + } + internal TableList tableList ( ) + { + return TableList ( ); + } +/// +/// Grant or deny access permissions for a user account, globally or on a per-database or per-table basis. +/// +/// Example: Grant the chatapp user account read and write permissions on the users database. +/// r.db('users').grant('chatapp', {read: true, write: true}).run(conn, callback); +/// +/// // Result passed to callback +/// { +/// "granted": 1, +/// "permissions_changes": [ +/// { +/// "new_val": { "read": true, "write": true }, +/// "old_val": { null } +/// } +/// ] +/// + public Grant Grant ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Grant (arguments); + } + internal Grant grant ( Object expr, Object exprA ) + { + return Grant ( expr, exprA ); + } + public Funcall Do_ ( Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(js); + return new Funcall (arguments); + } + internal Funcall do_ ( Javascript js ) + { + return Do_ ( js ); + } + public Funcall Do_ ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Funcall (arguments); + } + internal Funcall do_ ( Object expr, Javascript js ) + { + return Do_ ( expr, js ); + } + public Funcall Do_ ( Object expr, Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Funcall (arguments); + } + internal Funcall do_ ( Object expr, Object exprA, Javascript js ) + { + return Do_ ( expr, exprA, js ); + } + public Funcall Do_ ( Object expr, Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Funcall (arguments); + } + internal Funcall do_ ( Object expr, Object exprA, Object exprB, Javascript js ) + { + return Do_ ( expr, exprA, exprB, js ); + } + public Funcall Do_ ( Object expr, Object exprA, Object exprB, ReqlFunction3 func3 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func3); + return new Funcall (arguments); + } + internal Funcall do_ ( Object expr, Object exprA, Object exprB, ReqlFunction3 func3 ) + { + return Do_ ( expr, exprA, exprB, func3 ); + } + public Funcall Do_ ( Object expr, Object exprA, ReqlFunction2 func2 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func2); + return new Funcall (arguments); + } + internal Funcall do_ ( Object expr, Object exprA, ReqlFunction2 func2 ) + { + return Do_ ( expr, exprA, func2 ); + } + public Funcall Do_ ( Object expr, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAddAll(exprs); + return new Funcall (arguments); + } + internal Funcall do_ ( Object expr, params object[] exprs ) + { + return Do_ ( expr, exprs ); + } + public Funcall Do_ ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Funcall (arguments); + } + internal Funcall do_ ( Object expr, ReqlFunction1 func1 ) + { + return Do_ ( expr, func1 ); + } + public Funcall Do_ ( ReqlFunction0 func0 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(func0); + return new Funcall (arguments); + } + internal Funcall do_ ( ReqlFunction0 func0 ) + { + return Do_ ( func0 ); + } +/// +/// Perform a branching conditional equivalent to if-then-else. +/// The branch command takes 2n+1 arguments: pairs of conditional expressions and commands to be executed if the conditionals return any value but false or null (i.e., "truthy" values), with a final "else" command to be evaluated if all of the conditionals are false or null. +/// +/// Example: Test the value of x. +/// var x = 10; +/// r.branch(r.expr(x).gt(5), 'big', 'small').run(conn, callback); +/// // Result passed to callback +/// "big" +/// + public Branch Branch ( Object expr, Object exprA, Object exprB, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAddAll(exprs); + return new Branch (arguments); + } + internal Branch branch ( Object expr, Object exprA, Object exprB, params object[] exprs ) + { + return Branch ( expr, exprA, exprB, exprs ); + } +/// +/// Compute the logical "or" of one or more values. +/// +/// Example: Return whether either a or b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).or(b).run(conn, callback); +/// // result passed to callback +/// true +/// + public Or Or ( params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAddAll(exprs); + return new Or (arguments); + } + internal Or or ( params object[] exprs ) + { + return Or ( exprs ); + } +/// +/// Compute the logical "and" of one or more values. +/// +/// Example: Return whether both a and b evaluate to true. +/// var a = true, b = false; +/// r.expr(a).and(b).run(conn, callback); +/// // result passed to callback +/// false +/// + public And And ( params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAddAll(exprs); + return new And (arguments); + } + internal And and ( params object[] exprs ) + { + return And ( exprs ); + } + public Asc Asc ( Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(js); + return new Asc (arguments); + } + internal Asc asc ( Javascript js ) + { + return Asc ( js ); + } + public Asc Asc ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Asc (arguments); + } + internal Asc asc ( Object expr ) + { + return Asc ( expr ); + } + public Asc Asc ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(func1); + return new Asc (arguments); + } + internal Asc asc ( ReqlFunction1 func1 ) + { + return Asc ( func1 ); + } + public Desc Desc ( Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(js); + return new Desc (arguments); + } + internal Desc desc ( Javascript js ) + { + return Desc ( js ); + } + public Desc Desc ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Desc (arguments); + } + internal Desc desc ( Object expr ) + { + return Desc ( expr ); + } + public Desc Desc ( ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(func1); + return new Desc (arguments); + } + internal Desc desc ( ReqlFunction1 func1 ) + { + return Desc ( func1 ); + } +/// +/// Get information about a ReQL value. +/// +/// Example: Get information about a table such as primary key, or cache size. +/// r.table('marvel').info().run(conn, callback) +/// + public Info Info ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Info (arguments); + } + internal Info info ( Object expr ) + { + return Info ( expr ); + } +/// +/// Parse a JSON string on the server. +/// +/// Example: Send an array to the server. +/// r.json("[1,2,3]").run(conn, callback) +/// + public Json Json ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Json (arguments); + } + internal Json json ( Object expr ) + { + return Json ( expr ); + } +/// +/// Create a time object based on an ISO 8601 date-time string (e.g. '2013-01-01T01:01:01+00:00'). RethinkDB supports all valid ISO 8601 formats except for week dates. Read more about the ISO 8601 format at Wikipedia. +/// +/// Example: Update the time of John's birth. +/// r.table("user").get("John").update({birth: r.ISO8601('1986-11-03T08:30:00-07:00')}).run(conn, callback) +/// + public Iso8601 Iso8601 ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Iso8601 (arguments); + } + internal Iso8601 iso8601 ( Object expr ) + { + return Iso8601 ( expr ); + } +/// +/// Create a time object based on seconds since epoch. The first argument is a double and +/// will be rounded to three decimal places (millisecond-precision). +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986. +/// r.table("user").get("John").update({birthdate: r.epochTime(531360000)}).run(conn, callback) +/// + public EpochTime EpochTime ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new EpochTime (arguments); + } + internal EpochTime epochTime ( Object expr ) + { + return EpochTime ( expr ); + } +/// +/// Return a time object representing the current time in UTC. The command now() is computed once when the server receives the query, so multiple instances of r.now() will always return the same time inside a query. +/// +/// Example: Add a new user with the time at which he subscribed. +/// r.table("users").insert({ +/// name: "John", +/// subscription_date: r.now() +/// }).run(conn, callback) +/// + public Now Now ( ) + { + Arguments arguments = new Arguments(); + return new Now (arguments); + } + internal Now now ( ) + { + return Now ( ); + } +/// +/// Create a time object for a specific time. +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986 UTC. +/// r.table("user").get("John").update({birthdate: r.time(1986, 11, 3, 'Z')}).run(conn, callback) +/// + public Time Time ( Object expr, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Time (arguments); + } + internal Time time ( Object expr, Object exprA, Object exprB, Object exprC ) + { + return Time ( expr, exprA, exprB, exprC ); + } +/// +/// Create a time object for a specific time. +/// +/// Example: Update the birthdate of the user "John" to November 3rd, 1986 UTC. +/// r.table("user").get("John").update({birthdate: r.time(1986, 11, 3, 'Z')}).run(conn, callback) +/// + public Time Time ( Object expr, Object exprA, Object exprB, Object exprC, Object exprD, Object exprE, Object exprF ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(exprD); + arguments.CoerceAndAdd(exprE); + arguments.CoerceAndAdd(exprF); + return new Time (arguments); + } + internal Time time ( Object expr, Object exprA, Object exprB, Object exprC, Object exprD, Object exprE, Object exprF ) + { + return Time ( expr, exprA, exprB, exprC, exprD, exprE, exprF ); + } + public Monday Monday ( ) + { + Arguments arguments = new Arguments(); + return new Monday (arguments); + } + internal Monday monday ( ) + { + return Monday ( ); + } + public Tuesday Tuesday ( ) + { + Arguments arguments = new Arguments(); + return new Tuesday (arguments); + } + internal Tuesday tuesday ( ) + { + return Tuesday ( ); + } + public Wednesday Wednesday ( ) + { + Arguments arguments = new Arguments(); + return new Wednesday (arguments); + } + internal Wednesday wednesday ( ) + { + return Wednesday ( ); + } + public Thursday Thursday ( ) + { + Arguments arguments = new Arguments(); + return new Thursday (arguments); + } + internal Thursday thursday ( ) + { + return Thursday ( ); + } + public Friday Friday ( ) + { + Arguments arguments = new Arguments(); + return new Friday (arguments); + } + internal Friday friday ( ) + { + return Friday ( ); + } + public Saturday Saturday ( ) + { + Arguments arguments = new Arguments(); + return new Saturday (arguments); + } + internal Saturday saturday ( ) + { + return Saturday ( ); + } + public Sunday Sunday ( ) + { + Arguments arguments = new Arguments(); + return new Sunday (arguments); + } + internal Sunday sunday ( ) + { + return Sunday ( ); + } + public January January ( ) + { + Arguments arguments = new Arguments(); + return new January (arguments); + } + internal January january ( ) + { + return January ( ); + } + public February February ( ) + { + Arguments arguments = new Arguments(); + return new February (arguments); + } + internal February february ( ) + { + return February ( ); + } + public March March ( ) + { + Arguments arguments = new Arguments(); + return new March (arguments); + } + internal March march ( ) + { + return March ( ); + } + public April April ( ) + { + Arguments arguments = new Arguments(); + return new April (arguments); + } + internal April april ( ) + { + return April ( ); + } + public May May ( ) + { + Arguments arguments = new Arguments(); + return new May (arguments); + } + internal May may ( ) + { + return May ( ); + } + public June June ( ) + { + Arguments arguments = new Arguments(); + return new June (arguments); + } + internal June june ( ) + { + return June ( ); + } + public July July ( ) + { + Arguments arguments = new Arguments(); + return new July (arguments); + } + internal July july ( ) + { + return July ( ); + } + public August August ( ) + { + Arguments arguments = new Arguments(); + return new August (arguments); + } + internal August august ( ) + { + return August ( ); + } + public September September ( ) + { + Arguments arguments = new Arguments(); + return new September (arguments); + } + internal September september ( ) + { + return September ( ); + } + public October October ( ) + { + Arguments arguments = new Arguments(); + return new October (arguments); + } + internal October october ( ) + { + return October ( ); + } + public November November ( ) + { + Arguments arguments = new Arguments(); + return new November (arguments); + } + internal November november ( ) + { + return November ( ); + } + public December December ( ) + { + Arguments arguments = new Arguments(); + return new December (arguments); + } + internal December december ( ) + { + return December ( ); + } +/// +/// Replace an object in a field instead of merging it with an existing object in a merge or update operation. Using literal with no arguments in a merge or update operation will remove the corresponding field. +/// +/// Example: Replace one nested document with another rather than merging the fields. +/// r.table('users').get(1).update({ data: r.literal({ age: 19, job: 'Engineer' }) }).run(conn, callback) +/// +/// // Result passed to callback +/// { +/// "id": 1, +/// "name": "Alice", +/// "data": { +/// "age": 19, +/// "job": "Engineer" +/// } +/// } +/// + public Literal Literal ( ) + { + Arguments arguments = new Arguments(); + return new Literal (arguments); + } + internal Literal literal ( ) + { + return Literal ( ); + } +/// +/// Replace an object in a field instead of merging it with an existing object in a merge or update operation. Using literal with no arguments in a merge or update operation will remove the corresponding field. +/// +/// Example: Replace one nested document with another rather than merging the fields. +/// r.table('users').get(1).update({ data: r.literal({ age: 19, job: 'Engineer' }) }).run(conn, callback) +/// +/// // Result passed to callback +/// { +/// "id": 1, +/// "name": "Alice", +/// "data": { +/// "age": 19, +/// "job": "Engineer" +/// } +/// } +/// + public Literal Literal ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Literal (arguments); + } + internal Literal literal ( Object expr ) + { + return Literal ( expr ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Group (arguments); + } + internal Group group ( Object expr ) + { + return Group ( expr ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js ) + { + return Group ( expr, js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Javascript jsA ) + { + return Group ( expr, js, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Javascript jsA, Javascript jsB ) + { + return Group ( expr, js, jsA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(jsC); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Javascript jsC ) + { + return Group ( expr, js, jsA, jsB, jsC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + arguments.CoerceAndAdd(exprA); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Javascript jsA, Javascript jsB, Object exprA ) + { + return Group ( expr, js, jsA, jsB, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Javascript jsA, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Javascript jsA, Object exprA ) + { + return Group ( expr, js, jsA, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Javascript jsA, Object exprA, Javascript jsB ) + { + return Group ( expr, js, jsA, exprA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Javascript jsA, Object exprA, Object exprB ) + { + return Group ( expr, js, jsA, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Object exprA ) + { + return Group ( expr, js, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Object exprA, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Object exprA, Javascript jsA ) + { + return Group ( expr, js, exprA, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Object exprA, Javascript jsA, Javascript jsB ) + { + return Group ( expr, js, exprA, jsA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Object exprA, Javascript jsA, Object exprB ) + { + return Group ( expr, js, exprA, jsA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Object exprA, Object exprB ) + { + return Group ( expr, js, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Object exprA, Object exprB, Javascript jsA ) + { + return Group ( expr, js, exprA, exprB, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Javascript js, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments); + } + internal Group group ( Object expr, Javascript js, Object exprA, Object exprB, Object exprC ) + { + return Group ( expr, js, exprA, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA ) + { + return Group ( expr, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Javascript js ) + { + return Group ( expr, exprA, js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Javascript js, Javascript jsA ) + { + return Group ( expr, exprA, js, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(jsB); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Javascript js, Javascript jsA, Javascript jsB ) + { + return Group ( expr, exprA, js, jsA, jsB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Javascript js, Javascript jsA, Object exprB ) + { + return Group ( expr, exprA, js, jsA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Javascript js, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Javascript js, Object exprB ) + { + return Group ( expr, exprA, js, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(jsA); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Javascript js, Object exprB, Javascript jsA ) + { + return Group ( expr, exprA, js, exprB, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Javascript js, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Javascript js, Object exprB, Object exprC ) + { + return Group ( expr, exprA, js, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB ) + { + return Group ( expr, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, Javascript js ) + { + return Group ( expr, exprA, exprB, js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(jsA); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, Javascript js, Javascript jsA ) + { + return Group ( expr, exprA, exprB, js, jsA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, Javascript js, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(js); + arguments.CoerceAndAdd(exprC); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, Javascript js, Object exprC ) + { + return Group ( expr, exprA, exprB, js, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, Object exprC ) + { + return Group ( expr, exprA, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, Object exprC, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(js); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, Object exprC, Javascript js ) + { + return Group ( expr, exprA, exprB, exprC, js ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, Object exprC, Object exprD ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(exprD); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, Object exprC, Object exprD ) + { + return Group ( expr, exprA, exprB, exprC, exprD ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + arguments.CoerceAndAdd(func1); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, Object exprC, ReqlFunction1 func1 ) + { + return Group ( expr, exprA, exprB, exprC, func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1 ) + { + return Group ( expr, exprA, exprB, func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprC); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, Object exprC ) + { + return Group ( expr, exprA, exprB, func1, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, Object exprB, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Group ( expr, exprA, exprB, func1, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, ReqlFunction1 func1 ) + { + return Group ( expr, exprA, func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB ) + { + return Group ( expr, exprA, func1, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, Object exprC ) + { + return Group ( expr, exprA, func1, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, ReqlFunction1 func1, Object exprB, ReqlFunction1 func1A ) + { + return Group ( expr, exprA, func1, exprB, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Group ( expr, exprA, func1, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprB ) + { + return Group ( expr, exprA, func1, func1A, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Group (arguments); + } + internal Group group ( Object expr, Object exprA, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Group ( expr, exprA, func1, func1A, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1 ) + { + return Group ( expr, func1 ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, Object exprA ) + { + return Group ( expr, func1, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB ) + { + return Group ( expr, func1, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(exprC); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, Object exprC ) + { + return Group ( expr, func1, exprA, exprB, exprC ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAdd(func1A); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, Object exprA, Object exprB, ReqlFunction1 func1A ) + { + return Group ( expr, func1, exprA, exprB, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A ) + { + return Group ( expr, func1, exprA, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, Object exprB ) + { + return Group ( expr, func1, exprA, func1A, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, Object exprA, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Group ( expr, func1, exprA, func1A, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A ) + { + return Group ( expr, func1, func1A ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA ) + { + return Group ( expr, func1, func1A, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, Object exprB ) + { + return Group ( expr, func1, func1A, exprA, exprB ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(func1B); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, Object exprA, ReqlFunction1 func1B ) + { + return Group ( expr, func1, func1A, exprA, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B ) + { + return Group ( expr, func1, func1A, func1B ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(exprA); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, Object exprA ) + { + return Group ( expr, func1, func1A, func1B, exprA ); + } +/// +/// Takes a stream and partitions it into multiple groups based on the +/// fields or functions provided. +/// +/// Example: Group games by player. +/// > r.table('games').group('player').run(conn, callback) +/// +/// // Result passed to callback +/// [ +/// { +/// group: "Alice", +/// reduction: [ +/// {id: 5, player: "Alice", points: 7, type: "free"}, +/// {id: 12, player: "Alice", points: 2, type: "free"} +/// ] +/// }, +/// { +/// group: "Bob", +/// reduction: [ +/// {id: 2, player: "Bob", points: 15, type: "ranked"}, +/// {id: 11, player: "Bob", points: 10, type: "free"} +/// ] +/// } +/// ] +/// + public Group Group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + arguments.CoerceAndAdd(func1A); + arguments.CoerceAndAdd(func1B); + arguments.CoerceAndAdd(func1C); + return new Group (arguments); + } + internal Group group ( Object expr, ReqlFunction1 func1, ReqlFunction1 func1A, ReqlFunction1 func1B, ReqlFunction1 func1C ) + { + return Group ( expr, func1, func1A, func1B, func1C ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Sum (arguments); + } + internal Sum sum ( Object expr ) + { + return Sum ( expr ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Sum (arguments); + } + internal Sum sum ( Object expr, Javascript js ) + { + return Sum ( expr, js ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Sum (arguments); + } + internal Sum sum ( Object expr, Object exprA ) + { + return Sum ( expr, exprA ); + } +/// +/// Sums all the elements of a sequence. If called with a field name, +/// sums all the values of that field in the sequence, skipping elements +/// of the sequence that lack that field. If called with a function, +/// calls that function on every element of the sequence and sums the +/// results, skipping elements of the sequence where that function returns +/// null or a non-existence error. +/// +/// Example: What's 3 + 5 + 7? +/// r.expr([3, 5, 7]).sum().run(conn, callback) +/// + public Sum Sum ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Sum (arguments); + } + internal Sum sum ( Object expr, ReqlFunction1 func1 ) + { + return Sum ( expr, func1 ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Avg (arguments); + } + internal Avg avg ( Object expr ) + { + return Avg ( expr ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Avg (arguments); + } + internal Avg avg ( Object expr, Javascript js ) + { + return Avg ( expr, js ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Avg (arguments); + } + internal Avg avg ( Object expr, Object exprA ) + { + return Avg ( expr, exprA ); + } +/// +/// Averages all the elements of a sequence. If called with a field name, +/// averages all the values of that field in the sequence, skipping +/// elements of the sequence that lack that field. If called with a +/// function, calls that function on every element of the sequence and +/// averages the results, skipping elements of the sequence where that +/// function returns null or a non-existence error. +/// +/// Example: What's the average of 3, 5, and 7? +/// r.expr([3, 5, 7]).avg().run(conn, callback) +/// + public Avg Avg ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Avg (arguments); + } + internal Avg avg ( Object expr, ReqlFunction1 func1 ) + { + return Avg ( expr, func1 ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Min (arguments); + } + internal Min min ( Object expr ) + { + return Min ( expr ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Min (arguments); + } + internal Min min ( Object expr, Javascript js ) + { + return Min ( expr, js ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Min (arguments); + } + internal Min min ( Object expr, Object exprA ) + { + return Min ( expr, exprA ); + } +/// +/// Finds the minimum element of a sequence. +/// +/// Example: Return the minimum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).min().run(conn, callback); +/// + public Min Min ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Min (arguments); + } + internal Min min ( Object expr, ReqlFunction1 func1 ) + { + return Min ( expr, func1 ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Max (arguments); + } + internal Max max ( Object expr ) + { + return Max ( expr ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( Object expr, Javascript js ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(js); + return new Max (arguments); + } + internal Max max ( Object expr, Javascript js ) + { + return Max ( expr, js ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Max (arguments); + } + internal Max max ( Object expr, Object exprA ) + { + return Max ( expr, exprA ); + } +/// +/// Finds the maximum element of a sequence. +/// +/// Example: Return the maximum value in the list [3, 5, 7]. +/// r.expr([3, 5, 7]).max().run(conn, callback); +/// + public Max Max ( Object expr, ReqlFunction1 func1 ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(func1); + return new Max (arguments); + } + internal Max max ( Object expr, ReqlFunction1 func1 ) + { + return Max ( expr, func1 ); + } +/// +/// Generate a random number between given (or implied) bounds. random takes zero, one or two arguments. +/// +/// Example: Generate a random number in the range [0,1) +/// r.random().run(conn, callback) +/// + public Random Random ( ) + { + Arguments arguments = new Arguments(); + return new Random (arguments); + } + internal Random random ( ) + { + return Random ( ); + } +/// +/// Generate a random number between given (or implied) bounds. random takes zero, one or two arguments. +/// +/// Example: Generate a random number in the range [0,1) +/// r.random().run(conn, callback) +/// + public Random Random ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Random (arguments); + } + internal Random random ( Object expr ) + { + return Random ( expr ); + } +/// +/// Generate a random number between given (or implied) bounds. random takes zero, one or two arguments. +/// +/// Example: Generate a random number in the range [0,1) +/// r.random().run(conn, callback) +/// + public Random Random ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Random (arguments); + } + internal Random random ( Object expr, Object exprA ) + { + return Random ( expr, exprA ); + } +/// +/// r.args is a special term that's used to splice an array of arguments +/// into another term. This is useful when you want to call a variadic +/// term such as getAll with a set of arguments produced at runtime. +/// +/// Example: Get Alice and Bob from the table people. +/// r.table('people').getAll('Alice', 'Bob').run(conn, callback) +/// // or +/// r.table('people').getAll(r.args(['Alice', 'Bob'])).run(conn, callback) +/// + public Args Args ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Args (arguments); + } + internal Args args ( Object expr ) + { + return Args ( expr ); + } +/// +/// Encapsulate binary data within a query. +/// +/// Example: Save an avatar image to a existing user record. +/// var fs = require('fs'); +/// fs.readFile('./defaultAvatar.png', function (err, avatarImage) { +/// if (err) { +/// // Handle error +/// } +/// else { +/// r.table('users').get(100).update({ +/// avatar: avatarImage +/// }) +/// } +/// }); +/// + public Binary Binary ( Object expr ) + { + var byteArray = expr as byte[]; + if( byteArray != null ){ + return new Binary(byteArray); + } + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Binary (arguments); + } + internal Binary binary ( Object expr ) + { + return Binary ( expr ); + } +/// +/// Convert a GeoJSON object to a ReQL geometry object. +/// +/// Example: Convert a GeoJSON object to a ReQL geometry object. +/// var geoJson = { +/// 'type': 'Point', +/// 'coordinates': [ -122.423246, 37.779388 ] +/// }; +/// r.table('geo').insert({ +/// id: 'sfo', +/// name: 'San Francisco', +/// location: r.geojson(geoJson) +/// }).run(conn, callback); +/// + public Geojson Geojson ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Geojson (arguments); + } + internal Geojson geojson ( Object expr ) + { + return Geojson ( expr ); + } +/// +/// Construct a geometry object of type Point. The point is specified by two floating point numbers, the longitude (-180 to 180) and latitude (-90 to 90) of the point on a perfect sphere. See Geospatial support for more information on ReQL's coordinate system. +/// +/// Example: Define a point. +/// r.table('geo').insert({ +/// id: 1, +/// name: 'San Francisco', +/// location: r.point(-122.423246,37.779388) +/// }).run(conn, callback); +/// + public Point Point ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Point (arguments); + } + internal Point point ( Object expr, Object exprA ) + { + return Point ( expr, exprA ); + } +/// +/// Construct a geometry object of type Line. The line can be specified in one of two ways: +///
    +///
  • Two or more two-item arrays, specifying latitude and longitude numbers of the line's vertices;
  • +///
  • Two or more Point objects specifying the line's vertices.
  • +///
+///
+/// Example: Define a line. +/// r.table('geo').insert({ +/// id: 101, +/// route: r.line([-122.423246,37.779388], [-121.886420,37.329898]) +/// }).run(conn, callback); +/// + public Line Line ( Object expr, Object exprA, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAddAll(exprs); + return new Line (arguments); + } + internal Line line ( Object expr, Object exprA, params object[] exprs ) + { + return Line ( expr, exprA, exprs ); + } +/// +/// Construct a geometry object of type Polygon. The Polygon can be specified in one of two ways: +///
    +///
  • Three or more two-item arrays, specifying latitude and longitude numbers of the polygon's vertices;
  • +///
  • Three or more Point objects specifying the polygon's vertices.
  • +///
+///
+/// Example: Define a polygon. +/// r.table('geo').insert({ +/// id: 101, +/// rectangle: r.polygon( +/// [-122.423246,37.779388], +/// [-122.423246,37.329898], +/// [-121.886420,37.329898], +/// [-121.886420,37.779388] +/// ) +/// }).run(conn, callback); +/// + public Polygon Polygon ( Object expr, Object exprA, Object exprB, params object[] exprs ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + arguments.CoerceAndAddAll(exprs); + return new Polygon (arguments); + } + internal Polygon polygon ( Object expr, Object exprA, Object exprB, params object[] exprs ) + { + return Polygon ( expr, exprA, exprB, exprs ); + } +/// +/// Compute the distance between a point and another geometry object. At least one of the geometry objects specified must be a point. +/// +/// Example: Compute the distance between two points on the Earth in kilometers. +/// var point1 = r.point(-122.423246,37.779388); +/// var point2 = r.point(-117.220406,32.719464); +/// r.distance(point1, point2, {unit: 'km'}).run(conn, callback); +/// // result returned to callback +/// 734.1252496021841 +/// + public Distance Distance ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Distance (arguments); + } + internal Distance distance ( Object expr, Object exprA ) + { + return Distance ( expr, exprA ); + } +/// +/// Tests whether two geometry objects intersect with one another. When applied to a sequence of geometry objects, intersects acts as a filter, returning a sequence of objects from the sequence that intersect with the argument. +/// +/// Example: Is point2 within a 2000-meter circle around point1? +/// var point1 = r.point(-117.220406,32.719464); +/// var point2 = r.point(-117.206201,32.725186); +/// r.circle(point1, 2000).intersects(point2).run(conn, callback); +/// // result returned to callback +/// true +/// + public Intersects Intersects ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Intersects (arguments); + } + internal Intersects intersects ( Object expr, Object exprA ) + { + return Intersects ( expr, exprA ); + } +/// +/// Construct a circular line or polygon. A circle in RethinkDB is a polygon or line approximating a circle of a given radius around a given center, consisting of a specified number of vertices (default 32). +/// +/// Example: Define a circle. +/// r.table('geo').insert({ +/// id: 300, +/// name: 'Hayes Valley', +/// neighborhood: r.circle([-122.423246,37.779388], 1000) +/// }).run(conn, callback); +/// + public Circle Circle ( Object expr ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + return new Circle (arguments); + } + internal Circle circle ( Object expr ) + { + return Circle ( expr ); + } +/// +/// Construct a circular line or polygon. A circle in RethinkDB is a polygon or line approximating a circle of a given radius around a given center, consisting of a specified number of vertices (default 32). +/// +/// Example: Define a circle. +/// r.table('geo').insert({ +/// id: 300, +/// name: 'Hayes Valley', +/// neighborhood: r.circle([-122.423246,37.779388], 1000) +/// }).run(conn, callback); +/// + public Circle Circle ( Object expr, Object exprA ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + return new Circle (arguments); + } + internal Circle circle ( Object expr, Object exprA ) + { + return Circle ( expr, exprA ); + } +/// +/// Construct a circular line or polygon. A circle in RethinkDB is a polygon or line approximating a circle of a given radius around a given center, consisting of a specified number of vertices (default 32). +/// +/// Example: Define a circle. +/// r.table('geo').insert({ +/// id: 300, +/// name: 'Hayes Valley', +/// neighborhood: r.circle([-122.423246,37.779388], 1000) +/// }).run(conn, callback); +/// + public Circle Circle ( Object expr, Object exprA, Object exprB ) + { + Arguments arguments = new Arguments(); + arguments.CoerceAndAdd(expr); + arguments.CoerceAndAdd(exprA); + arguments.CoerceAndAdd(exprB); + return new Circle (arguments); + } + internal Circle circle ( Object expr, Object exprA, Object exprB ) + { + return Circle ( expr, exprA, exprB ); + } + public Minval Minval ( ) + { + Arguments arguments = new Arguments(); + return new Minval (arguments); + } + internal Minval minval ( ) + { + return Minval ( ); + } + public Maxval Maxval ( ) + { + Arguments arguments = new Arguments(); + return new Maxval (arguments); + } + internal Maxval maxval ( ) + { + return Maxval ( ); + } + + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs.meta new file mode 100644 index 000000000..f95fd3fb0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/TopLevel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27d29af5ad292074c975b6ada89223a2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs new file mode 100644 index 000000000..1d8a5b17b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs @@ -0,0 +1,24 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; + +namespace RethinkDb.Driver.Model { + + public static class Unit { + public const string M = "m"; + public const string Km = "km"; + public const string Mi = "mi"; + public const string Nm = "nm"; + public const string Ft = "ft"; + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs.meta new file mode 100644 index 000000000..9556fec0c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Model/Unit.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3724622e92f844f45a631abbca18b0b7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto.meta new file mode 100644 index 000000000..041f72730 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 90797b80210c04047a0285767162f1a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs new file mode 100644 index 000000000..5f3c4ca27 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs @@ -0,0 +1,23 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum DatumType { + R_NULL = 1, + R_BOOL = 2, + R_NUM = 3, + R_STR = 4, + R_ARRAY = 5, + R_OBJECT = 6, + R_JSON = 7, + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs.meta new file mode 100644 index 000000000..18c6845d7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/DatumType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bdcf1058ce14b834cae326784d972e3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs new file mode 100644 index 000000000..3ac72864d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs @@ -0,0 +1,24 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum ErrorType { + INTERNAL = 1000000, + RESOURCE_LIMIT = 2000000, + QUERY_LOGIC = 3000000, + NON_EXISTENCE = 3100000, + OP_FAILED = 4100000, + OP_INDETERMINATE = 4200000, + USER = 5000000, + PERMISSION_ERROR = 6000000, + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs.meta new file mode 100644 index 000000000..dc78eff14 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ErrorType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 07f4fd0911724e84cb53f7531414dbe4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs new file mode 100644 index 000000000..68510b843 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs @@ -0,0 +1,18 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum FrameType { + POS = 1, + OPT = 2, + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs.meta new file mode 100644 index 000000000..742490e34 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/FrameType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e4448e3d9e402343821d3a11ec1d359 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs new file mode 100644 index 000000000..18de06562 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs @@ -0,0 +1,18 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum Protocol { + PROTOBUF = 656407617, + JSON = 2120839367, + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs.meta new file mode 100644 index 000000000..b3f0f5bc5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Protocol.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d65516c37759bb046bfc3f8605224893 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs new file mode 100644 index 000000000..9a7e39604 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum QueryType { + START = 1, + CONTINUE = 2, + STOP = 3, + NOREPLY_WAIT = 4, + SERVER_INFO = 5, + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs.meta new file mode 100644 index 000000000..cebb6f500 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/QueryType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a5f78a55189753f4098165053294b1ef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs new file mode 100644 index 000000000..90ded9fdb --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs @@ -0,0 +1,38 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum ResponseNote { + SEQUENCE_FEED = 1, + ATOM_FEED = 2, + ORDER_BY_LIMIT_FEED = 3, + UNIONED_FEED = 4, + INCLUDES_STATES = 5, + } + + + public static class ExtensionsForResponseNote { + public static bool IsFeed(this ResponseNote note){ + switch( note ){ + case ResponseNote.SEQUENCE_FEED: + return true; + case ResponseNote.ATOM_FEED: + return true; + case ResponseNote.ORDER_BY_LIMIT_FEED: + return true; + case ResponseNote.UNIONED_FEED: + return true; + default: + return false; + } + } + } + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs.meta new file mode 100644 index 000000000..89eea1b8a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseNote.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 29bd5d01a62b29048bfa5443a1c54a41 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs new file mode 100644 index 000000000..a884a49b9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs @@ -0,0 +1,39 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum ResponseType { + SUCCESS_ATOM = 1, + SUCCESS_SEQUENCE = 2, + SUCCESS_PARTIAL = 3, + WAIT_COMPLETE = 4, + SERVER_INFO = 5, + CLIENT_ERROR = 16, + COMPILE_ERROR = 17, + RUNTIME_ERROR = 18, + } + + + public static class ExtensionsForResponseType { + public static bool IsError(this ResponseType rtype){ + switch( rtype ){ + case ResponseType.CLIENT_ERROR: + return true; + case ResponseType.COMPILE_ERROR: + return true; + case ResponseType.RUNTIME_ERROR: + return true; + default: + return false; + } + } + } + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs.meta new file mode 100644 index 000000000..e4fe74197 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/ResponseType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f4b0e56dd6834344aa19789c2ffd21c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs new file mode 100644 index 000000000..ed1aaf8dd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs @@ -0,0 +1,194 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum TermType { + DATUM = 1, + MAKE_ARRAY = 2, + MAKE_OBJ = 3, + VAR = 10, + JAVASCRIPT = 11, + UUID = 169, + HTTP = 153, + ERROR = 12, + IMPLICIT_VAR = 13, + DB = 14, + TABLE = 15, + GET = 16, + GET_ALL = 78, + EQ = 17, + NE = 18, + LT = 19, + LE = 20, + GT = 21, + GE = 22, + NOT = 23, + ADD = 24, + SUB = 25, + MUL = 26, + DIV = 27, + MOD = 28, + FLOOR = 183, + CEIL = 184, + ROUND = 185, + APPEND = 29, + PREPEND = 80, + DIFFERENCE = 95, + SET_INSERT = 88, + SET_INTERSECTION = 89, + SET_UNION = 90, + SET_DIFFERENCE = 91, + SLICE = 30, + SKIP = 70, + LIMIT = 71, + OFFSETS_OF = 87, + CONTAINS = 93, + GET_FIELD = 31, + KEYS = 94, + VALUES = 186, + OBJECT = 143, + HAS_FIELDS = 32, + WITH_FIELDS = 96, + PLUCK = 33, + WITHOUT = 34, + MERGE = 35, + BETWEEN_DEPRECATED = 36, + BETWEEN = 182, + REDUCE = 37, + MAP = 38, + FOLD = 187, + FILTER = 39, + CONCAT_MAP = 40, + ORDER_BY = 41, + DISTINCT = 42, + COUNT = 43, + IS_EMPTY = 86, + UNION = 44, + NTH = 45, + BRACKET = 170, + INNER_JOIN = 48, + OUTER_JOIN = 49, + EQ_JOIN = 50, + ZIP = 72, + RANGE = 173, + INSERT_AT = 82, + DELETE_AT = 83, + CHANGE_AT = 84, + SPLICE_AT = 85, + COERCE_TO = 51, + TYPE_OF = 52, + UPDATE = 53, + DELETE = 54, + REPLACE = 55, + INSERT = 56, + DB_CREATE = 57, + DB_DROP = 58, + DB_LIST = 59, + TABLE_CREATE = 60, + TABLE_DROP = 61, + TABLE_LIST = 62, + CONFIG = 174, + STATUS = 175, + WAIT = 177, + RECONFIGURE = 176, + REBALANCE = 179, + SYNC = 138, + GRANT = 188, + INDEX_CREATE = 75, + INDEX_DROP = 76, + INDEX_LIST = 77, + INDEX_STATUS = 139, + INDEX_WAIT = 140, + INDEX_RENAME = 156, + FUNCALL = 64, + BRANCH = 65, + OR = 66, + AND = 67, + FOR_EACH = 68, + FUNC = 69, + ASC = 73, + DESC = 74, + INFO = 79, + MATCH = 97, + UPCASE = 141, + DOWNCASE = 142, + SAMPLE = 81, + DEFAULT = 92, + JSON = 98, + TO_JSON_STRING = 172, + ISO8601 = 99, + TO_ISO8601 = 100, + EPOCH_TIME = 101, + TO_EPOCH_TIME = 102, + NOW = 103, + IN_TIMEZONE = 104, + DURING = 105, + DATE = 106, + TIME_OF_DAY = 126, + TIMEZONE = 127, + YEAR = 128, + MONTH = 129, + DAY = 130, + DAY_OF_WEEK = 131, + DAY_OF_YEAR = 132, + HOURS = 133, + MINUTES = 134, + SECONDS = 135, + TIME = 136, + MONDAY = 107, + TUESDAY = 108, + WEDNESDAY = 109, + THURSDAY = 110, + FRIDAY = 111, + SATURDAY = 112, + SUNDAY = 113, + JANUARY = 114, + FEBRUARY = 115, + MARCH = 116, + APRIL = 117, + MAY = 118, + JUNE = 119, + JULY = 120, + AUGUST = 121, + SEPTEMBER = 122, + OCTOBER = 123, + NOVEMBER = 124, + DECEMBER = 125, + LITERAL = 137, + GROUP = 144, + SUM = 145, + AVG = 146, + MIN = 147, + MAX = 148, + SPLIT = 149, + UNGROUP = 150, + RANDOM = 151, + CHANGES = 152, + ARGS = 154, + BINARY = 155, + GEOJSON = 157, + TO_GEOJSON = 158, + POINT = 159, + LINE = 160, + POLYGON = 161, + DISTANCE = 162, + INTERSECTS = 163, + INCLUDES = 164, + CIRCLE = 165, + GET_INTERSECTING = 166, + FILL = 167, + GET_NEAREST = 168, + POLYGON_SUB = 171, + MINVAL = 180, + MAXVAL = 181, + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs.meta new file mode 100644 index 000000000..a55cbfde0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/TermType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 134ea8c5132d03247bf99dc5204a5cdd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs new file mode 100644 index 000000000..2c8872855 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs @@ -0,0 +1,21 @@ + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +namespace RethinkDb.Driver.Proto { + public enum Version { + V0_1 = 1063369270, + V0_2 = 1915781601, + V0_3 = 1601562686, + V0_4 = 1074539808, + V1_0 = 885177795, + } + + + +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs.meta new file mode 100644 index 000000000..feffa6cb7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/Proto/Version.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d4e71351150da594e9a554de5f4f045b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs new file mode 100644 index 000000000..60e1019df --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlAuthError : ReqlDriverError { + + + public ReqlAuthError () { + } + + public ReqlAuthError (Exception e) : this(e.Message, e) { + } + + public ReqlAuthError (string message) : base(message) + { + } + + public ReqlAuthError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs.meta new file mode 100644 index 000000000..bb56d0e5c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAuthError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d16241034941c794c918822f51be1e69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs new file mode 100644 index 000000000..a2e78127c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlAvailabilityError : ReqlRuntimeError { + + + public ReqlAvailabilityError () { + } + + public ReqlAvailabilityError (Exception e) : this(e.Message, e) { + } + + public ReqlAvailabilityError (string message) : base(message) + { + } + + public ReqlAvailabilityError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs.meta new file mode 100644 index 000000000..e9718ad35 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlAvailabilityError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d16b7e8c7c0d4034f84bc7c899ac4d50 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs new file mode 100644 index 000000000..e05ab63d3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlClientError : ReqlError { + + + public ReqlClientError () { + } + + public ReqlClientError (Exception e) : this(e.Message, e) { + } + + public ReqlClientError (string message) : base(message) + { + } + + public ReqlClientError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs.meta new file mode 100644 index 000000000..757001bbc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlClientError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6fc9caf75d71f89488691c86df9ecc19 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs new file mode 100644 index 000000000..695b51788 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlCompileError : ReqlError { + + + public ReqlCompileError () { + } + + public ReqlCompileError (Exception e) : this(e.Message, e) { + } + + public ReqlCompileError (string message) : base(message) + { + } + + public ReqlCompileError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs.meta new file mode 100644 index 000000000..b22dc03f3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlCompileError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a0df3e128d5dd4b43a86eead596c7ca3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs new file mode 100644 index 000000000..5cb52714b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlDriverCompileError : ReqlCompileError { + + + public ReqlDriverCompileError () { + } + + public ReqlDriverCompileError (Exception e) : this(e.Message, e) { + } + + public ReqlDriverCompileError (string message) : base(message) + { + } + + public ReqlDriverCompileError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs.meta new file mode 100644 index 000000000..c61cecc2a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverCompileError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cf013fb25395af54784ec8383adb0a3f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs new file mode 100644 index 000000000..8d4a03fee --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlDriverError : ReqlError { + + + public ReqlDriverError () { + } + + public ReqlDriverError (Exception e) : this(e.Message, e) { + } + + public ReqlDriverError (string message) : base(message) + { + } + + public ReqlDriverError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs.meta new file mode 100644 index 000000000..1b80fa816 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlDriverError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2e1b7841f2d2ec44c861df6435065aff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs new file mode 100644 index 000000000..aa4aa5c82 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs @@ -0,0 +1,37 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlError : Exception { + + public Backtrace Backtrace { get; set; } + public ReqlAst Term { get; set; } + + public ReqlError () { + } + + public ReqlError (Exception e) : this(e.Message, e) { + } + + public ReqlError (string message) : base(message) + { + } + + public ReqlError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs.meta new file mode 100644 index 000000000..8558f825a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 79abf4c9eda7e024aab7cbb393c1f62d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs new file mode 100644 index 000000000..ee3f972d3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlInternalError : ReqlRuntimeError { + + + public ReqlInternalError () { + } + + public ReqlInternalError (Exception e) : this(e.Message, e) { + } + + public ReqlInternalError (string message) : base(message) + { + } + + public ReqlInternalError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs.meta new file mode 100644 index 000000000..7d7d7e606 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlInternalError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e2a07f33c02dea4e844736791f9d4a3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs new file mode 100644 index 000000000..b3ca38d3c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlNonExistenceError : ReqlQueryLogicError { + + + public ReqlNonExistenceError () { + } + + public ReqlNonExistenceError (Exception e) : this(e.Message, e) { + } + + public ReqlNonExistenceError (string message) : base(message) + { + } + + public ReqlNonExistenceError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs.meta new file mode 100644 index 000000000..50aa73ece --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlNonExistenceError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2dc9ae2f9bd914b4a889a761b148243c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs new file mode 100644 index 000000000..8228586bc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlOpFailedError : ReqlAvailabilityError { + + + public ReqlOpFailedError () { + } + + public ReqlOpFailedError (Exception e) : this(e.Message, e) { + } + + public ReqlOpFailedError (string message) : base(message) + { + } + + public ReqlOpFailedError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs.meta new file mode 100644 index 000000000..6909003de --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpFailedError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 59ea100148e58ac4794a9d2b7f170f4a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs new file mode 100644 index 000000000..97be77924 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlOpIndeterminateError : ReqlAvailabilityError { + + + public ReqlOpIndeterminateError () { + } + + public ReqlOpIndeterminateError (Exception e) : this(e.Message, e) { + } + + public ReqlOpIndeterminateError (string message) : base(message) + { + } + + public ReqlOpIndeterminateError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs.meta new file mode 100644 index 000000000..60c119b59 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlOpIndeterminateError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7fc5d52b23c389a4380abbe008032bdb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs new file mode 100644 index 000000000..3425e804e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlPermissionError : ReqlRuntimeError { + + + public ReqlPermissionError () { + } + + public ReqlPermissionError (Exception e) : this(e.Message, e) { + } + + public ReqlPermissionError (string message) : base(message) + { + } + + public ReqlPermissionError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs.meta new file mode 100644 index 000000000..7b7f591bc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlPermissionError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a9a4fad0ad950b045b2464d3c4527f7e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs new file mode 100644 index 000000000..c02e4966e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlQueryLogicError : ReqlRuntimeError { + + + public ReqlQueryLogicError () { + } + + public ReqlQueryLogicError (Exception e) : this(e.Message, e) { + } + + public ReqlQueryLogicError (string message) : base(message) + { + } + + public ReqlQueryLogicError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs.meta new file mode 100644 index 000000000..0229209f5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlQueryLogicError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 74ee322b34898ba4297dfdc49e7450dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs new file mode 100644 index 000000000..c510be03d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlResourceLimitError : ReqlRuntimeError { + + + public ReqlResourceLimitError () { + } + + public ReqlResourceLimitError (Exception e) : this(e.Message, e) { + } + + public ReqlResourceLimitError (string message) : base(message) + { + } + + public ReqlResourceLimitError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs.meta new file mode 100644 index 000000000..8fe68867e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlResourceLimitError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9002b5e2ff60f6043bf18987e718412a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs new file mode 100644 index 000000000..827e5324f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlRuntimeError : ReqlError { + + + public ReqlRuntimeError () { + } + + public ReqlRuntimeError (Exception e) : this(e.Message, e) { + } + + public ReqlRuntimeError (string message) : base(message) + { + } + + public ReqlRuntimeError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs.meta new file mode 100644 index 000000000..b991bf38c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlRuntimeError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05dc9c473d023ec42b24043e46b41122 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs new file mode 100644 index 000000000..eec9f632b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlServerCompileError : ReqlCompileError { + + + public ReqlServerCompileError () { + } + + public ReqlServerCompileError (Exception e) : this(e.Message, e) { + } + + public ReqlServerCompileError (string message) : base(message) + { + } + + public ReqlServerCompileError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs.meta new file mode 100644 index 000000000..5d59494d1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlServerCompileError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b2f6abe31f423a4d99c10847e11b199 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs new file mode 100644 index 000000000..fb6ad88ac --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs @@ -0,0 +1,35 @@ + + + + +//AUTOGENERATED, DO NOTMODIFY. +//Do not edit this file directly. + +#pragma warning disable 1591 +// ReSharper disable CheckNamespace + +using System; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver { + public class ReqlUserError : ReqlRuntimeError { + + + public ReqlUserError () { + } + + public ReqlUserError (Exception e) : this(e.Message, e) { + } + + public ReqlUserError (string message) : base(message) + { + } + + public ReqlUserError (string message, Exception innerException) : base(message, innerException) + { + } + + + } +} diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs.meta new file mode 100644 index 000000000..d5a88be45 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Generated/ReqlUserError.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba09d36b394fa824394f601de18c78d0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs new file mode 100644 index 000000000..10e2bed28 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs @@ -0,0 +1,116 @@ +using System; +using System.Text; + +using Microsoft.Extensions.Logging; + +namespace RethinkDb.Driver +{ + /// + /// Logger class for the driver. + /// + public static class Log + { + /// + /// RethinkDB Logger + /// + public static ILogger Instance = null; + + /// + /// Returns true if trace log level is enabled. + /// + public static bool IsTraceEnabled + { + get + { + return Instance?.IsEnabled(LogLevel.Trace) ?? false; + } + } + + /// + /// Returns true if debug log level is enabled. + /// + public static bool IsDebugEnabled + { + get + { + return Instance?.IsEnabled(LogLevel.Debug) ?? false; + } + } + + + /// + /// Trace message + /// + public static void Trace(string msg) + { + if( IsTraceEnabled ) + { + Instance?.LogDebug(Filter(msg)); + } + } + + /// + /// Debug message + /// + public static void Debug(string msg) + { + + if( IsDebugEnabled ) + { + Instance?.LogDebug(Filter(msg)); + } + } + + /// + /// Enables RehtinkDB Driver Logging + /// + public static void EnableRethinkDbLogging(this ILoggerFactory loggerFactory) + { + Instance = loggerFactory.CreateLogger("RethinkDb.Driver"); + } + + /// + /// Truncates BASE64 responses to make logs easier to read. Default true. + /// + public static bool TruncateBinaryTypes = true; + + internal static string Filter(string msg) + { + const string BinaryStart = @"{""$reql_type$"":""BINARY"",""data"":"""; + const string BinaryEnd = @"""}"; + + if ( TruncateBinaryTypes ) + { + int bookmark = 0; + + StringBuilder sb = null; + while ( bookmark < msg.Length ) + { + var match = msg.IndexOf(BinaryStart, bookmark, StringComparison.Ordinal); + if( match == -1 && sb == null) + { + return msg; + } + if( match != -1 && sb == null ) + { + sb = new StringBuilder(); + } + if( match == -1 && sb != null ) + { + sb.Append(msg.Substring(bookmark)); + return sb.ToString(); + } + var end = msg.IndexOf(BinaryEnd, match, StringComparison.Ordinal); + + + sb.Append(msg.Substring(bookmark, (match + BinaryStart.Length) - bookmark )); + sb.Append("BASE64_STRING_TRUNCATED_BY_LOG"); + sb.Append(msg.Substring(end, BinaryEnd.Length)); + bookmark = end + BinaryEnd.Length; + } + } + + return msg; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs.meta new file mode 100644 index 000000000..514f30d55 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Log.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a59bdb303041d3c4b828fef330c534e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model.meta new file mode 100644 index 000000000..369615e87 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3b9259359f1341a4db6b0f48376daf8e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs new file mode 100644 index 000000000..4183896ca --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs @@ -0,0 +1,77 @@ +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Model +{ + public class Arguments : List + { + public Arguments() + { + } + + public Arguments(object arg) + { + var list = arg as IList; + if( list != null ) + { + this.CoerceAndAddAll(list); + } + else + { + this.CoerceAndAdd(arg); + } + } + + public Arguments(Arguments args) + { + this.AddRange(args); + } + + public Arguments(ReqlAst arg) + { + this.Add(arg); + } + + public Arguments(object[] args) + { + CoerceAndAddAll(args); + } + + public Arguments(IList args) + { + var ast = args.Select(Util.ToReqlAst); + this.AddRange(ast); + } + + public void CoerceAndAdd(object o) + { + this.Add(Util.ToReqlAst(o)); + } + + public void CoerceAndAddAll(object[] args) + { + CoerceAndAddAll(args as ICollection); + } + + public void CoerceAndAddAll(ICollection list) + { + foreach( var item in list ) + { + this.Add(Util.ToReqlAst(item)); + } + } + public void CoerceAndAddAll(ICollection list) + { + CoerceAndAddAll(list as ICollection); + } + + public static Arguments Make(params object[] args) + { + return new Arguments(args); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs.meta new file mode 100644 index 000000000..aed9b2d97 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Arguments.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7a6361c097b401a4a968784484049e65 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs new file mode 100644 index 000000000..f2308991f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs @@ -0,0 +1,25 @@ +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Model +{ + public class Backtrace + { + public JArray RawBacktrace { get; } + + private Backtrace(JArray rawBacktrace) + { + this.RawBacktrace = rawBacktrace; + } + + public static Backtrace FromJsonArray(JArray rawBacktrace) + { + if( rawBacktrace == null || rawBacktrace.Count == 0 ) + { + return null; + } + return new Backtrace(rawBacktrace); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs.meta new file mode 100644 index 000000000..4edd50afe --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Backtrace.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c0280ab9d22969845826b973b0619be9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs new file mode 100644 index 000000000..6bf6070c0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs @@ -0,0 +1,107 @@ +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Model +{ + /// + /// Change feed states + /// + public enum ChangeState + { + /// + /// {state: 'initializing'} indicates the following documents represent + /// initial values on the feed rather than changes. This will be the first + /// document of a feed that returns initial values. + /// + Initializing = 1, + + /// + /// {state: 'ready'} indicates the following documents represent changes. + /// This will be the first document of a feed that does not return initial + /// values; otherwise, it will indicate the initial values have all been sent. + /// + Ready + } + + /// + /// If the change feed query contains the include_types opt arg, every result on a changefeed + /// will include a type field with a string that indicates the kind of change the result + /// represents: add, remove, change, initial, uninitial, state. + /// + public enum ChangeType + { + /// + /// Document was added. + /// + Add, + /// + /// Document was removed + /// + Remove, + /// + /// Document was changed. + /// + Change, + /// + /// Initial document. + /// + Initial, + /// + /// If an initial result for a document has been sent and a change is made to that + /// document that would move it to the unsent part of the result set + /// (e.g., a changefeed monitors the top 100 posters, the first 50 have been sent, + /// and poster 48 has become poster 52), an 'uninitial' notification will be sent, + /// with an old_val field but no new_val field. + /// + Uninitial, + /// + /// A state document. + /// + State + } + + /// + /// Change Document Helper + /// + /// + public class Change + { + /// + /// When a document is deleted, new_val will be null; when a document is inserted, old_val will be null. + /// + [JsonProperty("old_val")] + public T OldValue { get; set; } + + /// + /// When a document is deleted, new_val will be null; when a document is inserted, old_val will be null. + /// + [JsonProperty("new_val")] + public T NewValue { get; set; } + + /// + /// If include_states = true optional argument was specified, the changefeed stream + /// will include special status documents consisting of the state + /// indicating a change in the feed’s state. These states can occur at any point + /// in the feed between the notifications. If includeStates = false (the default), + /// the state status will not be set. See . + /// + [JsonConverter(typeof(StringEnumConverter))] + public ChangeState? State { get; set; } + + /// + /// If an include_types opt arg is set, every result on a changefeed will include a type + /// field with a string that indicates the kind of change the result represents: + /// add, remove, change, initial, uninitial, state. + /// + [JsonConverter(typeof(StringEnumConverter))] + public ChangeType? Type { get; set; } + + /// + /// Extra metadata that couldn't be parsed, if any. + /// + [JsonExtensionData] + public IDictionary ExtraData { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs.meta new file mode 100644 index 000000000..1b50d40e5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Change[T].cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7dfde85157ad7174faf905003053c842 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs new file mode 100644 index 000000000..229370bba --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs @@ -0,0 +1,153 @@ +namespace RethinkDb.Driver.Model +{ + /// + /// Extension method Result helpers. + /// + public static class ExtensionsForResult + { + /// + /// Ensures no errors occurs during the processing of the result. + /// + /// Thrown when the assertion applies + public static Result AssertNoErrors(this Result result) + { + if( result.Errors > 0 ) + { + throw new ReqlAssertFailure(result.FirstError); + } + return result; + } + + /// + /// Ensures a number of deleted documents. + /// + /// Thrown when the assertion applies + public static Result AssertDeleted(this Result result, ulong deleted) + { + if( result.Deleted != deleted ) + { + throw AssertFail(nameof(AssertDeleted), result.Deleted, deleted); + } + + return result; + } + + /// + /// Ensures a number of inserted documents. + /// + /// Thrown when the assertion applies + public static Result AssertInserted(this Result result, ulong inserted) + { + if( result.Inserted != inserted ) + { + throw AssertFail(nameof(AssertInserted), result.Inserted, inserted); + } + + return result; + } + + /// + /// Ensures a number of replaced documents. + /// + /// Thrown when the assertion applies + public static Result AssertReplaced(this Result result, ulong replaced) + { + if( result.Replaced != replaced ) + { + throw AssertFail(nameof(AssertReplaced), result.Replaced, replaced); + } + + return result; + } + + /// + /// Ensures a number of skipped documents. + /// + /// Thrown when the assertion applies + public static Result AssertSkipped(this Result result, ulong skipped) + { + if( result.Skipped != skipped ) + { + throw AssertFail(nameof(AssertSkipped), result.Skipped, skipped); + } + + return result; + } + + /// + /// Ensures a number of unchanged documents. + /// + /// Thrown when the assertion applies + public static Result AssertUnchanged(this Result result, ulong unchanged) + { + if( result.Unchanged != unchanged ) + { + throw AssertFail(nameof(AssertUnchanged), result.Unchanged, unchanged); + } + + return result; + } + + /// + /// Ensures a number of tables created. + /// + /// Thrown when the assertion applies + public static Result AssertTablesCreated(this Result result, ulong tablesCreated) + { + if( result.TablesCreated != tablesCreated ) + { + throw AssertFail(nameof(AssertTablesCreated), result.TablesCreated, tablesCreated); + } + + return result; + } + + /// + /// Ensures a number of tables deleted. + /// + /// Thrown when the assertion applies + public static Result AssertTablesDropped(this Result result, ulong tablesDropped) + { + if( result.TablesDropped != tablesDropped ) + { + throw AssertFail(nameof(AssertTablesDropped), result.TablesDropped, tablesDropped); + } + + return result; + } + + /// + /// Ensures a number of databases created. + /// + /// Thrown when the assertion applies + public static Result AssertDatabasesCreated(this Result result, ulong databasesCreated) + { + if( result.DatabasesCreated != databasesCreated ) + { + throw AssertFail(nameof(AssertDatabasesCreated), result.DatabasesCreated, databasesCreated); + } + + return result; + } + + + /// + /// Ensures a number of databases deleted. + /// + /// Thrown when the assertion applies + public static Result AssertDatabasesDropped(this Result result, ulong databasesDropped) + { + if( result.DatabasesDropped != databasesDropped ) + { + throw AssertFail(nameof(AssertDatabasesDropped), result.DatabasesDropped, databasesDropped); + } + + return result; + } + + private static ReqlAssertFailure AssertFail(string op, ulong got, ulong expected) + { + return new ReqlAssertFailure($"The result was {got}, but {op} expected {expected}"); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs.meta new file mode 100644 index 000000000..deb477615 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ExtensionsForResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0f439e07981b4034f8962a0116bdfbeb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs new file mode 100644 index 000000000..8e9b33f40 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Net; + +namespace RethinkDb.Driver.Model +{ + /// + /// A grouped result helper. + /// + /// The KEY type + /// The VALUE type + public class GroupedResult : IGrouping + { +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + public GroupedResult(JToken key, JArray items) + { + this.Key = key.ToObject(Converter.Serializer); + this.Items = items.ToObject>(Converter.Serializer); + } + public GroupedResult(JToken key, JValue item) + { + this.Key = key.ToObject(Converter.Serializer); + var value = item.ToObject(Converter.Serializer); + this.Items = new List() {value}; + } + + public IEnumerator GetEnumerator() + { + return this.Items.GetEnumerator(); + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } +#pragma warning restore 1591 // Missing XML comment for publicly visible type or member + + /// + /// The Key + /// + public TKey Key { get; } + + /// + /// The list of items grouped by + /// + public List Items { get; set; } + } + + /// + /// A typed grouped result helper. + /// + /// The KEY type + /// The VALUE type + public class GroupedResultSet : List> + { + /// + /// Item type + /// + public Type ItemType => typeof(TItem); + + /// + /// Key type + /// + public Type KeyType => typeof(TKey); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs.meta new file mode 100644 index 000000000..71e2dfec1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/GroupedResult.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 30fc2d0c473e8c34e96cc204d81fb07e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs new file mode 100644 index 000000000..e3ca43755 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs @@ -0,0 +1,49 @@ +using System.Collections.Generic; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Model +{ + /// + /// Just a dictionary of (object,object) + /// + public class MapObject : Dictionary + { + /// + /// Fluent helper for setting dictionary[key] = value. + /// + public virtual MapObject With(object key, object value) + { + this[key] = value; + return this; + } + + internal virtual MapObject with(object key, object value) + { + return With(key, value); + } + + /// + /// Fluent helper for setting all key,value pairs of an anonymous type + /// and loading them into the MapObject. + /// + public virtual MapObject With(object anonType) + { + var anonDict = PropertyHelper.ObjectToDictionary(anonType); + foreach( var kvp in anonDict ) + { + this.With(kvp.Key, kvp.Value); + } + return this; + } + + /// + /// Creates a new MapObject from an anonymous type. + /// + internal static MapObject FromAnonType(object anonType) + { + var map = new MapObject(); + map.With(anonType); + return map; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs.meta new file mode 100644 index 000000000..619483e2b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/MapObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fa52891b17f130841b4afa7b4f2db01e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs new file mode 100644 index 000000000..ed7caf6d7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs @@ -0,0 +1,101 @@ +using System.Collections.Generic; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Model +{ + /// + /// Dictionary of string,ReqlAst + /// + public class OptArgs : Dictionary + { + /// + /// Fluent helper for setting dictionary[key] = value. + /// + public virtual OptArgs With(string key, object value) + { + if( key != null ) + { + this[key] = Util.ToReqlAst(value); + } + return this; + } + + internal OptArgs with(string key, object value) + { + return With(key, value); + } + + /// + /// Fluent helper for setting dictionary[key] = List. + /// + public virtual OptArgs With(string key, IList value) + { + if( key != null ) + { + this[key] = Util.ToReqlAst(value); + } + return this; + } + + internal virtual OptArgs with(string key, IList value) + { + return With(key, value); + } + + /// + /// Fluent helper for setting dictionary[key] = value multiple times + /// for each Property=Value in the anonType. + /// + public virtual OptArgs With(object anonType) + { + var anonDict = PropertyHelper.ObjectToDictionary(anonType); + foreach( var kvp in anonDict ) + { + this.with(kvp.Key, kvp.Value); + } + return this; + } + + internal virtual OptArgs with(object anonType) + { + return With(anonType); + } + + + /// + /// Fluent helper to copy all key value pairs from + /// + public virtual OptArgs With(OptArgs args) + { + foreach( var kvp in args ) + this.with(kvp.Key, kvp.Value); + + return this; + } + + + /// + /// Creates a new OptArg from all key value pairs in + /// + public static OptArgs FromMap(IDictionary map) + { + OptArgs oa = new OptArgs(); + + foreach( var kvp in map ) + oa.Add(kvp.Key, kvp.Value); + + return oa; + } + + /// + /// Creates a new OptArg from all Property = Value pairs in anonymous type. + /// + public static OptArgs FromAnonType(object anonType) + { + OptArgs oa = new OptArgs(); + oa.with(anonType); + + return oa; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs.meta new file mode 100644 index 000000000..a15ce6fae --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/OptArgs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 421ac9beb7bd91b4f823ee35f288d3b3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs new file mode 100644 index 000000000..720a14b9d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs @@ -0,0 +1,41 @@ +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + +using System; +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Model +{ + /* + r.path("contact", "phone", "work"); + r.path("contact", "phone", r.paths("work", "home")); + r.path("contact", + r.paths( + r.path("phone", + r.paths("work", "home")), + r.paths( + r.path("im", "skype")), + ); + + */ + + + //not sure what this is about.. so ignore it for now. + public class PathSpec + { + private readonly JObject root = new JObject(); + + private PathSpec() + { + } + + public virtual PathSpec path(string start, params PathSpec[] specs) + { + throw new Exception("not implemented"); + } + + public virtual PathSpec path(params string[] strings) + { + throw new Exception("not implemented"); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs.meta new file mode 100644 index 000000000..ff3966c6c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/PathSpec.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 51cc1e5d29e390d44aaccabec4192263 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs new file mode 100644 index 000000000..8a79f8b7d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs @@ -0,0 +1,25 @@ +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Model +{ + public class Profile + { + public Profile(JArray profileObj) + { + this.ProfileObj = profileObj; + } + + public JArray ProfileObj { get; } + + public static Profile FromJsonArray(JArray profileObj) + { + if( profileObj == null || profileObj.Count == 0 ) + { + return null; + } + return new Profile(profileObj); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs.meta new file mode 100644 index 000000000..673e9697c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Profile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b826fdf2446c89749bd5e39a6989c956 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs new file mode 100644 index 000000000..eda8357a1 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs @@ -0,0 +1,9 @@ +namespace RethinkDb.Driver.Model +{ + /// + /// Root function interface for a lambda expression. + /// + public interface ReqlLambda + { + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs.meta new file mode 100644 index 000000000..6ce632b14 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/ReqlLambda.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 04f768fe8816a41409c11796000d7eaf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs new file mode 100644 index 000000000..eff5e3f31 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs @@ -0,0 +1,102 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Model +{ + /// + /// A typed helper for reading response meta data. + /// + public class Result + { + /// + /// A list of generated primary keys for inserted documents whose primary keys were not specified (capped to 100,000). + /// + [JsonProperty("generated_keys")] + public Guid[] GeneratedKeys { get; set; } + + /// + /// The number of documents successfully inserted. + /// + public ulong Inserted { get; set; } + + /// + /// The number of documents updated when conflict is set to "replace" or "update". + /// + public ulong Replaced { get; set; } + + /// + /// The number of documents whose fields are identical to existing documents with the same primary key when conflict is set to "replace" or "update". + /// + public ulong Unchanged { get; set; } + + /// + /// The number of errors encountered while performing the insert. + /// + public ulong Errors { get; set; } + + /// + /// If errors were encountered, contains the text of the first error. + /// + [JsonProperty("first_error")] + public string FirstError { get; set; } + + /// + /// Deleted: 0 for an insert operation. + /// + public ulong Deleted { get; set; } + + /// + /// Skipped: 0 for an insert operation. + /// + public ulong Skipped { get; set; } + + /// + /// If the field generated_keys is truncated, you will get the warning “Too many generated keys (...), array truncated to 100000.”. + /// + public string[] Warnings { get; set; } + + /// + /// If returnChanges is set to true, this will be an array of objects, one for each objected affected by the insert operation. Each object will have two keys: {new_val: -new value-, old_val: null}. + /// + public JArray Changes { get; set; } + + /// + /// If the query had return_changes set, get the changes as . + /// + public Change[] ChangesAs() + { + return this.Changes?.ToObject[]>(Net.Converter.Serializer); + } + + + /// + /// The value is an integer indicating the number of tables waited for. It will always be 1 when wait is called on a table, and the total number of tables when called on a database. + /// + public uint? Ready { get; set; } //probably need to move this to something like AdminResult or DdlResult + + /// + /// The number of databases created. + /// + [JsonProperty("dbs_created")] + public uint DatabasesCreated { get; set; } + + /// + /// The number of databases dropped. + /// + [JsonProperty("dbs_dropped")] + public uint DatabasesDropped { get; set; } + + /// + /// The number of tables created. + /// + [JsonProperty("tables_created")] + public uint TablesCreated { get; set; } + + /// + /// The number of tables dropped. + /// + [JsonProperty("tables_dropped")] + public uint TablesDropped { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs.meta new file mode 100644 index 000000000..20e156bcd --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Result.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d254bda9f5abf774384e8d6d99cfe6d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs new file mode 100644 index 000000000..525a752c3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Net; + +namespace RethinkDb.Driver.Model +{ + /// + /// A type helper that represents the result of + /// and . + /// + public class Server + { + /// + /// The server's id + /// + public string Id { get; set; } + + /// + /// The server's name. + /// + public string Name { get; set; } + + /// + /// True if the driver is connected to a proxy server. False if the driver is + /// connected to a RethinkDB server. + /// + public bool Proxy { get; set; } + + /// + /// Extra metadata that couldn't be parsed, if any. + /// + [JsonExtensionData] + public IDictionary ExtraData { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs.meta new file mode 100644 index 000000000..b5c24937e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Model/Server.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a4dc9f03b1554c240b8d6dae0a6a14f8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net.meta new file mode 100644 index 000000000..a42e8e14b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc4665c24db118d4db66dbb2cfeea49f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs new file mode 100644 index 000000000..abfe9a027 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs @@ -0,0 +1,12 @@ +using System.Threading; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net +{ + internal class Awaiter : CancellableTask + { + public Awaiter(CancellationToken cancelToken) : base(cancelToken) + { + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs.meta new file mode 100644 index 000000000..669ae3f06 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Awaiter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b25e89a5a4d0a1a498c924472cdab6d9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering.meta new file mode 100644 index 000000000..f863d7df4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec7c030a04a13c94aad551c1f2dede7d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs new file mode 100644 index 000000000..24e1508c9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs @@ -0,0 +1,587 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net.Clustering +{ + /// + /// Represents a pooled connection to a RethinkDB cluster. + /// + public class ConnectionPool : IConnection + { + private string user; + private string password; + private string dbname; + private Seed[] seeds; + private bool discover; + private IPoolingStrategy poolingStrategy; + private TimeSpan? initialTimeout; + private SslContext sslContext; + + /// + /// The default database used by queries. + /// + public string Db => this.dbname; + + #region REQL AST RUNNERS + + Task IConnection.RunAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + if( this.shutdownSignal.IsCancellationRequested ) + { + throw new ReqlDriverError("HostPool is shutdown."); + } + return poolingStrategy.RunAsync(term, globalOpts, cancelToken); + } + + Task> IConnection.RunCursorAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + if( this.shutdownSignal.IsCancellationRequested ) + { + throw new ReqlDriverError("HostPool is shutdown."); + } + return poolingStrategy.RunCursorAsync(term, globalOpts, cancelToken); + } + + Task IConnection.RunAtomAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + if( this.shutdownSignal.IsCancellationRequested ) + { + throw new ReqlDriverError("HostPool is shutdown."); + } + return poolingStrategy.RunAtomAsync(term, globalOpts, cancelToken); + } + + Task IConnection.RunResultAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + if( this.shutdownSignal.IsCancellationRequested ) + { + throw new ReqlDriverError("HostPool is shutdown."); + } + return poolingStrategy.RunResultAsync(term, globalOpts, cancelToken); + } + + void IConnection.RunNoReply(ReqlAst term, object globalOpts) + { + if( this.shutdownSignal.IsCancellationRequested ) + { + throw new ReqlDriverError("HostPool is shutdown."); + } + poolingStrategy.RunNoReply(term, globalOpts); + } + + Task IConnection.RunUnsafeAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + if (this.shutdownSignal.IsCancellationRequested) + { + throw new ReqlDriverError("HostPool is shutdown."); + } + return poolingStrategy.RunUnsafeAsync(term, globalOpts, cancelToken); + } + + #endregion + + internal ConnectionPool(Builder builder) + { + user = builder.user ?? "admin"; + password = builder.password ?? builder.authKey ?? ""; + dbname = builder.dbname; + seeds = builder.seeds; + discover = builder.discover; + poolingStrategy = builder.hostpool; + initialTimeout = builder.initialTimeout; + sslContext = builder.sslContext; + } + + + /// + /// Shutdown the connection pool. + /// + public void Shutdown() + { + shutdownSignal?.Cancel(); + poolingStrategy?.Shutdown(); + + if( poolingStrategy != null ) + { + //shutdown all connections. + foreach( var h in poolingStrategy.HostList ) + { + var conn = h.conn as Connection; + conn.Close(false); + h.MarkFailed(); + } + } + } + + /// + /// Used to determine if a node is currently available in the host pool + /// to receive queries. The boolean value should be considered a "rough" estimate + /// of the availability of a node in the pool. This indicator may lag behind + /// as it does not check the exact state of every node's TCP socket. + /// + public bool AnyOpen => this.poolingStrategy.HostList.Any(h => !h.Dead); + + private CancellationTokenSource shutdownSignal; + private TaskCompletionSource poolReady; + + /// + /// Starts the connection pool. + /// + protected virtual void StartPool() + { + shutdownSignal = new CancellationTokenSource(); + poolReady = new TaskCompletionSource(); + + if( poolingStrategy == null ) + { + throw new ArgumentNullException(nameof(poolingStrategy), + $"You must specify a pooling strategy '{nameof(Builder.PoolingStrategy)}' when building the connection pool."); + } + + var initialSeeds = this.seeds.Select(seed => + { + var conn = NewPoolConnection(seed.IpAddress, seed.Port); + return new {conn, EndPointId = EndpointIdentifier(seed.IpAddress, seed.Port) }; + }); + + foreach( var conn in initialSeeds ) + { + this.poolingStrategy.AddHost(conn.EndPointId, conn.conn); + } + + Task.Factory.StartNew(Supervisor, TaskCreationOptions.LongRunning); + if( discover ) + { + Task.Factory.StartNew(Discoverer, TaskCreationOptions.LongRunning); + } + } + + /// + /// This thread is in charge of discovering new hosts via rethinkdb system + /// table change feed. If a new host is found it is added to the host pool. + /// + private void Discoverer() + { + var r = RethinkDB.R; + + var changeFeed = r.Db("rethinkdb").Table("server_status").Changes()[new {include_initial = true}]; + + while( true ) + { + if( shutdownSignal.IsCancellationRequested ) + { + Log.Debug($"{nameof(Discoverer)}: Shutdown Signal Received"); + break; + } + + try + { + poolReady.Task.Wait(); + } + catch + { + Log.Trace($"{nameof(Discoverer)}: Pool is not ready to discover new hosts."); + Thread.Sleep(1000); + } + + try + { + var cursor = changeFeed.RunChanges(this); + + foreach( var change in cursor ) + { + if( change.NewValue != null ) + { + MaybeAddNewHost(change.NewValue); + } + } + } + catch + { + Log.Trace($"{nameof(Discoverer)}: Discover change feed broke."); + Thread.Sleep(1000); + } + } + } + + /// + /// Called by the discoverer thread when a new server has been added (or comes back + /// online). This method will determine if AddHost is needed. We only have monotonically + /// increasing hosts to prevent unnecessary locking on the host list array. + /// + private void MaybeAddNewHost(Server server) + { + //Ok, could be initial or new host. + //either way, see if we need to add + //the connection if it has not been + //discovered. + var port = server.Network.ReqlPort; + + var realAddresses = server.Network.CanonicalAddress + .Where(s => // no localhost and no ipv6. for now. + !s.Host.StartsWith("127.0.0.1") && + !s.Host.Contains(":")) + .Select(c => c.Host); + + //now do any of the real + //addresses match the ones already in + //the host list? + var hlist = poolingStrategy.HostList; + + //has it been discovered? + if( !realAddresses.Any(ip => hlist.Any(s => s.Host.Contains(ip))) ) + { + //the host IP is not found, so, see if we can connect? + foreach( var ip in realAddresses ) + { + //can we connect to this IP? + var test = new TcpClient(); + try + { + test.Connect(ip, port); + } + catch + { + try + { + test.Shutdown(); + } + catch + { + } + continue; + } + if( test.Connected ) + { + test.Shutdown(); + //good chance we can connect to it. + var conn = NewPoolConnection(ip, port); + var endPointId = EndpointIdentifier(ip, port); + this.poolingStrategy.AddHost(endPointId, conn); + Log.Trace($"{nameof(Discoverer)}: Server '{server.Name}' ({endPointId}) was added to the host pool. The supervisor will bring up the connection later."); + break; //stop checking IPs, one is enough. + } + } + } + else + { + Log.Trace( + $"{nameof(Discoverer)}: Server '{server.Name}' is back, but doesn't need to be added to the pool. The supervisor will re-establish the connection later."); + } + } + + private string EndpointIdentifier(string ip, int port) + { + return $"{ip}:{port}"; + } + + /// + /// This thread is mainly in charge of supervising the connections. + /// The supervisor will kick off a worker to try to reconnect + /// connections that are due for reconnecting. It also scans though + /// the host list looking for connections that are not dead but have errors + /// and attempts to reset them. + /// + private void Supervisor() + { + var restartWorkers = new List(); + + while( true ) + { + if( shutdownSignal.IsCancellationRequested ) + { + Log.Debug($"{nameof(Supervisor)}: Shutdown Signal Received"); + break; + } + + var hlist = poolingStrategy.HostList; + + for( int i = 0; i < hlist.Length; i++ ) + { + var he = hlist[i]; + var conn = he.conn as Connection; + + if( he.NeedsRetry() ) + { + var worker = Task.Run(() => + { + try + { + conn.Reconnect(); + } + catch( Exception e ) + { + Log.Debug($"{nameof(Supervisor)}: EXCEPTION: '{he.Host}' -- {e.Message}."); + } + + if( conn.Open ) + { + Log.Debug($"{nameof(Supervisor)}: RETRY: Server '{he.Host}' is UP."); + he.Dead = false; + poolReady.TrySetResult(this); + } + else + { + Log.Debug($"{nameof(Supervisor)}: RETRY: Server '{he.Host}' is DOWN."); + he.RetryFailed(); + } + }); + + restartWorkers.Add(worker); + } + } + + if( restartWorkers.Any() ) + { + try + { + Task.WaitAll(restartWorkers.ToArray()); + } + catch{} + restartWorkers.Clear(); + } + else + { + Thread.Sleep(1000); + } + } + } + + /// + /// Called to create a new connection to a RethinkDB server. + /// + protected virtual Connection NewPoolConnection(string hostname, int port) + { + var connNew = new Connection(new Connection.Builder() + { + user = user, + password = password, + dbname = dbname, + hostname = hostname, + port = port, + sslContext = sslContext, + }); + + connNew.ConnectionError += OnConnectionError; + return connNew; + } + + private void OnConnectionError(object sender, Exception e) + { + var connError = sender as Connection; + var hlist = this.poolingStrategy.HostList; + var he = hlist.FirstOrDefault(h => h.conn == connError); + he?.MarkFailed(); + } + + internal static Builder Build() + { + return new Builder(); + } + + + /// + /// Disposes / shuts down the connection pool. + /// + public void Dispose() + { + this.Shutdown(); + } + + /// + /// The connection pool builder. + /// + public class Builder : IConnectionBuilder + { + internal bool discover; + internal Seed[] seeds; + internal string dbname; + internal string authKey; + internal string user; + internal string password; + internal IPoolingStrategy hostpool; + internal TimeSpan? initialTimeout; + internal SslContext sslContext; + + /// + /// Seed the driver with the following endpoints. Should be strings of the form "Host:Port". + /// + /// Strings of the form "Host:Port" + public Builder Seed(params string[] seeds) + { + var initalSeeds = seeds.Select(s => + { + var parts = s.Split(new[] {':'}, StringSplitOptions.RemoveEmptyEntries); + var host = parts[0]; + + IPAddress.Parse(host); //make sure it's an IP address. + + var port = parts.Length == 2 ? int.Parse(parts[1]) : RethinkDBConstants.DefaultPort; + + return new Seed(host, port); + }); + + return Seed(initalSeeds); + } + + /// + /// Seed the driver with the following endpoints. Should be strings of the form "Host:Port". + /// + /// Strings of the form "Host:Port" + public Builder Seed(IEnumerable seeds) + { + return Seed(seeds.ToArray()); + } + + /// + /// Seed the driver with the following endpoints. + /// + public Builder Seed(IEnumerable seeds) + { + this.seeds = seeds.ToArray(); + return this; + } + + /// + /// Seed the driver with the following endpoints. + /// + public Builder Seed(params Seed[] seeds) + { + this.seeds = seeds.ToArray(); + return this; + } + + /// + /// Sets the initial timeout (in seconds) for connecting. + /// If a connection cannot be made within the specified time span + /// to any server, an exception is thrown. If no timeout is set, + /// the call to Connect() will block until at least one connection + /// is made. + /// + public Builder InitialTimeout(int timeout) + { + this.initialTimeout = TimeSpan.FromSeconds(timeout); + return this; + } + + /// + /// discover() is used to enable host discovery, when true the driver + /// will attempt to discover any new nodes added to the cluster and then + /// start sending queries to the newly added cluster nodes. + /// + public Builder Discover(bool discoverNewHosts) + { + this.discover = discoverNewHosts; + return this; + } + + /// + /// The default DB for queries. + /// + public virtual Builder Db(string val) + { + this.dbname = val; + return this; + } + + /// + /// The authorization key to the cluster. + /// + public virtual Builder AuthKey(string val) + { + this.authKey = val; + return this; + } + + /// + /// The user account and password to connect as (default "admin", ""). + /// + public Builder User(string user, string password) + { + this.user = user; + this.password = password; + return this; + } + + /// + /// The selection strategy to for selecting a connection. IE: RoundRobin, HeartBeat, or EpsilonGreedy. + /// + public Builder PoolingStrategy(IPoolingStrategy hostPool) + { + this.hostpool = hostPool; + return this; + } + + /// + /// Creates and establishes the connection pool using the specified settings. + /// + /// The returned connect pool is ready to be used. At least one host will be ready to accept a query. + public virtual ConnectionPool Connect() + { + var conn = new ConnectionPool(this); + conn.StartPool(); + if( initialTimeout.HasValue ) + { + if( !conn.poolReady.Task.Wait(initialTimeout.Value) ) + { + conn.Shutdown(); + throw new ReqlDriverError("Connection timed out."); + } + } + else + { + conn.poolReady.Task.Wait(); + } + return conn; + } + + /// + /// Asynchronously creates and establishes the connection pool using the specified settings. + /// + /// The returned connect pool is ready to be used. At least one host will be ready to accept a query. + public virtual async Task ConnectAsync(CancellationToken cancellationToken = default) + { + var conn = new ConnectionPool(this); + conn.StartPool(); + + var timeout = initialTimeout ?? TimeSpan.FromMilliseconds(-1); + + var taskCompleted = await conn.poolReady.Task.WaitOrTimeout(timeout, cancellationToken) + .ConfigureAwait(false); + + if (!taskCompleted) + { + conn.Shutdown(); + throw new ReqlDriverError("Connection timed out."); + } + + return conn; + } + + + /// + /// Enables SSL over the driver port + /// + /// Context settings for the SSL stream. + public virtual Builder EnableSsl(SslContext context, string licenseTo, string licenseKey) + { + this.sslContext = context; + +#if !DEBUG + if( !LicenseVerifier.VerifyLicense(licenseTo, licenseKey) ) + { + throw new ReqlDriverError("The SSL/TLS usage license is invalid. Please check your license that you copied all the characters in your license. If you still have trouble, please contact support@bitarmory.com."); + } +#endif + return this; + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs.meta new file mode 100644 index 000000000..057df5a6b --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ConnectionPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 95bdb149200e9f642b4d607825ed0c73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs new file mode 100644 index 000000000..8aea3d1ce --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs @@ -0,0 +1,416 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Ast; +using Random = System.Random; + +namespace RethinkDb.Driver.Net.Clustering +{ + /// + /// Epsilon Greedy is an algorithm that allows HostPool not only to track failure state, + /// but also to learn about "better" options in terms of speed, and to pick from available hosts + /// based on how well they perform. This gives a weighted request rate to better + /// performing hosts, while still distributing requests to all hosts (proportionate to their performance). + /// + /// A good overview of Epsilon Greedy is here http://stevehanov.ca/blog/index.php?id=132 + /// + /// To compute the weighting scores, we perform a weighted average of recent response times, over the course of + /// `decayDuration`. decayDuration may be set to null to use the default value of 5 minutes + /// We then use the supplied EpsilonValueCalculator to calculate a score from that weighted average response time. + /// + public class EpsilonGreedyHostPool : RoundRobinHostPool + { + static readonly TimeSpan DefaultDecayDuration = TimeSpan.FromMinutes(5); + + /// + /// Initial epsilon value. + /// + public const double InitialEpsilon = 0.3; + + /// + /// The steady state percentage of time to explore + /// + public const double MinEpsilon = 0.01; // explore one percent of the time + + /// + /// The decay exploration rate. + /// + public const double EpsilonDecay = 0.90; // decay the exploration rate + + /// + /// Number of bucket slot measurements + /// + public const int EpsilonBuckets = 120; //measurement slots + + /// + /// Epsilon threshold that controls exploration. If a random double is + /// less than < (or below) epsilon, then an round-robin exploration is performed. + /// IE: Higher the epsilon, the more chances for exploration of other hosts. + /// In the long run, epsilon will EpsilonDecay on each exploration until reaching MinEpsilon. + /// Additionally, in the long run, exploration will only take place MinEpsilon % of the time. + /// + private double epsilon; + + private TimeSpan decayDuration; + private EpsilonValueCalculator calc; + private float[] weights = null; + + private Timer timer; + + /// + /// Random value generator. + /// + public static Random Random { get; set; } + + static EpsilonGreedyHostPool() + { + Random = new Random(); + } + + /// + /// Construct an Epsilon Greedy HostPool + /// + /// Epsilon Greedy is an algorithm that allows HostPool not only to track failure state, + /// but also to learn about "better" options in terms of speed, and to pick from available hosts + /// based on how well they perform. This gives a weighted request rate to better + /// performing hosts, while still distributing requests to all hosts (proportionate to their performance). + /// + /// A good overview of Epsilon Greedy is here http://stevehanov.ca/blog/index.php?id=132 + /// + /// To compute the weighting scores, we perform a weighted average of recent response times, over the course of + /// `decayDuration`. decayDuration may be set to null to use the default value of 5 minutes + /// We then use the supplied EpsilonValueCalculator to calculate a score from that weighted average response time. + /// + /// The initial retry delay when a host goes down. Default, null, is 30 seconds. + /// The maximum retry delay when a host goes down. Default, null, is 15 minutes. + /// The amount of time to cycle through all EpsilonBuckets (0...120). + /// This decay duration is divided by EpsilonBuckets (default: 5 min / 120 buckets = 2.5 seconds per bucket). + /// IE: The average will be taken every decayDuration/EpsilonBuckets seconds. + /// Given the weighted average among EpsilonBuckets slot measurements, calculate the host's EpsilonValue using EpsilonCalculators.Linear/Logarithmic/Polynomial(exponent) + /// Automatically starts the decay timer. If false, you need to call StartDecayTimer manually for epsilon values to be calculated correctly. + public EpsilonGreedyHostPool( + TimeSpan? retryDelayInitial, + TimeSpan? retryDelayMax, + TimeSpan? decayDuration, + EpsilonValueCalculator calc, + bool autoStartDecayTimer = true) + : base(retryDelayInitial, retryDelayMax) + { + this.decayDuration = decayDuration ?? DefaultDecayDuration; + this.calc = calc; + this.epsilon = InitialEpsilon; + this.weights = Enumerable.Range(1, EpsilonBuckets) + .Select(i => i / Convert.ToSingle(EpsilonBuckets)) + .ToArray(); + + if( autoStartDecayTimer ) + { + StartDecayTimer(); + } + } + + /// + /// Construct an Epsilon Greedy HostPool + /// + /// Epsilon Greedy is an algorithm that allows HostPool not only to track failure state, + /// but also to learn about "better" options in terms of speed, and to pick from available hosts + /// based on how well they perform. This gives a weighted request rate to better + /// performing hosts, while still distributing requests to all hosts (proportionate to their performance). + /// + /// A good overview of Epsilon Greedy is here http://stevehanov.ca/blog/index.php?id=132 + /// + /// To compute the weighting scores, we perform a weighted average of recent response times, over the course of + /// `decayDuration`. decayDuration may be set to null to use the default value of 5 minutes + /// We then use the supplied EpsilonValueCalculator to calculate a score from that weighted average response time. + /// + /// The amount of time to cycle though all EpsilonBuckets (0...120). + /// This decay duration is divided by EpsilonBuckets (default: 5 min / 120 buckets = 2.5 seconds per bucket). + /// IE: The average will be taken every decayDuration/EpsilonBuckets seconds. + /// Given the weighted average among EpsilonBuckets slot measurements, calculate the host's EpsilonValue using EpsilonCalculators.Linear/Logarithmic/Polynomial(exponent) + /// Automatically starts the decay timer. If false, you need to call StartDecayTimer manually for epsilon values to be calculated correctly. + public EpsilonGreedyHostPool(TimeSpan? decayDuration, + EpsilonValueCalculator calc, + bool autoStartDecayTimer = true) : + this(null, null, decayDuration, calc, autoStartDecayTimer) + { + } + + + /// + /// Epsilon threshold that controls exploration. If a random double is + /// less than < (or below) epsilon, then an round-robin exploration is performed. + /// IE: Higher the epsilon, the more chances for exploration of other hosts. + /// In the long run, epsilon will EpsilonDecay on each exploration to MinEpsilon. + /// + public void SetEpsilon(float epsilon) + { + this.epsilon = epsilon; + } + + + /// + /// If the autoStartDecayTimer was false, you need to start + /// the decay timer manually using this method. + /// + public void StartDecayTimer() + { + var durationPerBucket = TimeSpan.FromTicks(decayDuration.Ticks / EpsilonBuckets); + this.timer = new Timer(PerformEpsilonGreedyDecay, null, Timeout.Infinite, Timeout.Infinite); + + //fire now. + this.timer.Change(TimeSpan.Zero, durationPerBucket); + } + + internal void PerformEpsilonGreedyDecay(object state) + { + lock( hostLock ) + { + if( shuttingDown ) + { + this.timer.Change(Timeout.Infinite, Timeout.Infinite); + this.timer.Dispose(); + return; + } + } + + //Parallel.For() + //basically advance the index + var hlist = this.hostList; + foreach( var h in hlist ) + { + var nextIndex = (h.EpsilonIndex + 1) % EpsilonBuckets; + h.EpsilonCounts[nextIndex] = 0; //write ahead, before other threads + h.EpsilonValues[nextIndex] = 0; //before they see the next index + h.EpsilonAvg[nextIndex] = 0; + + //advance the index, so all threads begin writing + //and recording their speed results to the new bucket + var currentIndex = Interlocked.Increment(ref h.EpsilonIndex); + + //not done yet.... + //now calculate the new average for the previous index now + //that threads have advanced to the new epsilon index bucket + var prevIndex = (currentIndex - 1) % EpsilonBuckets; + var averages = h.EpsilonAvg; + if( h.EpsilonCounts[prevIndex] > 0 ) + { + averages[prevIndex] = h.EpsilonValues[prevIndex] / Convert.ToSingle(h.EpsilonCounts[prevIndex]); + } + } + //finally, update percentages + Update(); + } + + internal virtual HostEntry GetEpsilonGreedy() + { + HostEntry hostToUse = null; + + //this is our exploration phase + var rand = Random.NextDouble(); + if( rand < this.epsilon ) + { + this.epsilon = this.epsilon * EpsilonDecay; + if( this.epsilon < MinEpsilon ) + { + this.epsilon = MinEpsilon; + } + return this.GetRoundRobin(); + } + + var hlist = this.hostList; + + var ceiling = 0.0d; + + //find best. + for( var i = 0; i < hlist.Length; i++ ) + { + var h = hlist[i]; + if( !h.Dead && h.EpsilonWeightAverage > 0 ) + { + ceiling += h.EpsilonPercentage; + if( rand <= ceiling ) + { + hostToUse = h; + break; + } + } + } + + if( hostToUse == null || hostToUse.Dead ) + { + return this.GetRoundRobin(); + } + + return hostToUse; + } + + private void SetWeightedAverageResponseTime(HostEntry h) + { + var value = 0f; + var lastValue = 0f; + var prevIndex = (h.EpsilonIndex - 1) % EpsilonBuckets; //capture the current index + + //start from 2, skipping the current epsilon index + for( var i = 2; i <= EpsilonBuckets; i++ ) + { + var pos = (prevIndex + i) % EpsilonBuckets; + var counts = h.EpsilonCounts[pos]; + // Changing the line below to what I think it should be to get the weights right + var weight = weights[i - 1]; + if( counts > 0 ) + { + //the average + //var currentValue = h.EpsilonValues[pos] / Convert.ToSingle(counts); + var currentValue = h.EpsilonAvg[pos]; + value += currentValue * weight; + lastValue = currentValue; + } + else + { + value += lastValue * weight; + } + } + h.EpsilonWeightAverage = value; + } + + private void SetEpsilonValue(HostEntry h) + { + h.EpsilonValue = this.calc.CalcValueFromAvgResponseTime(h.EpsilonWeightAverage); + } + + internal void MarkSuccess(HostEntry h, long start, long end) + { + var duration = TimeSpan.FromTicks(end - start); + var index = h.EpsilonIndex % EpsilonBuckets; + var counts = h.EpsilonCounts; + var values = h.EpsilonValues; + + Interlocked.Increment(ref counts[index]); + Interlocked.Add(ref values[index], Convert.ToInt64(duration.TotalMilliseconds)); + } + + internal void Update() + { + var hlist = this.hostList; + var sumValues = 0f; + + // calculate values for each host in the 0..1 range (but not normalized) + for( int i = 0; i < hlist.Length; i++ ) + { + var h = hlist[i]; + SetWeightedAverageResponseTime(h); + SetEpsilonValue(h); + if( !h.Dead && h.EpsilonWeightAverage > 0 ) + { + sumValues += h.EpsilonValue; + } + } + //now normalize the 0..1 range to get percentage + //need to know the sum before normalizing + for( int i = 0; i < hlist.Length; i++ ) + { + var h = hlist[i]; + if( !h.Dead && h.EpsilonWeightAverage > 0 ) + { + h.EpsilonPercentage = h.EpsilonValue / sumValues; + } + } + } + + #region CONNECTION RUNNERS + + public override async Task RunAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetEpsilonGreedy(); + try + { + var start = DateTime.Now.Ticks; + var result = await host.conn.RunAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + var end = DateTime.Now.Ticks; + MarkSuccess(host, start, end); + return result; + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override async Task RunAtomAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetEpsilonGreedy(); + try + { + var start = DateTime.Now.Ticks; + var result = await host.conn.RunAtomAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + var end = DateTime.Now.Ticks; + MarkSuccess(host, start, end); + return result; + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override async Task RunResultAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetEpsilonGreedy(); + try + { + var start = DateTime.Now.Ticks; + var result = await host.conn.RunResultAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + var end = DateTime.Now.Ticks; + MarkSuccess(host, start, end); + return result; + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override void RunNoReply(ReqlAst term, object globalOpts) + { + HostEntry host = GetEpsilonGreedy(); + try + { + var start = DateTime.Now.Ticks; + host.conn.RunNoReply(term, globalOpts); + var end = DateTime.Now.Ticks; + MarkSuccess(host, start, end); + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override async Task> RunCursorAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetEpsilonGreedy(); + try + { + var start = DateTime.Now.Ticks; + var result = await host.conn.RunCursorAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + var end = DateTime.Now.Ticks; + MarkSuccess(host, start, end); + return result; + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs.meta new file mode 100644 index 000000000..eb6cb8097 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonGreedy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bfa125f7245dba7489e49fd0962d8918 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs new file mode 100644 index 000000000..511581b9c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs @@ -0,0 +1,144 @@ +using System; + +namespace RethinkDb.Driver.Net.Clustering +{ + /// + /// Classes implementing this interface are used to convert the average response time for a host + /// into a score that can be used to weight hosts in the epsilon greedy hostpool. Lower response + /// times should yield higher scores (we want to select the faster hosts more often) The default + /// LinearEpsilonValueCalculator just uses the reciprocal of the response time. In practice, any + /// decreasing function from the positive reals to the positive reals should work. + /// + public abstract class EpsilonValueCalculator + { + /// + /// The implementation of the value calculation. + /// + public abstract float CalcValueFromAvgResponseTime(float v); + + /// + /// Linear value calculation + /// + public static float LinearEpsilonValueCalculator(float v) + { + return 1.0f / v; + } + + /// + /// Logarithmic value calculation + /// + public static float LogEpsilonValueCalculator(float v) + { + return LinearEpsilonValueCalculator(Convert.ToSingle(Math.Log(v + 1.0d))); + } + + /// + /// Polynomial value calculation + /// + public static float PolynomialEpsilonValueCalculator(float v, float exp) + { + return LinearEpsilonValueCalculator(Convert.ToSingle(Math.Pow(v, exp))); + } + } + + /// + /// Linear epsilon value calculation + /// + public class LinearEpsilonValueCalculator : EpsilonValueCalculator + { + /// + /// The implementation of the value calculation. + /// + public override float CalcValueFromAvgResponseTime(float v) + { + return LinearEpsilonValueCalculator(v); + } + } + + /// + /// Logarithmic epsilon value calculation + /// + public class LogEpsilonValueCalculator : EpsilonValueCalculator + { + /// + /// The implementation of the value calculation. + /// + public override float CalcValueFromAvgResponseTime(float v) + { + return LogEpsilonValueCalculator(v); + } + } + + /// + /// Polynomial epsilon value calculation + /// + public class PolynomialEpsilonValueCalculator : EpsilonValueCalculator + { + private readonly float exponent; + + /// + /// Constructor with exponent + /// + public PolynomialEpsilonValueCalculator(float exponent) + { + this.exponent = exponent; + } + + /// + /// The implementation of the value calculation. + /// + public override float CalcValueFromAvgResponseTime(float v) + { + return PolynomialEpsilonValueCalculator(v, exponent); + } + } + + + /// + /// Classes implementing this interface are used to convert the average response time for a host + /// into a score that can be used to weight hosts in the epsilon greedy hostpool. Lower response + /// times should yield higher scores (we want to select the faster hosts more often) The default + /// LinearEpsilonValueCalculator just uses the reciprocal of the response time. In practice, any + /// decreasing function from the positive reals to the positive reals should work. + /// + public static class EpsilonCalculator + { + /// + /// Linear calculator to convert the average response time for a host + /// into a score that can be used to weight hosts in the epsilon greedy hostpool. Lower response + /// times should yield higher scores (we want to select the faster hosts more often) The default + /// LinearEpsilonValueCalculator just uses the reciprocal of the response time. In practice, any + /// decreasing function from the positive reals to the positive reals should work. + /// + public static EpsilonValueCalculator Linear() + { + return new LinearEpsilonValueCalculator(); + } + + + /// + /// Logarithmic calculator to convert the average response time for a host + /// into a score that can be used to weight hosts in the epsilon greedy hostpool. Lower response + /// times should yield higher scores (we want to select the faster hosts more often) The default + /// LinearEpsilonValueCalculator just uses the reciprocal of the response time. In practice, any + /// decreasing function from the positive reals to the positive reals should work. + /// + public static EpsilonValueCalculator Logarithmic() + { + return new LogEpsilonValueCalculator(); + } + + + /// + /// Polynomial calculator to convert the average response time for a host + /// into a score that can be used to weight hosts in the epsilon greedy hostpool. Lower response + /// times should yield higher scores (we want to select the faster hosts more often) The default + /// LinearEpsilonValueCalculator just uses the reciprocal of the response time. In practice, any + /// decreasing function from the positive reals to the positive reals should work. + /// + public static EpsilonValueCalculator Polynomial(float exponent) + { + return new PolynomialEpsilonValueCalculator(exponent); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs.meta new file mode 100644 index 000000000..54e95cbb8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/EpsilonValueCalculator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 63ab95c482267104fbb6a5b3a58e50ec +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs new file mode 100644 index 000000000..ab32733e9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs @@ -0,0 +1,13 @@ +using System; +using System.IO; + +namespace RethinkDb.Driver.Net.Clustering +{ + internal static class ExceptionIs + { + public static bool NetworkError(Exception e) + { + return e is IOException || e is ObjectDisposedException; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs.meta new file mode 100644 index 000000000..5d41a6bbc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/ExceptionIs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5eda98bde10c2f4983fe9cad7dd69eb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs new file mode 100644 index 000000000..9de2e53ad --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs @@ -0,0 +1,65 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; + +namespace RethinkDb.Driver.Net.Clustering +{ + public class HostEntry + { + public TimeSpan RetryDelayInitial { get; set; } + public TimeSpan RetryDelayMax { get; set; } + + public HostEntry(string host) + { + this.Host = host; + this.EpsilonValues = new long[EpsilonGreedyHostPool.EpsilonBuckets]; + this.EpsilonCounts = new long[EpsilonGreedyHostPool.EpsilonBuckets]; + this.EpsilonAvg = new float[EpsilonGreedyHostPool.EpsilonBuckets]; + } + + public IConnection conn; + public string Host { get; set; } + public bool Dead { get; set; } + public object Tag { get; set; } + + public DateTime NextRetry { get; set; } + public int RetryCount { get; set; } + public TimeSpan RetryDelay { get; set; } + + public long[] EpsilonCounts { get; set; } + public long[] EpsilonValues { get; set; } + public float[] EpsilonAvg { get; set; } + + public int EpsilonIndex; + + public float EpsilonValue; + public float EpsilonPercentage; + public float EpsilonWeightAverage; + + public virtual void RetryFailed() + { + this.RetryCount += 1; + //double the retry delay + var newDelay = this.RetryDelay.Add(this.RetryDelay); + this.RetryDelay = newDelay < this.RetryDelayMax ? newDelay : this.RetryDelayMax; + this.NextRetry = DateTime.Now + this.RetryDelay; + } + + public virtual bool NeedsRetry() + { + return this.Dead && this.NextRetry < DateTime.Now; + } + + public virtual void MarkFailed() + { + if( !this.Dead ) + { + this.RetryCount = 0; + this.RetryDelay = this.RetryDelayInitial; + this.NextRetry = DateTime.Now.Add(this.RetryDelay); + this.Dead = true; + Log.Trace($"Host {this.Host} is DOWN."); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs.meta new file mode 100644 index 000000000..502a45a86 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostEntry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f471588c77848547b0f43c050114615 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs new file mode 100644 index 000000000..341841ba2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs @@ -0,0 +1,82 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Net.Clustering +{ + public abstract class HostPool : IPoolingStrategy + { + protected TimeSpan RetryDelayInitial; + protected TimeSpan RetryDelayMax; + + //this array should be monotonically increasing, to avoid + //unnecessary thread locking and synch problems when iterating + //over the length of the list. + protected HostEntry[] hostList; + + public HostPool(TimeSpan? retryDelayInitial, TimeSpan? retryDelayMax) + { + this.RetryDelayInitial = retryDelayInitial ?? TimeSpan.FromSeconds(30); + this.RetryDelayMax = retryDelayMax ?? TimeSpan.FromSeconds(900); + + if( this.RetryDelayInitial < TimeSpan.FromSeconds(30) + || this.RetryDelayMax < TimeSpan.FromSeconds(30) ) + { + throw new ArgumentOutOfRangeException( + $"{nameof(retryDelayInitial)} and {nameof(retryDelayMax)} must both be greater than 30 seconds. Anything less can cause threads to pile up on each other because the default socket timeout for windows is about 20 seconds."); + } + + hostList = new HostEntry[0]; + } + + protected object hostLock = new object(); + + public HostEntry[] HostList => hostList; + + public virtual void AddHost(string host, Connection conn) + { + lock( hostLock ) + { + if( shuttingDown ) return; + + var oldHostList = this.hostList; + var nextHostList = new HostEntry[oldHostList.Length + 1]; + Array.Copy(oldHostList, nextHostList, oldHostList.Length); + + //add new host to the end of the array. Initially, start off as a dead + //host. + var he = new HostEntry(host) + { + conn = conn, + Dead = true, + RetryDelayInitial = RetryDelayInitial, + RetryDelayMax = RetryDelayMax + }; + nextHostList[nextHostList.Length - 1] = he; + this.hostList = nextHostList; + } + } + + protected bool shuttingDown = false; + + public virtual void Shutdown() + { + lock( hostLock ) + { + shuttingDown = true; + } + } + + public abstract Task RunAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + public abstract Task> RunCursorAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + public abstract Task RunAtomAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + public abstract Task RunResultAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + public abstract void RunNoReply(ReqlAst term, object globalOpts); + public abstract Task RunUnsafeAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + + public abstract void Dispose(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs.meta new file mode 100644 index 000000000..ae6166787 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/HostPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 332dbbb1c21dbd04cb399be38f4b4826 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs new file mode 100644 index 000000000..6e8d6f562 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs @@ -0,0 +1,12 @@ + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +namespace RethinkDb.Driver.Net.Clustering +{ + public interface IPoolingStrategy : IConnection + { + HostEntry[] HostList { get; } + void AddHost(string host, Connection conn); + void Shutdown(); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs.meta new file mode 100644 index 000000000..a7636a88c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/IPoolingStrategy.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3e0292e136b7784ab49c98d00f844b9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs new file mode 100644 index 000000000..00345d17e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs @@ -0,0 +1,158 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Net.Clustering +{ + /// + /// Create a new RoundRobin host pool. Each host is used in a round robin + /// strategy when processing each query. + /// + public class RoundRobinHostPool : HostPool + { + protected int nextHostIndex = -1; + + /// + /// Create a new RoundRobin host pool. Each host is used in a round robin + /// strategy when processing each query. When a host goes down, the supervisor will + /// wait retryDelayInitial timespan before trying again. If the reconnect fails, the + /// retry delay is doubled. Doubling of the retry is stopped at once the retry delay + /// is greater than retryDelayMax; thereafter, every subsequent retry is retryDelayMax. + /// The retryDelayInitial is 30 seconds, and retryDelayMax is 15 minutes. + /// + /// The initial retry delay when a host goes down. Default, null, is 30 seconds. + /// The maximum retry delay when a host goes down. Default, null, is 15 minutes. + public RoundRobinHostPool(TimeSpan? retryDelayInitial, TimeSpan? retryDelayMax) + : base(retryDelayInitial, retryDelayMax) + { + } + + /// + /// Create a new RoundRobin host pool. Each host is used in a round robin + /// strategy when processing each query. When a host goes down, the supervisor will + /// wait retryDelayInitial timespan before trying again. If the reconnect fails, the + /// retry delay is doubled. Doubling of the retry is stopped at once the retry delay + /// is greater than retryDelayMax; thereafter, every subsequent retry is retryDelayMax. + /// The retryDelayInitial is 30 seconds, and retryDelayMax is 15 minutes. + /// + public RoundRobinHostPool() : this(null, null) + { + } + + + public virtual HostEntry GetRoundRobin() + { + var hostCount = this.hostList.Length; //thread capture + + for( var i = 0; i < hostCount; i++ ) + { + var next = Interlocked.Increment(ref nextHostIndex); + var currentIndex = next % hostCount; + + var h = hostList[currentIndex]; + if( !h.Dead ) + { + return h; + } + } + + return hostList[0]; + } + + #region CONNECTION RUNNERS + + public override async Task RunAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetRoundRobin(); + try + { + return await host.conn.RunAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override async Task> RunCursorAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetRoundRobin(); + try + { + return await host.conn.RunCursorAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override async Task RunAtomAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetRoundRobin(); + try + { + return await host.conn.RunAtomAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override async Task RunResultAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetRoundRobin(); + try + { + return await host.conn.RunResultAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override void RunNoReply(ReqlAst term, object globalOpts) + { + HostEntry host = GetRoundRobin(); + try + { + host.conn.RunNoReply(term, globalOpts); + } + catch( Exception e ) when( ExceptionIs.NetworkError(e) ) + { + host.MarkFailed(); + throw; + } + } + + public override async Task RunUnsafeAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + HostEntry host = GetRoundRobin(); + try + { + return await host.conn.RunUnsafeAsync(term, globalOpts, cancelToken).ConfigureAwait(false); + } + catch (Exception e) when (ExceptionIs.NetworkError(e)) + { + host.MarkFailed(); + throw; + } + } + + #endregion + + public override void Dispose() + { + //nothing to do i guess. + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs.meta new file mode 100644 index 000000000..5cd29f27f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/RoundRobinHostPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1f397cf9ab2a33e448b9238d8b44ec45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs new file mode 100644 index 000000000..464a1a4b9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs @@ -0,0 +1,30 @@ +using System.Net; + +namespace RethinkDb.Driver.Net.Clustering +{ + /// + /// Represents a RethinkDB server endpoint. + /// + public class Seed + { + /// + /// Create a new RethinkDB seed endpoint. + /// + public Seed(string ipAddress, int port = RethinkDBConstants.DefaultPort) + { + IPAddress.Parse(ipAddress); + this.IpAddress = ipAddress; + this.Port = port; + } + + /// + /// RethinkDB hostname + /// + public string IpAddress { get; } + + /// + /// RethinkDB port + /// + public int Port { get; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs.meta new file mode 100644 index 000000000..7ddd3dbac --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Seed.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0dfbd40010e2cbb4893c7c950f799ab8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs new file mode 100644 index 000000000..b21a50931 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs @@ -0,0 +1,28 @@ +using Newtonsoft.Json; + +namespace RethinkDb.Driver.Net.Clustering +{ + internal class Server + { + public string Id { get; set; } + public string Name { get; set; } + public Network Network { get; set; } + } + + internal class Network + { + [JsonProperty("canonical_addresses")] + public CanonicalAddress[] CanonicalAddress { get; set; } + + public string Hostname { get; set; } + + [JsonProperty("reql_port")] + public int ReqlPort { get; set; } + } + + internal class CanonicalAddress + { + public string Host { get; set; } + public int Port { get; set; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs.meta new file mode 100644 index 000000000..bb0b5f571 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Clustering/Server.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f90f93b757fa5f54aa1a52e6a9db6a3c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs new file mode 100644 index 000000000..0a2f2a9fc --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs @@ -0,0 +1,726 @@ +using System; +using System.Collections.Concurrent; +using System.Net; +using System.Net.Security; +using System.Security.Authentication; +using System.Security.Cryptography; +using System.Security.Cryptography.X509Certificates; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net +{ + /// + /// Represents a single connection to a RethinkDB Server. + /// + public class Connection : IConnection + { + private long nextToken = 0; + + private string dbname; + private readonly TimeSpan? connectTimeout; + private readonly Handshake handshake; + + internal SocketWrapper Socket { get; private set; } + + private readonly ConcurrentDictionary cursorCache = new ConcurrentDictionary(); + private SslContext sslContext; + + /// + /// Raised when the underlying network connection has thrown an exception. + /// + public event EventHandler ConnectionError; + + internal Connection(Builder builder) + { + dbname = builder.dbname; + if( builder.authKey.IsNotNullOrEmpty() && builder.user.IsNotNullOrEmpty() ) + { + throw new ReqlDriverError("Either `authKey` or `user` can be used, but not both."); + } + + var user = builder.user ?? "admin"; + var password = builder.password ?? builder.authKey ?? ""; + + this.handshake = new Handshake(user, password); + + this.Hostname = builder.hostname ?? "localhost"; + this.Port = builder.port ?? RethinkDBConstants.DefaultPort; + connectTimeout = builder.timeout; + this.sslContext = builder.sslContext; + } + + /// + /// Hostname assigned to the connection. + /// + public string Hostname { get; } + + /// + /// TCP port number assigned to the connection. + /// + public int Port { get; } + + /// + /// Current default database for queries on the connection. To change default database, + /// + public virtual string Db => dbname; + + /// + /// Changes the default database on the connection. + /// + public virtual void Use(string db) + { + dbname = db; + } + + /// + /// Returns the connection timeout setting. + /// + public virtual TimeSpan? Timeout => connectTimeout; + + /// + /// Reconnects the underlying connection to the server. + /// + /// + /// The timeout value before throwing exception + public virtual void Reconnect(bool noreplyWait = false, TimeSpan? timeout = null) + { + ReconnectAsync(noreplyWait, timeout).WaitSync(); + } + + /// + /// Asynchronously reconnects the underlying connection to the server. + /// + /// + /// The timeout value before throwing exception + public virtual async Task ReconnectAsync(bool noreplyWait = false, TimeSpan? timeout = null) + { + Close(noreplyWait); + this.Socket = new SocketWrapper(this.Hostname, this.Port, timeout ?? connectTimeout, this.sslContext, OnSocketErrorCallback); + await this.Socket.ConnectAsync(handshake).ConfigureAwait(false); + } + + /// + /// Gets the connection state of the Socket. This property will return the latest + /// known state of the Socket. When it returns false, the Socket was either never connected + /// or it is not connected anymore. When it returns true, though, there's no guarantee that the Socket + /// is still connected, but only that it was connected at the time of the last IO operation. + /// + public virtual bool Open => this.Socket?.Open ?? false; + + /// + /// Retrieves the client-side local endpoint used to connect to the RethinkDB server. + /// + public virtual IPEndPoint ClientEndPoint => this.Socket?.ClientEndPoint; + + /// + /// Retrieves the server-side endpoint of the connection to the RethinkDB server. + /// + public virtual IPEndPoint RemoteEndPoint => this.Socket?.RemoteEndPoint; + + /// + /// Flag to check if the underlying socket has some kind of error. + /// + public virtual bool HasError => this.Socket?.HasError ?? false; + + /// + /// An exception throwing method to check the state of the + /// underlying socket. + /// + /// Throws when the underlying socket is closed. + public virtual void CheckOpen() + { + if( !this.Socket?.Open ?? true ) + { + throw new ReqlDriverError("Connection is closed."); + } + } + + /// + /// Called when the underlying encounters an error. + /// + protected void OnSocketErrorCallback(Exception e) + { + CleanUpCursorCache(e.Message); + + //raise event defensively. in case anyone else is subscribed + //we don't stop processing the rest of the subscribers. + this.ConnectionError.FireEvent(this, e); + } + + /// + /// Called when cleanup is needed. Usually when the connection was closed + /// and can no longer be used. The is in a state + /// where it must be "reconnected" before it can be used again. + /// + protected void CleanUpCursorCache(string message) + { + foreach( var cursor in this.cursorCache.Values ) + { + cursor.SetError(message); + } + cursorCache.Clear(); + } + + /// + /// Closes the connection. + /// + public void Dispose() + { + this.Close(false); + } + + /// + /// Closes the connection. + /// + /// + public virtual void Close(bool shouldNoReplyWait = true) + { + if( this.Socket != null ) + { + try + { + if( shouldNoReplyWait ) + { + NoReplyWait(); + } + } + finally + { + nextToken = 0; + this.Socket.Close(); + this.Socket = null; + } + } + + CleanUpCursorCache("The connection is closed."); + } + + + /// + /// Ensure that previous queries executed with NoReplyWait have been processed + /// by the server. Note that this guarantee only apples to queries run on the + /// same connection. + /// + public virtual void NoReplyWait() + { + NoReplyWaitAsync().WaitSync(); + } + + /// + /// Asynchronously ensures that previous queries executed with NoReplyWait have + /// been processed by the server. Note that this guarantee only apples to queries + /// run on the same connection. + /// + public virtual Task NoReplyWaitAsync(CancellationToken cancelToken = default) + { + return RunQueryWaitAsync(Query.NoReplyWait(NewToken()), cancelToken); + } + + + /// + /// Return the server name and server UUID being used by a connection. + /// + public virtual async Task ServerAsync(CancellationToken cancelToken = default) + { + var response = await SendQuery(Query.ServerInfo(NewToken()), cancelToken, awaitResponse: true).ConfigureAwait(false); + if( response.Type == ResponseType.SERVER_INFO ) + { + return response.Data[0].ToObject(Converter.Serializer); + } + throw new ReqlDriverError("Did not receive a SERVER_INFO response."); + } + + /// + /// Return the server name and server UUID being used by a connection. + /// + public virtual Server Server() + { + return ServerAsync().WaitSync(); + } + + + private long NewToken() + { + return Interlocked.Increment(ref nextToken); + } + + Task SendQueryReply(Query query) + { + return SendQuery(query, CancellationToken.None, awaitResponse: true); + } + + void SendQueryNoReply(Query query) + { + SendQuery(query, CancellationToken.None, awaitResponse: false); + } + + /// + /// Fast SUCCESS_SEQUENCE or SUCCESS_PARTIAL conversion without DLR dynamic. + /// + protected virtual async Task> RunQueryCursorAsync(Query query, CancellationToken cancelToken) + { + var res = await SendQuery(query, cancelToken, awaitResponse: true).ConfigureAwait(false); + if( res.IsPartial || res.IsSequence ) + { + return new Cursor(this, query, res); + } + if (res.IsError) + { + throw res.MakeError(query); + } + throw new ReqlDriverError( + $"The query response cannot be converted to a Cursor. The run helper " + + $"works with SUCCESS_SEQUENCE or SUCCESS_PARTIAL results. The server " + + $"response was {res.Type}. If the server response can be handled by " + + $"this run method check T. Otherwise, if the server response cannot " + + $"be handled by this run helper use `.RunAtom` or `.RunResult`."); + } + + /// + /// Fast SUCCESS_ATOM conversion without the DLR dynamic + /// + protected virtual async Task RunQueryAtomAsync(Query query, CancellationToken cancelToken) + { + var res = await SendQuery(query, cancelToken, awaitResponse: true).ConfigureAwait(false); + if( res.IsAtom ) + { + try + { + if( typeof(T).IsJToken() ) + { + if( res.Data[0].Type == JTokenType.Null ) return (T)(object)null; + var fmt = FormatOptions.FromOptArgs(query.GlobalOptions); + Converter.ConvertPseudoTypes(res.Data[0], fmt); + return (T)(object)res.Data[0]; //ugh ugly. find a better way to do this. + //return res.Data[0].ToObject(); + } + return res.Data[0].ToObject(Converter.Serializer); + + } + catch( IndexOutOfRangeException ex ) + { + throw new ReqlDriverError("Atom response was empty!", ex); + } + } + if( res.IsError ) + { + throw res.MakeError(query); + } + throw new ReqlDriverError( + $"The query response cannot be converted to an object of T or List. This run helper works with SUCCESS_ATOM results. The server response was {res.Type}. If the server response can be handled by this run method try converting to T or List. Otherwise, if the server response cannot be handled by this run helper use another run helper like `.RunCursor` or `.RunResult`."); + } + + + /// + /// Fast SUCCESS_ATOM or SUCCESS_SEQUENCE conversion without the DLR dynamic + /// + private async Task RunQueryResultAsync(Query query, CancellationToken cancelToken) + { + var res = await SendQuery(query, cancelToken, awaitResponse: true).ConfigureAwait(false); + if( res.IsAtom ) + { + try + { + if( typeof(T).IsJToken() ) + { + if( res.Data[0].Type == JTokenType.Null ) return (T)(object)null; + var fmt = FormatOptions.FromOptArgs(query.GlobalOptions); + Converter.ConvertPseudoTypes(res.Data[0], fmt); + return (T)(object)res.Data[0]; //ugh ugly. find a better way to do this. + } + return res.Data[0].ToObject(Converter.Serializer); + } + catch ( IndexOutOfRangeException ex ) + { + throw new ReqlDriverError("Atom response was empty!", ex); + } + } + if( res.IsSequence ) + { + if( typeof(T).IsJToken() ) + { + var fmt = FormatOptions.FromOptArgs(query.GlobalOptions); + Converter.ConvertPseudoTypes(res.Data, fmt); + return (T)(object)res.Data; //ugh ugly. find a better way to do this. + } + return res.Data.ToObject(Converter.Serializer); + } + if (res.IsError) + { + throw res.MakeError(query); + } + throw new ReqlDriverError( + $"The query response cannot be converted to an object of T or List " + + $"because the server response was {res.Type}. The `.RunResult` helper " + + $"only works with SUCCESS_ATOM or SUCCESS_SEQUENCE responses. When the query " + + $"response grows larger (over 100K), the response type from the server " + + $"can change from SUCCESS_SEQUENCE to SUCCESS_PARTIAL; in which case, you'll " + + $"need to use `.RunCursor` that handles both SUCCESS_SEQUENCE and SUCCESS_PARTIAL " + + $"response types. The `.RunResult` run helper is only meant to be a " + + $"convenience method for relatively quick and smaller responses."); + } + + /// + /// Asynchronously ensures that previous queries executed with NoReplyWait have + /// been processed by the server. Note that this guarantee only apples to queries + /// run on the same connection. + /// + protected virtual async Task RunQueryWaitAsync(Query query, CancellationToken cancelToken) + { + var res = await SendQuery(query, cancelToken, awaitResponse: true).ConfigureAwait(false); + if( res.IsWaitComplete ) + { + return; + } + if (res.IsError) + { + throw res.MakeError(query); + } + throw new ReqlDriverError( + $"The query response is not WAIT_COMPLETE. The returned query is {res.Type}. You need to call the appropriate run method that handles the response type for your query."); + } + + /// + /// Run the query but it's return type is standard dynamic. + /// + protected async Task RunQueryAsync(Query query, CancellationToken cancelToken) + { + //If you need to continue after an await, **while inside the driver**, + //as a library writer, you must use ConfigureAwait(false) on *your* + //await to tell the compiler NOT to resume + //on synchronization context (if one is present). + // + //The top most await (your user) will capture the correct synchronization context + //(if any) when they await on a query's run. + // + // https://channel9.msdn.com/Series/Three-Essential-Tips-for-Async/Async-library-methods-should-consider-using-Task-ConfigureAwait-false- + // http://blogs.msdn.com/b/lucian/archive/2013/11/23/talk-mvp-summit-async-best-practices.aspx + // + var res = await SendQuery(query, cancelToken, awaitResponse: true).ConfigureAwait(false); + + if( res.IsAtom ) + { + try + { + if( typeof(T).IsJToken() ) + { + if( res.Data[0].Type == JTokenType.Null ) return null; + var fmt = FormatOptions.FromOptArgs(query.GlobalOptions); + Converter.ConvertPseudoTypes(res.Data[0], fmt); + return res.Data[0]; + } + return res.Data[0].ToObject(typeof(T), Converter.Serializer); + } + catch ( IndexOutOfRangeException ex ) + { + throw new ReqlDriverError("Atom response was empty!", ex); + } + } + else if( res.IsPartial || res.IsSequence ) + { + return new Cursor(this, query, res); + } + else if( res.IsWaitComplete ) + { + return null; + } + else + { + throw res.MakeError(query); + } + } + + /// + /// Sends the query over to the underlying socket for sending. + /// + protected Task SendQuery(Query query, CancellationToken cancelToken, bool awaitResponse) + { + if( this.Socket == null ) throw new ReqlDriverError("No socket open."); + return this.Socket.SendQuery(query.Token, query.Serialize(), awaitResponse, cancelToken); + } + + /// + /// Prepares the query by setting the default DB if it doesn't exist. + /// + protected Query PrepareQuery(ReqlAst term, OptArgs globalOpts) + { + SetDefaultDb(globalOpts); + Query q = Query.Start(NewToken(), term, globalOpts); + if( globalOpts?.ContainsKey("noreply") == true ) + { + throw new ReqlDriverError("Don't provide the noreply option as an optarg. Use `.RunNoReply` instead of `.Run`"); + } + return q; + } + + /// + /// Sets the database if it's not already set. + /// + protected void SetDefaultDb(OptArgs globalOpts) + { + if( globalOpts?.ContainsKey("db") == false && this.dbname != null ) + { + // Only override the db global arg if the user hasn't + // specified one already and one is specified on the connection + globalOpts.With("db", this.dbname); + } + if( globalOpts?.ContainsKey("db") == true ) + { + // The db arg must be wrapped in a db ast object + globalOpts.With("db", new Db(Arguments.Make(globalOpts["db"]))); + } + } + + #region REQL AST RUNNERS + + //Typically called by the surface API of ReqlAst. + + Task IConnection.RunAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + Query q = PrepareQuery(term, OptArgs.FromAnonType(globalOpts)); + return RunQueryAsync(q, cancelToken); + } + + Task> IConnection.RunCursorAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + Query q = PrepareQuery(term, OptArgs.FromAnonType(globalOpts)); + return RunQueryCursorAsync(q, cancelToken); + } + + Task IConnection.RunAtomAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + Query q = PrepareQuery(term, OptArgs.FromAnonType(globalOpts)); + return RunQueryAtomAsync(q, cancelToken); + } + + Task IConnection.RunResultAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + Query q = PrepareQuery(term, OptArgs.FromAnonType(globalOpts)); + return RunQueryResultAsync(q, cancelToken); + } + + void IConnection.RunNoReply(ReqlAst term, object globalOpts) + { + var opts = OptArgs.FromAnonType(globalOpts); + SetDefaultDb(opts); + opts.With("noreply", true); + SendQueryNoReply(Query.Start(NewToken(), term, opts)); + } + + Task IConnection.RunUnsafeAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken) + { + Query q = PrepareQuery(term, OptArgs.FromAnonType(globalOpts)); + return SendQuery(q, cancelToken, awaitResponse: true); + } + + #endregion + + #region CURSOR SUPPORT + + internal virtual Task Continue(ICursor cursor) + { + return SendQueryReply(Query.Continue(cursor.Token)); + } + + internal virtual void Stop(ICursor cursor) + { + /* + neumino: The END query itself doesn't come back with a response + cowboy: ..... a Query[token,STOP], is like sending a very last CONTINUE, r:[] would contain the last bits of the finished seq + neumino: Yes a STOP is like a very last CONTINUE + neumino: If you have a pending CONTINUE, and send a STOP, you should get back two SUCCESS_SEQUENCE + */ + //this.Socket?.CancelAwaiter(cursor.Token); + SendQueryNoReply(Query.Stop(cursor.Token)); + } + + + internal void AddToCache(long token, ICursor cursor) + { + if( this.Socket == null ) + throw new ReqlDriverError("Can't add to cache when not connected."); + cursorCache[token] = cursor; + } + + internal void RemoveFromCache(long token) + { + ICursor removed; + if( !cursorCache.TryRemove(token, out removed) ) + { + Log.Trace($"Could not remove cursor token {token} from cursorCache."); + } + } + + #endregion + + internal static Builder Build() + { + return new Builder(); + } + + /// + /// The Connection builder. + /// + public class Builder : IConnectionBuilder + { + internal string hostname = null; + internal int? port = null; + internal string dbname = null; + internal TimeSpan? timeout = null; + internal string authKey = null; + internal string user = null; + internal string password = null; + internal SslContext sslContext = null; + + /// + /// The hostname or IP address of the server. + /// + /// Hostname or IP address + public virtual Builder Hostname(string hostnameOrIp) + { + this.hostname = hostnameOrIp; + return this; + } + + /// + /// The TCP port to connect with. + /// + public virtual Builder Port(int driverPort) + { + this.port = driverPort; + return this; + } + + /// + /// The default DB for queries. + /// + public virtual Builder Db(string database) + { + this.dbname = database; + return this; + } + + /// + /// The authorization key to the server. + /// + public virtual Builder AuthKey(string key) + { + this.authKey = key; + return this; + } + + /// + /// The user account and password to connect as (default "admin", ""). + /// + public virtual Builder User(string user, string password) + { + this.user = user; + this.password = password; + return this; + } + + /// + /// Note: Timeout is not used when using connectAsync(); + /// + /// + /// + public virtual Builder Timeout(int seconds) + { + this.timeout = TimeSpan.FromSeconds(seconds); + return this; + } + + /// + /// Creates and establishes the connection using the specified settings. + /// + public virtual Connection Connect() + { + return ConnectAsync().WaitSync(); + } + + /// + /// Asynchronously creates and establishes the connection using the specified settings. + /// + public virtual async Task ConnectAsync() + { + var conn = new Connection(this); + await conn.ReconnectAsync().ConfigureAwait(false); + return conn; + } + + /// + /// Enables SSL over the driver port. + /// + /// Context settings for the SSL stream. + public virtual Builder EnableSsl(SslContext context, string licenseTo, string licenseKey) + { + this.sslContext = context; + +#if !DEBUG + if( !LicenseVerifier.VerifyLicense(licenseTo, licenseKey) ) + { + throw new ReqlDriverError("The SSL/TLS usage license is invalid. Please check your license that you copied all the characters in your license. If you still have trouble, please contact support@bitarmory.com."); + } +#endif + return this; + } + } + } + + internal sealed class LicenseVerifier + { + public static bool VerifyLicense(string licenseTo, string licenseKey) + { + AssertKeyIsNotBanned(licenseKey); + + const string modulusString = + "tccosXHxEfxzsO1NgsAbGT0X+WuQMUYcj7r2UJCHDqqq3TbR7UoAgzjm3MV1k/eJxRnURypw2wj98eafyajeprk3lK6BnWa5tG8S7p3QU5kkUo7TnmTj8rRkTk9RwArIGGjKfCVZToE06UQudsJmw1UK3mku1qF0/hD909cSiCM="; + const string exponentString = "AQAB"; + + var data = Encoding.UTF8.GetBytes(licenseTo); + + var rsaParameters = new RSAParameters + { + Modulus = Convert.FromBase64String(modulusString), + Exponent = Convert.FromBase64String(exponentString) + }; +#if STANDARD + using( var rsa = System.Security.Cryptography.RSA.Create() ) +#else + using( var rsa = new System.Security.Cryptography.RSACryptoServiceProvider() ) +#endif + { + var licenseData = Convert.FromBase64String(licenseKey); + rsa.ImportParameters(rsaParameters); + + bool verified = false; + +#if STANDARD + verified = rsa.VerifyData(data, licenseData, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1); +#else + verified = rsa.VerifyData(data, CryptoConfig.MapNameToOID("SHA256"), licenseData); +#endif + return verified; + } + } + + internal static void AssertKeyIsNotBanned(string licenseKey) + { + var isBanned = + licenseKey.StartsWith( + "fuIIq8Pre2NzXVi0otn54PCx22NNAbNReAsk/ylDIV/ZrWeC60B+C76oj3/Ptb8b02vxPYdN6nR2nz3IgYG/O6Zy5TKoYl2UnR2aNq8sKxjv9siwsjMS82EZB8pxs0UwPoz+xmrKY40sqiIz+thDI2EH1MlGoZd+KfJImJp7fvI=") + || + licenseKey.StartsWith( + "tE4z+qpOuKWP4XfmAbnyepzI6m/qx2DaI+aDkMes94ujERmA7O6bb0100+LiClLymVLXYXNvkRBg7ot6NGlfyli/8x1h3IgL+HD8gFoWdTAN4oG8wE8ZyrFugnqmAHUDAy4h/KrOqB8VUXwGQh8Y/0ZxOBQb0KOaZJC/MUMbve8="); + + if( isBanned ) throw new UnauthorizedAccessException("The license key has expired."); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs.meta new file mode 100644 index 000000000..99ca00c12 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Connection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 13890c76c058a6845a846e910fa7d8e2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs new file mode 100644 index 000000000..ea4fb3899 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs @@ -0,0 +1,174 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Net.JsonConverters; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net +{ + /// + /// Configuration for RethinkDB's JSON serializer + /// + public static class Converter + { + static Converter() + { + InitializeDefault(); + } + + /// + /// Initializes default serializer settings. There is no need to call this manually + /// as it is already initialized in the static constructor. + /// + public static void InitializeDefault() + { + Converters = new JsonConverter[] + { + DateTimeConverter = new ReqlDateTimeConverter(), + BinaryConverter = new ReqlBinaryConverter(), + GroupingConverter = new ReqlGroupingConverter(), + PocoExprConverter = new PocoExprConverter(), + }; + + var settings = new JsonSerializerSettings() + { + Converters = Converters + }; + + Serializer = JsonSerializer.CreateDefault(settings); + } + + /// + /// An array of the JSON converters in this static class. + /// + public static JsonConverter[] Converters { get; set; } + + /// + /// The JSON serializer used for ser/deser. + /// + public static JsonSerializer Serializer { get; set; } + + + /// + /// DateTime converter to/from ReQL pseudo types + /// + public static ReqlDateTimeConverter DateTimeConverter { get; set; } + + /// + /// Binary converter to/from ReQL pseudo types + /// + public static ReqlBinaryConverter BinaryConverter { get; set; } + + /// + /// DateTime converter from ReQL grouping types + /// + public static ReqlGroupingConverter GroupingConverter { get; set; } + + /// + /// Allows anonymous types to be composed with ReQL expressions like R.Now() + /// + public static PocoExprConverter PocoExprConverter { get; set; } + + + /// + /// The pseudo type key + /// + public const string PseudoTypeKey = "$reql_type$"; + + /// + /// Discriminator for TIME types. + /// + public const string Time = "TIME"; + + /// + /// Discriminator for GROUPED_DATA types. + /// + public const string GroupedData = "GROUPED_DATA"; + + /// + /// Discriminator for GEOMETRY types. + /// + public const string Geometry = "GEOMETRY"; + + /// + /// Discriminator for BINARY types. + /// + public const string Binary = "BINARY"; + + + /// + /// Method for converting pseudo types in JToken (JObjects) + /// + public static void ConvertPseudoTypes(JToken data, FormatOptions fmt) + { + var reqlTypes = data.SelectTokens("$..$reql_type$").ToList(); + + foreach (var typeToken in reqlTypes) + { + var reqlType = typeToken.Value(); + //JObject -> JProerty -> JVaule:$reql_type$, go backup the chain. + var pesudoObject = typeToken.Parent.Parent as JObject; + + JToken convertedValue = null; + if (reqlType == Time) + { + if (fmt.RawTime) + continue; + convertedValue = new JValue(GetTime(pesudoObject)); + } + else if (reqlType == GroupedData) + { + if (fmt.RawGroups) + continue; + convertedValue = GetGrouped(pesudoObject); + } + else if (reqlType == Binary) + { + if (fmt.RawBinary) + continue; + convertedValue = new JValue(GetBinary(pesudoObject)); + } + else if (reqlType == Geometry) + { + // Nothing specific here + continue; + } + else + { + // Just leave unknown pseudo-types alone + continue; + } + + pesudoObject.Replace(convertedValue); + } + } + + private static object GetTime(JObject value) + { + double epoch_time = value["epoch_time"].ToObject(); + string timezone = value["timezone"].ToString(); + + if (Serializer.DateParseHandling == DateParseHandling.DateTime) + { + return ReqlDateTimeConverter.ConvertDateTime(epoch_time, timezone, Serializer.DateTimeZoneHandling); + } + else + { + return ReqlDateTimeConverter.ConvertDateTimeOffset(epoch_time, timezone); + } + } + + private static byte[] GetBinary(JObject value) + { + var base64 = value["data"].Value(); + return Convert.FromBase64String(base64); + } + + private static JToken GetGrouped(JObject value) + { + return value["data"]; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs.meta new file mode 100644 index 000000000..2feccd66d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Converter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2453721256548514781b8a5a88b3910f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs new file mode 100644 index 000000000..176416807 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs @@ -0,0 +1,114 @@ +using System; +using System.Security.Cryptography; +using System.Text; + +namespace RethinkDb.Driver.Net +{ + internal class Crypto + { + private static readonly SecureRandom SecureRandom = new SecureRandom(); + + private const int NonceBytes = 18; + + public const int Pbkdf2Iterations = 4096; + + + public static byte[] Sha256(byte[] clientKey) + { + using( var sha = new IncrementalSHA256() ) + { + sha.AppendData(clientKey); + return sha.GetHashAndReset(); + } + } + + public static byte[] Hmac(byte[] key, string str) + { + using( var mac = new HMACSHA256(key) ) + { + return mac.ComputeHash(Encoding.UTF8.GetBytes(str)); + } + } + + public static byte[] Pbkdf2(byte[] password, byte[] salt, int iterations = Pbkdf2Iterations) + { + /* + // Algorithm Credits to https://github.com/vexocide + // + // Implements PBKDF2WithHmacSHA256 in Java. Beautifully Amazing. + using (var mac = new HMACSHA256(password)) + { + mac.TransformBlock(salt, 0, salt.Length, salt, 0); + byte[] i = { 0, 0, 0, 1 }; + mac.TransformFinalBlock(i, 0, i.Length); + byte[] t = mac.Hash; + mac.Initialize(); + + byte[] u = t; + for (uint c = 2; c <= iterations; c++) + { + t = mac.ComputeHash(t); + for (int j = 0; j < mac.HashSize / 8; j++) + { + u[j] ^= t[j]; + } + } + + return u; + } +*/ +#if STANDARD + using( var macSalt = IncrementalHash.CreateHMAC(HashAlgorithmName.SHA256, password) ) +#endif + using ( var mac = new HMACSHA256(password) ) + { +#if STANDARD + macSalt.AppendData(salt); +#else + mac.TransformBlock(salt, 0, salt.Length, salt, 0); +#endif + byte[] i = {0, 0, 0, 1}; +#if STANDARD + macSalt.AppendData(i); +#else + mac.TransformFinalBlock(i, 0, i.Length); +#endif +#if STANDARD + byte[] t = macSalt.GetHashAndReset(); +#else + byte[] t = mac.Hash; + mac.Initialize(); +#endif + + byte[] u = t; + + for( uint c = 2; c <= iterations; c++ ) + { + t = mac.ComputeHash(t); + for( int j = 0; j < mac.HashSize / 8; j++ ) + { + u[j] ^= t[j]; + } + } + + return u; + } + } + + public static string MakeNonce() + { + byte[] rawNonce = new byte[NonceBytes]; + SecureRandom.GetBytes(rawNonce); + return Convert.ToBase64String(rawNonce); + } + + public static byte[] Xor(byte[] a, byte[] b) + { + byte[] result = new byte[a.Length]; + for( var i = 0; i < result.Length; i++ ) + result[i] = (byte)(a[i] ^ b[i]); + + return result; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs.meta new file mode 100644 index 000000000..7d3321997 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Crypto.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 520c9044a892be34b86c5e71a62cc17b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs new file mode 100644 index 000000000..6832182b3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs @@ -0,0 +1,340 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net +{ + /// + /// Cursor that handles stream types of responses. + /// + /// The underlying item being iterated over. + public class Cursor : IEnumerable, IEnumerator, ICursor + { + private readonly Connection conn; + + private bool TIsJToken = false; + + private Query query; + + internal Cursor(Connection conn, Query query, Response firstResponse) + { + this.conn = conn; + this.query = query; + this.IsFeed = firstResponse.IsFeed; + this.Token = query.Token; + this.TIsJToken = typeof(T).IsJToken(); + + this.fmt = FormatOptions.FromOptArgs(query.GlobalOptions); + + this.conn.AddToCache(this.Token, this); + //is the first response all there is? + this.sequenceFinished = firstResponse.Type == ResponseType.SUCCESS_SEQUENCE; + MaybeSendContinue(); + ExtendBuffer(firstResponse); + } + + /// + /// The size of the buffered items. + /// + public int BufferedSize => this.items.Count; + + /// + /// The list of items in the queue. This does not include the Current item. + /// + public List BufferedItems => items.Select(Convert).ToList(); + + /// + /// Whether the Cursor is any kind of feed. + /// + public bool IsFeed { get; } + + /// + /// A flag to determine if the cursor can still be used. + /// + public bool IsOpen => this.Error == null; + + /// + /// If any, the error that disabled the cursor. + /// + public Exception Error { get; private set; } + + /// + /// The token of the query that the cursor represents. This is a unique cursor ID. + /// + public long Token { get; } + + private Task pendingContinue; + + private readonly Queue items = new Queue(); + + //we need these to keep track of the run options + //for things like "time_format: 'raw'" + private FormatOptions fmt; + + void AdvanceCurrent() + { + var item = items.Dequeue(); + this.Current = Convert(item); + } + + /// + /// Advances the cursor to the next item. This is a blocking operation + /// if there are no buffered items to advance on and a response from + /// the server is needed. + /// + public bool MoveNext() + { + return MoveNextAsync().WaitSync(); + } + + /// + /// Asynchronously advances the cursor to the next item. + /// + /// + /// + /// + /// Used to cancel the advancement of the next item if it takes too long. + /// + /// + /// The has no effect if the cursor still + /// has buffered items to draw from. Cancellation pertains to the + /// wait on an outstanding network request that is taking too long. + /// + /// + /// If the is canceled before + /// is called, + /// is thrown immediately before any operation begins. + /// + /// + /// Additionally, cancellation is a safe operation. When + /// a is thrown, the exception will + /// not disrupt the ordering of cursor items. Cancellation only pertains to + /// the semantic *wait* on a pending network request. Cancellation will not + /// cancel an already in-progress network request for more items. + /// Therefore, a + /// will not disrupt the success of future precedent calls + /// to . Network requests will still arrive + /// in order at some later time. + /// + /// + /// + /// + /// + /// Thrown when is canceled before + /// is called. + /// + /// + /// Thrown when there are no buffered items to draw from and operation + /// requires waiting on a response from the server. + /// + /// + /// When is thrown the exception + /// will not disrupt the ordering of items. Any non-canceled precedent calls to + /// from an antecedent canceled + /// will advance the cursor normally and maintain ordering of items. + /// + /// + public async Task MoveNextAsync(CancellationToken cancelToken = default) + { + cancelToken.ThrowIfCancellationRequested(); + while( items.Count == 0 ) + { + if( !this.IsOpen ) return false; + + //our buffer is empty, we need to expect the next batch of items. + + if( !this.pendingContinue.IsCompleted ) + { + //the next batch isn't here yet. so, + //let's await and honor the cancelToken. + + //create a task that is controlled by the token. + using( var cancelTask = new CancellableTask(cancelToken) ) + { + //now await on either task, pending or the cancellation of the CancellableTask. + await Task.WhenAny(this.pendingContinue, cancelTask.Task).ConfigureAwait(false); + //if it was the cancelTask that triggered the continuation... throw if requested. + cancelToken.ThrowIfCancellationRequested(); + //else, no cancellation was requested. + //we can proceed by processing the results we awaited for. + } //ensure the disposal of the cancelToken registration upon exiting scope + } + + //if we get here, the next batch should be available. + var newBatch = this.pendingContinue.Result; + this.pendingContinue = null; + MaybeSendContinue(); + this.ExtendBuffer(newBatch); + } + + //either way, we have something to advance. + AdvanceCurrent(); + + return true; + } + + void MaybeSendContinue() + { + if( this.IsOpen && this.conn.Open && pendingContinue == null && !sequenceFinished ) + { + this.pendingContinue = this.conn.Continue(this); + } + } + + void ExtendBuffer(Response response) + { + if( this.IsOpen ) + { + if( response.IsPartial ) + { + //SUCCESS_PARTIAL + foreach( var jToken in response.Data ) + { + items.Enqueue(jToken); + } + } + else if( response.IsSequence ) + { + //SUCCESS_SEQUENCE + foreach( var jToken in response.Data ) + { + items.Enqueue(jToken); + } + this.SequenceFinished(); + } + else if ( response.IsError ) + { + var ex = response.MakeError(query); + this.Shutdown(ex); + throw ex; + } + else + { + throw new NotSupportedException( + $"Cursor cannot extend the response. The response was not a SUCCESS_PARTIAL or SUCCESS_SEQUENCE. The response type the cursor received was {response.Type}."); + } + } + } + + T Convert(JToken token) + { + if( this.TIsJToken ) + { + Converter.ConvertPseudoTypes(token, fmt); + return (T)(object)token; //ugh ugly. find a better way to do this. + } + return token.ToObject(Converter.Serializer); + } + + bool sequenceFinished; + + void SequenceFinished() + { + sequenceFinished = true; + this.Shutdown("The sequence is finished. There are no more items to iterate over."); + } + + /// + /// Disposes the Cursor so it cannot be used anymore. + /// + public void Dispose() + { + this.Shutdown("The Cursor was disposed. Iteration cannot continue. If the Cursor was used in a LINQ expression LINQ may have called .Dispose() on the Cursor."); + } + + /// + /// Forcibly closes the Cursor so it cannot be used anymore. + /// + public void Close() + { + this.Shutdown("The Cursor was forcibly closed. Iteration cannot continue."); + } + + + void Shutdown(Exception ex) + { + if (this.conn.Open && this.IsOpen) + { + conn.RemoveFromCache(this.Token); + if (!sequenceFinished) + { + conn.Stop(this); + } + SetError(ex); + } + else + { + SetError(ex); + } + } + + void Shutdown(string reason) + { + Shutdown(new InvalidOperationException(reason)); + } + + internal void SetError(Exception ex) + { + if (this.Error != null) return; + this.Error = ex; + } + + //Some trickery just so we don't expose SetError + //on the public API surface. + internal void SetError(string msg) + { + SetError(new InvalidOperationException(msg)); + } + + void ICursor.SetError(string msg) + { + SetError(msg); + } + + /// + /// Clears . Any advancement after the buffer + /// is cleared will cause a new batch of items to be buffered. + /// + public void ClearBuffer() + { + this.items.Clear(); + } + + /// + /// Throws always. A Cursor cannot be reset. Hidden from public use. + /// + /// Throws always. A Cursor cannot be reset. + void IEnumerator.Reset() + { + throw new InvalidOperationException("A Cursor cannot be reset."); + } + + /// + /// The current item in iteration. + /// + public T Current { get; private set; } + + object IEnumerator.Current => this.Current; + + /// + /// The cursor's enumerator + /// + public IEnumerator GetEnumerator() + { + return this; + } + + IEnumerator IEnumerable.GetEnumerator() + { + return GetEnumerator(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs.meta new file mode 100644 index 000000000..8995d4c37 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Cursor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: efa25d2552a05b84eb1d792271c688c7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs new file mode 100644 index 000000000..d9280bc46 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs @@ -0,0 +1,52 @@ +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; + +namespace RethinkDb.Driver.Net +{ + /// + /// ReQL pseudo type format options for JToken (JObject, JArray) derivatives. + /// + public class FormatOptions + { + /// + /// Leave $reql_time$:TIME types as raw + /// + public bool RawTime { get; set; } + /// + /// Leave $reql_time$:GROUPED_DATA types as raw + /// + public bool RawGroups { get; set; } + + /// + /// Leave $reql_time$:BINARY types as raw + /// + public bool RawBinary { get; set; } + + /// + /// Format options for JToken + /// + public FormatOptions() + { + } + + /// + /// Factory method for FormatOptions from OptArgs + /// + public static FormatOptions FromOptArgs(OptArgs args) + { + var fmt = new FormatOptions(); + // TODO: find a better way to do this. + ReqlAst datum; + var value = args.TryGetValue("time_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum; + fmt.RawTime = value.Equals("raw"); + + value = args.TryGetValue("binary_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum; + fmt.RawBinary = value.Equals("raw"); + + value = args.TryGetValue("group_format", out datum) ? ((Datum)datum).datum : new Datum("native").datum; + fmt.RawGroups = value.Equals("raw"); + + return fmt; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs.meta new file mode 100644 index 000000000..037bc80e9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/FormatOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cc0c1e2627ddd3340a9f175623a07970 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs new file mode 100644 index 000000000..2898e3872 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs @@ -0,0 +1,305 @@ +using System.IO; +using System.Linq; +using System.Text; +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Net +{ + internal class Handshake + { + const Proto.Version Version = Proto.Version.V1_0; + const long SubProtocolVersion = 0L; + const Proto.Protocol Protocol = Proto.Protocol.JSON; + + private const string ClientKey = "Client Key"; + private const string ServerKey = "Server Key"; + + private string username; + private string password; + + private IProtocolState state; + + private interface IProtocolState + { + IProtocolState NextState(string response); + byte[] ToSend(); + bool IsFinished { get; } + } + + public Handshake(string username, string password) + { + this.username = username; + this.password = password; + } + + class InitialState : IProtocolState + { + private readonly string nonce; + private readonly string username; + private readonly byte[] password; + + internal InitialState(string username, string password) + { + this.username = username; + this.password = Encoding.UTF8.GetBytes(password); + this.nonce = Crypto.MakeNonce(); + } + + public IProtocolState NextState(string response) + { + if( response != null ) + { + throw new ReqlDriverError("Unexpected response"); + } + // We could use a json serializer, but it's fairly straightforward + var clientFirstMessageBare = new ScramAttributes() + .SetUsername(username) + .SetNonce(nonce); + + byte[] jsonBytes = Encoding.UTF8.GetBytes( + "{" + + "\"protocol_version\":" + SubProtocolVersion + "," + + "\"authentication_method\":\"SCRAM-SHA-256\"," + + "\"authentication\":" + "\"n,," + clientFirstMessageBare + "\"" + + "}" + ); + + byte[] msg; + using (var ms = new MemoryStream()) + using (var bw = new BinaryWriter(ms)) + { + bw.Write((int)Version); + bw.Write(jsonBytes); + bw.Write('\0'); + bw.Flush(); + msg = ms.ToArray(); + } + + return new WaitingForProtocolRange( + nonce, password, clientFirstMessageBare, msg); + } + + + public byte[] ToSend() + { + return null; + } + + + public bool IsFinished => false; + } + + class WaitingForProtocolRange : IProtocolState + { + private string nonce; + private byte[] message; + private ScramAttributes clientFirstMessageBare; + private byte[] password; + + internal WaitingForProtocolRange( + string nonce, + byte[] password, + ScramAttributes clientFirstMessageBare, + byte[] message) + { + this.nonce = nonce; + this.password = password; + this.clientFirstMessageBare = clientFirstMessageBare; + this.message = message; + } + + + public IProtocolState NextState(string response) + { + var json = JObject.Parse(response); + ThrowIfFailure(json); + long minVersion = json["min_protocol_version"].Value(); + long maxVersion = json["max_protocol_version"].Value(); + if( SubProtocolVersion < minVersion || SubProtocolVersion > maxVersion ) + { + throw new ReqlDriverError( + "Unsupported protocol version " + SubProtocolVersion + + ", expected between " + minVersion + " and " + maxVersion); + } + return new WaitingForAuthResponse(nonce, password, clientFirstMessageBare); + } + + + public byte[] ToSend() + { + return message; + } + + + public bool IsFinished => false; + } + + private class WaitingForAuthResponse : IProtocolState + { + private string nonce; + private byte[] password; + private ScramAttributes clientFirstMessageBare; + + public WaitingForAuthResponse(string nonce, byte[] password, ScramAttributes clientFirstMessageBare) + { + this.nonce = nonce; + this.password = password; + this.clientFirstMessageBare = clientFirstMessageBare; + } + + + public IProtocolState NextState(string response) + { + var json = JObject.Parse(response); + ThrowIfFailure(json); + string serverFirstMessage = json["authentication"].Value(); + ScramAttributes serverAuth = ScramAttributes.From(serverFirstMessage); + if( !serverAuth.Nonce.StartsWith(nonce) ) + { + throw new ReqlAuthError("Invalid nonce from server"); + } + ScramAttributes clientFinalMessageWithoutProof = new ScramAttributes() + .SetHeaderAndChannelBinding("biws") + .SetNonce(serverAuth.Nonce); + + // SaltedPassword := Hi(Normalize(password), salt, i) + byte[] saltedPassword = Crypto.Pbkdf2( + password, serverAuth.Salt, serverAuth.IterationCount); + + // ClientKey := HMAC(SaltedPassword, "Client Key") + byte[] clientKey = Crypto.Hmac(saltedPassword, ClientKey); + + // StoredKey := H(ClientKey) + byte[] storedKey = Crypto.Sha256(clientKey); + + // AuthMessage := client-first-message-bare + "," + + // server-first-message + "," + + // client-final-message-without-proof + string authMessage = + clientFirstMessageBare + "," + + serverFirstMessage + "," + + clientFinalMessageWithoutProof; + + // ClientSignature := HMAC(StoredKey, AuthMessage) + byte[] clientSignature = Crypto.Hmac(storedKey, authMessage); + + // ClientProof := ClientKey XOR ClientSignature + byte[] clientProof = Crypto.Xor(clientKey, clientSignature); + + // ServerKey := HMAC(SaltedPassword, "Server Key") + byte[] serverKey = Crypto.Hmac(saltedPassword, ServerKey); + + // ServerSignature := HMAC(ServerKey, AuthMessage) + byte[] serverSignature = Crypto.Hmac(serverKey, authMessage); + + ScramAttributes auth = clientFinalMessageWithoutProof + .SetClientProof(clientProof); + byte[] authJson = Encoding.UTF8.GetBytes("{\"authentication\":\"" + auth + "\"}"); + + byte[] message; + using (var ms = new MemoryStream()) + using (var bw = new BinaryWriter(ms)) + { + bw.Write(authJson); + bw.Write('\0'); + bw.Flush(); + message = ms.ToArray(); + } + + return new WaitingForAuthSuccess(serverSignature, message); + } + + + public byte[] ToSend() + { + return null; + } + + + public bool IsFinished => false; + } + + private class WaitingForAuthSuccess : IProtocolState + { + private byte[] serverSignature; + private byte[] message; + + public WaitingForAuthSuccess(byte[] serverSignature, byte[] message) + { + this.serverSignature = serverSignature; + this.message = message; + } + + + public IProtocolState NextState(string response) + { + var json = JObject.Parse(response); + ThrowIfFailure(json); + ScramAttributes auth = ScramAttributes + .From(json["authentication"].Value()); + + + if( !auth.ServerSignature.SequenceEqual(serverSignature) ) + { + throw new ReqlAuthError("Invalid server signature"); + } + return new HandshakeSuccess(); + } + + + public byte[] ToSend() + { + return message; + } + + + public bool IsFinished => false; + } + + private class HandshakeSuccess : IProtocolState + { + public IProtocolState NextState(string response) + { + return this; + } + + + public byte[] ToSend() + { + return null; + } + + + public bool IsFinished => true; + } + + static void ThrowIfFailure(JObject json) + { + if( !json["success"].Value() ) + { + long errorCode = json["error_code"].Value(); + if( errorCode >= 10 && errorCode <= 20 ) + { + throw new ReqlAuthError(json["error"].Value()); + } + else + { + throw new ReqlDriverError(json["error"].Value()); + } + } + } + + public void Reset() + { + this.state = new InitialState(this.username, this.password); + } + + public byte[] NextMessage(string response) + { + this.state = this.state.NextState(response); + return this.state.ToSend(); + } + + public bool IsFinished => this.state.IsFinished; + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs.meta new file mode 100644 index 000000000..9034cfbb7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Handshake.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2b9cb132d245e664e806a3b7c0b652bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs new file mode 100644 index 000000000..75c45d383 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs @@ -0,0 +1,45 @@ +using System; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Ast; + +namespace RethinkDb.Driver.Net +{ + /// + /// Represents a marker interface for either a Connection or ConnectionPool. + /// This should really only be used for IoC purpose. Do not call methods + /// explicitly from this interface, instead the Run* methods at the end of a query. + /// + public interface IConnection : IDisposable + { + /// + /// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY. + /// + Task RunAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + + /// + /// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY. + /// + Task> RunCursorAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + + /// + /// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY. + /// + Task RunAtomAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + + /// + /// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY. + /// + Task RunResultAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + + /// + /// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY. + /// + void RunNoReply(ReqlAst term, object globalOpts); + + /// + /// DO NOT CALL THIS METHOD EXPLICITLY. USE Run*() METHODS AT THE END OF YOUR QUERY. + /// + Task RunUnsafeAsync(ReqlAst term, object globalOpts, CancellationToken cancelToken); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs.meta new file mode 100644 index 000000000..cfa76c4a3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnection.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8b78a9769d0fd274881483ca8b87d5d1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs new file mode 100644 index 000000000..b9f93a5bf --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs @@ -0,0 +1,20 @@ +namespace RethinkDb.Driver.Net +{ + internal interface IConnectionBuilder + { + /// + /// The default DB for queries. + /// + TBuilder Db(string val); + + /// + /// The authorization key to the server. + /// + TBuilder AuthKey(string key); + + /// + /// The user account and password to connect as (default "admin", ""). + /// + TBuilder User(string user, string password); + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs.meta new file mode 100644 index 000000000..9d517cf22 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IConnectionBuilder.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b65fae6ab0a16d34f92a9de08a36be24 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs new file mode 100644 index 000000000..c76d198f8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs @@ -0,0 +1,10 @@ +using System.Collections; + +namespace RethinkDb.Driver.Net +{ + internal interface ICursor : IEnumerable, IEnumerator + { + void SetError(string msg); + long Token { get; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs.meta new file mode 100644 index 000000000..ffdf08c25 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ICursor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ec8198cae2ae6247afc3c71d4ecc827 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs new file mode 100644 index 000000000..764fefb6d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs @@ -0,0 +1,71 @@ +using System; +using System.Security.Cryptography; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net +{ + /// + /// Cross platform SHA 256 Hasher + /// + public class IncrementalSHA256 : IDisposable + { +#if STANDARD + private IncrementalHash hasher; +#else + private SHA256 hasher; +#endif + + /// + /// Constructor + /// + public IncrementalSHA256() + { +#if STANDARD + hasher = IncrementalHash.CreateHash(HashAlgorithmName.SHA256); +#else + hasher = SHA256.Create(); +#endif + } + + /// + /// Updates the hash value + /// + public void AppendData(byte[] data) + { +#if STANDARD + hasher.AppendData(data); +#else + hasher.TransformBlock(data, 0, data.Length, null, 0); +#endif + } + + /// + /// Gets the final hash calculation in hex string. + /// + public string GetHashStringAndReset() + { + return StringHelper.GetHexString(GetHashAndReset()); + } + + /// + /// Gets the final hash calculation as byte array. + /// + public byte[] GetHashAndReset() + { +#if STANDARD + return hasher.GetHashAndReset(); +#else + hasher.TransformFinalBlock(new byte[0], 0, 0); + return hasher.Hash; +#endif + } + + /// + /// Disposes the hasher. + /// + public void Dispose() + { + hasher.Dispose(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs.meta new file mode 100644 index 000000000..90f1b79f3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/IncrementalSHA256.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39f7ba06bee9ee949a2f115cd645075a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters.meta new file mode 100644 index 000000000..7d7886f96 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ef607916570060e43b43ffe5f2b2b130 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs new file mode 100644 index 000000000..ce848e5ed --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs @@ -0,0 +1,25 @@ +using System; +using Newtonsoft.Json; + +namespace RethinkDb.Driver.Net.JsonConverters +{ + internal static class ExtensionsForJsonConverters + { + public static void ReadAndAssertProperty(this JsonReader reader, string propertyName) + { + ReadAndAssert(reader); + if( (reader.TokenType != JsonToken.PropertyName) || !string.Equals(reader.Value.ToString(), propertyName, StringComparison.OrdinalIgnoreCase) ) + { + throw new JsonSerializationException($"Expected JSON property '{propertyName}'."); + } + } + + public static void ReadAndAssert(this JsonReader reader) + { + if( !reader.Read() ) + { + throw new JsonSerializationException("Unexpected end."); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs.meta new file mode 100644 index 000000000..550d33521 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ExtensionsForJsonConverters.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c6e4e9ce7bc4f42469f6e3f654828297 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs new file mode 100644 index 000000000..0ce62eb94 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs @@ -0,0 +1,61 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using Newtonsoft.Json; + +namespace RethinkDb.Driver.Net.JsonConverters +{ + public class ReqlBinaryConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteStartObject(); //convert to $reql_type$ + writer.WritePropertyName(Converter.PseudoTypeKey); + writer.WriteValue(Converter.Binary); + writer.WritePropertyName("data"); + + writer.WriteValue(Convert.ToBase64String((byte[])value)); + writer.WriteEndObject(); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if( reader.TokenType == JsonToken.Null ) + { + return null; + } + + if( reader.TokenType != JsonToken.StartObject ) + { + var msg = string.Join(" ", + $"The JSON representation of binary data (byte[]) when parsing the server response is not a {Converter.PseudoTypeKey}:{Converter.Binary} object.", + $"This happens if your JSON document contains binary data (byte[]) in some other format (like a base64 string only) rather than a native RethinkDB pseudo type {Converter.PseudoTypeKey}:{Converter.Binary} object.", + $"If you are overriding the default Ser/Deserialization process, you need to make sure byte[] is a native {Converter.PseudoTypeKey}:{Converter.Binary} objects before using the built-in {nameof(ReqlBinaryConverter)}.", + "See https://rethinkdb.com/docs/data-types/ for more information about how binary data is represented in RethinkDB."); + throw new JsonSerializationException(msg); + } + + reader.ReadAndAssertProperty(Converter.PseudoTypeKey); + var reql_type = reader.ReadAsString(); + if( reql_type != Converter.Binary ) + { + throw new JsonSerializationException($"Expected {Converter.PseudoTypeKey} should be {Converter.Binary} but got {reql_type}."); + } + + reader.ReadAndAssertProperty("data"); + + var data = reader.ReadAsBytes(); + + //realign and get out of the pseudo type + //one more post read to align out of { reql_type:BINARY, data:""} + reader.ReadAndAssert(); + + return data; + } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(byte[]); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs.meta new file mode 100644 index 000000000..3019a675e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlBinaryConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5cb78180ac36d2f4ca867e62e0134f72 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs new file mode 100644 index 000000000..339681c3c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs @@ -0,0 +1,143 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Net.JsonConverters +{ + public class ReqlDateTimeConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + writer.WriteStartObject(); + writer.WritePropertyName(Converter.PseudoTypeKey); + writer.WriteValue(Converter.Time); + writer.WritePropertyName("epoch_time"); + DateTimeOffset dto; + if( value is DateTimeOffset ) + { + dto = (DateTimeOffset)value; + } + else //value is DateTime + { + var dt = (DateTime)value; + if( dt == DateTime.MinValue ) + { //Ugh. Make MinValue consistent cross-platform on Windows and Linux. + //See: https://github.com/dotnet/corefx/issues/9019 + // https://github.com/bchavez/RethinkDb.Driver/issues/66 + //Either way, we shunt the value to MinValue and avoid + //conversion of MinValue. + dto = DateTimeOffset.MinValue; + } + else + { + dto = new DateTimeOffset((DateTime)value); + } + } + writer.WriteValue(ToUnixTime(dto)); + writer.WritePropertyName("timezone"); + var offset = $"{(dto.Offset < TimeSpan.Zero ? "-" : "+")}{dto.Offset.ToString("hh':'mm")}"; + writer.WriteValue(offset); + writer.WriteEndObject(); + } + + //http://stackoverflow.com/questions/2883576/how-do-you-convert-epoch-time-in-c + public static double ToUnixTime(DateTimeOffset date) + { + return ToUnixTime(date.UtcTicks); + } + + public static double ToUnixTime(long utcTicks) + { + return (utcTicks - 621355968000000000) / 10000000.0; + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if( reader.TokenType == JsonToken.Null ) + { + return null; + } + + if( reader.TokenType != JsonToken.StartObject ) + { + var msg = string.Join(" ", + $"The JSON representation of a DateTime/DateTimeOffset when parsing the server response is not a {Converter.PseudoTypeKey}:{Converter.Time} object.", + $"This happens if your JSON document contains DateTime/DateTimeOffsets in some other format (like an ISO8601 string) rather than a native RethinkDB pseudo type {Converter.PseudoTypeKey}:{Converter.Time} object.", + $"If you are overriding the default Ser/Deserialization process, you need to make sure DateTime/DateTimeOffset are native {Converter.PseudoTypeKey}:{Converter.Time} objects before using the built-in {nameof(ReqlDateTimeConverter)}.", + "See https://rethinkdb.com/docs/data-types/ for more information about how Date and Times are represented in RethinkDB."); + throw new JsonSerializationException(msg); + } + + reader.ReadAndAssertProperty(Converter.PseudoTypeKey); + var reql_type = reader.ReadAsString(); + if( reql_type != Converter.Time ) + { + throw new JsonSerializationException($"Expected {Converter.PseudoTypeKey} should be {Converter.Time} but got {reql_type}."); + } + + reader.ReadAndAssertProperty("epoch_time"); + var epoch_time = reader.ReadAsDouble(); + if( epoch_time == null ) + { + throw new JsonSerializationException($"The {Converter.PseudoTypeKey}:{Converter.Time} object doesn't have an epoch_time value."); + } + + reader.ReadAndAssertProperty("timezone"); + var timezone = reader.ReadAsString(); + + //realign and get out of the pseudo type + //one more post read to align out of { reql_type:TIME, .... } + reader.ReadAndAssert(); + + if( objectType == typeof(DateTimeOffset) || + objectType == typeof(DateTimeOffset?) ) + { + return ConvertDateTimeOffset(epoch_time.Value, timezone); + } + else + { + return ConvertDateTime(epoch_time.Value, timezone, serializer.DateTimeZoneHandling); + } + } + + public static DateTimeOffset ConvertDateTimeOffset(double epoch_time, string timezone) + { + var tz = TimeSpan.Parse(timezone.Substring(1)); + if (!timezone.StartsWith("+")) + tz = -tz; + + var epoch = new DateTimeOffset(1970, 1, 1, 0, 0, 0, TimeSpan.Zero); + var dt = epoch + TimeSpan.FromSeconds(epoch_time); + + return dt.ToOffset(tz); + } + + public static DateTime ConvertDateTime(double epoch_time, string timezone, DateTimeZoneHandling tzHandle) + { + var dto = ConvertDateTimeOffset(epoch_time, timezone); + switch (tzHandle) + { + case DateTimeZoneHandling.Local: + return dto.LocalDateTime; + case DateTimeZoneHandling.Utc: + return dto.UtcDateTime; + case DateTimeZoneHandling.Unspecified: + return dto.DateTime; + case DateTimeZoneHandling.RoundtripKind: + return dto.Offset == TimeSpan.Zero ? dto.UtcDateTime : dto.LocalDateTime; + default: + throw new JsonSerializationException("Invalid date time handling value."); + } + } + + public override bool CanConvert(Type objectType) + { + return objectType == typeof(DateTime) || + objectType == typeof(DateTimeOffset) || + objectType == typeof(DateTime?) || + objectType == typeof(DateTimeOffset?); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs.meta new file mode 100644 index 000000000..2b98b1677 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlDateTimeConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ba36484df4f4ab949b54a32971537ccf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs new file mode 100644 index 000000000..a7bb962a0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs @@ -0,0 +1,33 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net.JsonConverters +{ + public class PocoExprConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + var ast = value as ReqlExpr; + var expr = ast.Build() as JToken; + writer.WriteRawValue(expr.ToString(Formatting.None, Converter.Converters)); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + + public override bool CanRead => false; + + public override bool CanConvert(Type objectType) + { + return objectType.IsASubclassOf(typeof(ReqlExpr)); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs.meta new file mode 100644 index 000000000..066960f7d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlExprConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 35629bac807d1f94da7baae55e957070 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs new file mode 100644 index 000000000..61d2f2ef3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs @@ -0,0 +1,97 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using System.Collections; +using System.Collections.Generic; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net.JsonConverters +{ + public class ReqlGroupingConverter : JsonConverter + { + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new JsonSerializationException($"{nameof(ReqlGroupingConverter)} can't be used to serialize grouping results."); + } + + //EXAMPLE: + // "r": [ + // { + // "$reql_type$": "GROUPED_DATA", + // "data": [ + // [ + // "Alice", + // [ + // { "id": 5, "player": "Alice", "points": 7, "type": "free"}, + // { "id": 12, "player": "Alice", "points": 2, "type": "free" } + // ] + // ], + // [ + // "Bob", + // [ + // { "id": 2, "player": "Bob", "points": 15, "type": "ranked" }, + // { "id": 11, "player": "Bob", "points": 10, "type": "free" } + // ] + // ] + // ] + // } + // ] + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + reader.ReadAndAssertProperty(Converter.PseudoTypeKey); + var reql_type = reader.ReadAsString(); + if( reql_type != Converter.GroupedData ) + { + throw new JsonSerializationException($"Expected {Converter.PseudoTypeKey} should be {Converter.GroupedData} but got {reql_type}."); + } + + reader.ReadAndAssertProperty("data"); + + //move reader to property value + reader.ReadAndAssert(); + + //... probably find a better way to do this. + var genType = objectType.GetGenericTypeDefinition(); + IList list; + if( genType == typeof(GroupedResultSet<,>) ) + { + list = (IList)Activator.CreateInstance(objectType); + objectType = objectType.BaseType().GenericTypeArguments[0]; + } + else + { + var listType = typeof(List<>).MakeGenericType(objectType); + list = (IList)Activator.CreateInstance(listType); + } + + var data = serializer.Deserialize>(reader); + + foreach( var group in data ) + { + var key = group[0]; //key, group value in common + var items = group[1]; //the grouped items + var grouping = Activator.CreateInstance(objectType, key, items); + list.Add(grouping); + } + //.Select(arr => Activator.CreateInstance(objectType, arr) ).ToList(); + + return list; + } + + public override bool CanWrite => false; + + public override bool CanConvert(Type objectType) + { + if( objectType.IsGenericType() ) + { + var genType = objectType.GetGenericTypeDefinition(); + return genType == typeof(GroupedResult<,>) || + genType == typeof(GroupedResultSet<,>); + } + return false; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs.meta new file mode 100644 index 000000000..85b7fbed7 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/JsonConverters/ReqlGroupingConverter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3d210fc16b6f3940a3ea72c45674a8d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs new file mode 100644 index 000000000..3b7f41c13 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs @@ -0,0 +1,138 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Model; +using RethinkDb.Driver.Proto; + +namespace RethinkDb.Driver.Net +{ + /// + /// Response from the server. + /// + public class Response + { + private const string TypeKey = "t"; + private const string NotesKey = "n"; + private const string ErrorKey = "e"; + private const string ProfileKey = "p"; + private const string BacktraceKey = "b"; + private const string DataKey = "r"; + + /// + /// The token ID associated with the query. + /// + public long Token { get; } + + /// + /// The response type . + /// + public ResponseType Type { get; } + + /// + /// Notes about the response + /// + public List Notes { get; private set; } + + /// + /// The data payload. + /// + public JArray Data { get; private set; } + + /// + /// Profile information about the query + /// + public Profile Profile { get; private set; } + + /// + /// Backtrace information about a failed query. + /// + public Backtrace Backtrace { get; private set; } + + /// + /// The error type, if any. + /// + public ErrorType? ErrorType { get; private set; } + + private Response(long token, ResponseType responseType) + { + this.Token = token; + this.Type = responseType; + } + + /// + /// Parses a Response from a raw JSON string + /// + public static Response ParseFrom(long token, string buf) + { + //we check here because it's possibly very expensive to ship this buf around in the call stack + if( Log.IsTraceEnabled ) Log.Trace($"JSON Recv: Token: {token}, JSON: {buf}"); + + var jsonResp = ParseJson(buf); + var responseType = jsonResp[TypeKey].ToObject(); + var responseNotes = jsonResp[NotesKey]?.ToObject>() ?? new List(); + ErrorType? et = jsonResp[ErrorKey]?.ToObject(); + + var profile = Profile.FromJsonArray((JArray)jsonResp[ProfileKey]); + var backtrace = Backtrace.FromJsonArray((JArray)jsonResp[BacktraceKey]); + + var res = new Response(token, responseType) + { + ErrorType = et, + Profile = profile, + Backtrace = backtrace, + Data = (JArray)jsonResp[DataKey] ?? new JArray(), + Notes = responseNotes + }; + + return res; + } + + private static JObject ParseJson(string buf) + { + using( var reader = new JsonTextReader(new StringReader(buf)) ) + { + return Converter.Serializer.Deserialize(reader); + } + } + + + public virtual bool IsWaitComplete => this.Type == ResponseType.WAIT_COMPLETE; + + /* Whether the response is any kind of feed */ + + public virtual bool IsFeed => this.Notes.Any(rn => rn.IsFeed()); + + /* Whether the response is any kind of error */ + + public virtual bool IsError => this.Type.IsError(); + + /* What type of success the response contains */ + + public virtual bool IsAtom => this.Type == ResponseType.SUCCESS_ATOM; + + public virtual bool IsSequence => this.Type == ResponseType.SUCCESS_SEQUENCE; + + public virtual bool IsPartial => this.Type == ResponseType.SUCCESS_PARTIAL; + + public virtual ReqlError MakeError(Query query) + { + string msg = this.Data.Count > 0 ? (string)Data[0] : "Unknown error message"; + return new ErrorBuilder(msg, this.Type) + .SetBacktrace(this.Backtrace) + .SetErrorType(this.ErrorType.GetValueOrDefault()) + .SetTerm(query) + .Build(); + } + + /// + /// Pretty printing a response for diagnostics. + /// + public override string ToString() + { + return JsonConvert.SerializeObject(this, Formatting.Indented); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs.meta new file mode 100644 index 000000000..a73ac5376 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/Response.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c22d0431ebbad6643a59b606d49d370e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs new file mode 100644 index 000000000..4820c0ce4 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs @@ -0,0 +1,153 @@ +using System; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net +{ + internal class ScramAttributes + { + // Getters + public string AuthIdentity { get; private set; } // a + public string Username { get; private set; } // n + public string Nonce { get; private set; } // r + + public string HeaderAndChannelBinding { get; private set; } // c + public byte[] Salt { get; private set; } // s + public int IterationCount { get; private set; } // i + public string ClientProof { get; private set; } // p + public byte[] ServerSignature { get; private set; } // v + public string Error { get; private set; } // e + + public string OriginalString = null; + + public static ScramAttributes From(ScramAttributes other) + { + var obj = new ScramAttributes + { + AuthIdentity = other.AuthIdentity, + Username = other.Username, + Nonce = other.Nonce, + HeaderAndChannelBinding = other.HeaderAndChannelBinding, + Salt = other.Salt, + IterationCount = other.IterationCount, + ClientProof = other.ClientProof, + ServerSignature = other.ServerSignature, + Error = other.Error + }; + return obj; + } + + public static ScramAttributes From(string input) + { + var sa = new ScramAttributes + { + OriginalString = input + }; + + foreach( string section in input.Split(',')) + { + string[] keyVal = section.Split(new[] {'='}, 2); + sa.SetAttribute(keyVal[0], keyVal[1]); + } + return sa; + } + + private void SetAttribute(string key, string val) + { + switch( key ) + { + case "a": + this.AuthIdentity = val; + break; + case "n": + this.Username = val; + break; + case "r": + this.Nonce = val; + break; + case "m": + throw new ReqlAuthError("m field disallowed"); + case "c": + this.HeaderAndChannelBinding = val; + break; + case "s": + this.Salt = Convert.FromBase64String(val); + break; + case "i": + this.IterationCount = int.Parse(val); + break; + case "p": + this.ClientProof = val; + break; + case "v": + this.ServerSignature = Convert.FromBase64String(val); + break; + case "e": + this.Error = val; + break; + // Supposed to ignore unexpected fields + } + } + + public override string ToString() + { + if( this.OriginalString.IsNotNullOrEmpty() ) + { + return OriginalString; + } + string output = ""; + if( this.Username.IsNotNullOrEmpty() ) + { + output += ",n=" + this.Username; + } + if( this.Nonce.IsNotNullOrEmpty() ) + { + output += ",r=" + this.Nonce; + } + if( this.HeaderAndChannelBinding.IsNotNullOrEmpty() ) + { + output += ",c=" + this.HeaderAndChannelBinding; + } + if( this.ClientProof.IsNotNullOrEmpty() ) + { + output += ",p=" + this.ClientProof; + } + if( output.StartsWith(",") ) + { + return output.Substring(1); + } + else + { + return output; + } + } + + // Setters with coercion + public ScramAttributes SetUsername(string username) + { + ScramAttributes next = ScramAttributes.From(this); + next.Username = username.Replace("=", "=3D").Replace(",", "=2C"); + return next; + } + + public ScramAttributes SetNonce(string nonce) + { + ScramAttributes next = ScramAttributes.From(this); + next.Nonce = nonce; + return next; + } + + public ScramAttributes SetHeaderAndChannelBinding(string hacb) + { + ScramAttributes next = ScramAttributes.From(this); + next.HeaderAndChannelBinding = hacb; + return next; + } + + public ScramAttributes SetClientProof(byte[] clientProof) + { + ScramAttributes next = ScramAttributes.From(this); + next.ClientProof = Convert.ToBase64String(clientProof); + return next; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs.meta new file mode 100644 index 000000000..b2d21eba9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/ScramAttributes.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3565692b3c0c60942858ad1607db7623 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs new file mode 100644 index 000000000..d61c4d8c9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs @@ -0,0 +1,20 @@ +using System; +using System.Security.Cryptography; + +namespace RethinkDb.Driver.Net +{ + internal class SecureRandom : IDisposable + { + private RandomNumberGenerator random = RandomNumberGenerator.Create(); + + public void GetBytes(byte[] data) + { + random.GetBytes(data); + } + + public void Dispose() + { + random.Dispose(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs.meta new file mode 100644 index 000000000..9f55983a8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SecureRandom.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8cccff0c3a039c64b9f990f21d85ec53 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs new file mode 100644 index 000000000..2b028679d --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs @@ -0,0 +1,396 @@ +using System; +using System.Collections.Concurrent; +using System.IO; +using System.Net; +using System.Net.Security; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Utils; + +namespace RethinkDb.Driver.Net +{ + internal class SocketWrapper + { + private Socket socket; + + private readonly TimeSpan timeout; + + private readonly string hostname; + private readonly int port; + private readonly Action errorCallback; + + private NetworkStream ns = null; + private BinaryWriter bw = null; + private BinaryReader br = null; + + private SslContext sslContext; + + private SslStream ssl = null; + + public SocketWrapper(string hostname, int port, TimeSpan? timeout, SslContext sslContext, Action errorCallback) + { + this.hostname = hostname; + this.port = port; + this.errorCallback = errorCallback; + this.sslContext = sslContext; + + this.timeout = timeout ?? TimeSpan.FromSeconds(60); + } + + private Exception currentException; + + public virtual async Task ConnectAsync(Handshake handshake) + { + try + { + handshake.Reset(); + + var addresses = await Dns.GetHostAddressesAsync(this.hostname) + .ConfigureAwait(false); + + this.socket = await ConnectInternalAsync(addresses, this.port) + .ConfigureAwait(false); + + this.ns = new NetworkStream(this.socket); + + if (this.sslContext != null) + { + + this.ssl = new SslStream(this.ns, + leaveInnerStreamOpen: false, + userCertificateValidationCallback: this.sslContext.ServerCertificateValidationCallback, + userCertificateSelectionCallback: this.sslContext.LocalCertificateSelectionCallback); + + await this.ssl.AuthenticateAsClientAsync(this.sslContext.TargetHostOverride ?? this.hostname, + this.sslContext.ClientCertificateCollection, + this.sslContext.EnabledProtocols, + this.sslContext.CheckCertificateRevocation) + .ConfigureAwait(false); + } + + this.bw = new BinaryWriter(this.ssl as Stream ?? this.ns); + this.br = new BinaryReader(this.ssl as Stream ?? this.ns); + + + // execute RethinkDB handshake + ExecuteHandshake(handshake); + + //http://blog.i3arnon.com/2015/07/02/task-run-long-running/ + //LongRunning creates a new thread and marks it as a background thread + //(ie: does not block application shutdown, when all foreground threads finish) + + pump = new CancellationTokenSource(); + // GitHub Issue #24 - Set PUMP token first before starting thread. + // If the pump token is set in ResponsePump, and the thread is scheduled + // late, and we return immediately to the caller indicating the connection + // is ready, the caller will immediately SendQuery. However, SendQuery + // is dependent on pump, and will encounter a null reference exception + // because the ResponsePump thread is late setting the token. + // + // So, set the token so that we're *really* ready to begin sending + // queries. + +#pragma warning disable 4014 // We know what' we're doing. It's intentional. + Task.Factory.StartNew(ResponsePump, TaskCreationOptions.LongRunning); +#pragma warning restore 4014 + } + catch + { + try + { + this.Close(); + } + catch + { + // attempt to close, ignored, + // and re-throw the original exception + } + throw; + } + } + + private static async Task ConnectInternalAsync(IPAddress[] addresses, int port) + { + Exception lastExc = null; + foreach( var address in addresses ) + { + var s = new Socket(address.AddressFamily, SocketType.Stream, ProtocolType.Tcp) + { + NoDelay = true + }; + s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true); + try + { +#if STANDARD + await s.ConnectAsync(address, port).ConfigureAwait(false); +#else + await Task.Factory.FromAsync( + (targetHost, targetPort, callback, state) => + ((Socket)state).BeginConnect(targetHost, targetPort, callback, state), + asyncResult => + ((Socket)asyncResult.AsyncState).EndConnect(asyncResult), + address, port, state: s) + .ConfigureAwait(false); +#endif + return s; + } + catch( Exception exc ) + { + lastExc = exc; + s.Dispose(); + } + } + + if( lastExc != null ) throw lastExc; + throw new ArgumentException("No addresses provided", nameof(addresses)); + } + + private void ExecuteHandshake(Handshake handshake) + { + // initialize handshake + var toWrite = handshake.NextMessage(null); + // Sit in the handshake until it's completed. Exceptions will be thrown if + // anything goes wrong. + while (!handshake.IsFinished) + { + if (toWrite != null) + { + bw.Write(toWrite); + } + var serverMsg = ReadNullTerminatedString(this.timeout); + toWrite = handshake.NextMessage(serverMsg); + } + } + + public virtual void Connect(Handshake handshake) + { + if( !ConnectAsync(handshake).Wait(this.timeout) ) + { + try + { + this.Close(); + } + catch + { + } + throw new ReqlDriverError("Connection timed out."); + } + } + + private string ReadNullTerminatedString(TimeSpan? deadline) + { + var deadlineInstant = deadline.HasValue ? DateTime.Now.Add(deadline.Value) : (DateTime?)null; + + var sb = new StringBuilder(); + char c; + while( (c = this.br.ReadChar()) != '\0' ) + { + if( deadlineInstant.HasValue ) + { + if( deadlineInstant <= DateTime.Now ) + { + throw new ReqlDriverError("Connection timed out."); + } + } + sb.Append(c); + } + return sb.ToString(); + } + + + private CancellationTokenSource pump = null; + + /// + /// Started just after connect. Do not use or async/await code in this pump + /// because it is a long-running task. + /// http://blog.i3arnon.com/2015/07/02/task-run-long-running/ + /// + private void ResponsePump() + { + while( true ) + { + if( pump.IsCancellationRequested ) + { + Log.Trace("Response Pump: shutting down. Cancel is requested."); + break; + } + if( this.Closed ) + { + Log.Trace("Response Pump: The connected socket is not open. Response Loop exiting."); + break; + } + + try + { + //WARN: Do not use or async/await code in this pump; because it is a + //long-running task. + //http://blog.i3arnon.com/2015/07/02/task-run-long-running/ + var response = this.Read(); + Awaiter awaitingTask; + if( awaiters.TryRemove(response.Token, out awaitingTask) ) + { + Task.Run(() => + { + //regardless of the outcome, clean up any registered + //cancellation tokens with using statement. + using ( awaitingTask ) + { + //try setting the result, because it's possible + //the awaiting task was canceled. + if( !awaitingTask.TrySetResult(response) ) + { + Log.Debug( + $"Response Pump: The awaiter waiting for response token {response.Token} could not be set. The task was probably canceled."); + } + } + }); + } + else + { + //Wow, there's nobody waiting for this response. + Log.Debug( + $"Response Pump: There are no awaiters waiting for {response.Token} token. A cursor was probably closed and this might be a response to a QUERY:STOP. The response will be ignored."); + //I guess we'll ignore for now, perhaps a cursor was killed + } + } + catch( Exception e ) + { + currentException = e; + this.errorCallback?.Invoke(currentException); + Log.Trace($"Response Pump: {e.GetType().Name} - {e.Message} The connection can no longer be used. {nameof(ResponsePump)} is preparing to shutdown."); + //shutdown all. + try + { + this.Close(); + } + catch + { + } + break; + } + } + + Log.Trace($"Cleaning up Response Pump awaiters for {hostname}:{port}"); + //clean up. + foreach( var a in awaiters.Values ) + { + if( currentException != null ) + { + a.TrySetException(currentException); + } + else + { + a.TrySetCanceled(); + } + } + awaiters.Clear(); + } + + + /// + /// Blocking Read by the ResponsePump + /// + private Response Read() + { + var token = this.br.ReadInt64(); + var responseLength = this.br.ReadInt32(); + var response = this.br.ReadBytes(responseLength); + return Response.ParseFrom(token, Encoding.UTF8.GetString(response)); + } + + private ConcurrentDictionary awaiters = new ConcurrentDictionary(); + + private object writeLock = new object(); + + public virtual Task SendQuery(long token, string json, bool awaitResponse, CancellationToken cancelToken) + { + cancelToken.ThrowIfCancellationRequested(); + + if( this.Closed ) + { + throw new ReqlDriverError($"Threads may not {nameof(SendQuery)} because the connection is closed."); + } + + if( pump.IsCancellationRequested ) + { + throw new ReqlDriverError($"Threads may not {nameof(SendQuery)} because the connection is shutting down."); + } + + Awaiter awaiter = null; + if( awaitResponse ) + { + //Assign a new awaiter for this token, + //The caller is expecting a response. + awaiter = new Awaiter(cancelToken); + awaiters[token] = awaiter; + } + + lock( writeLock ) + { + // Everyone can write their query as fast as they can; block if needed. + cancelToken.ThrowIfCancellationRequested(); + //We could probably use a semaphore slim as a lock + //and Wait(cancelToken), but using semaphore slim + //is slower and requires more overhead. So, instead + //we just cancel at earliest possible time when the lock + //is free. + + try + { + //using bw is fast and convenient + this.bw.Write(token); + var jsonBytes = Encoding.UTF8.GetBytes(json); + this.bw.Write(jsonBytes.Length); + this.bw.Write(jsonBytes); + //we check here because it's possibly very expensive to ship this json around in the call stack + if (Log.IsTraceEnabled) Log.Trace($"JSON Send: Token: {token}, JSON: {json}"); + } + catch( Exception e ) + { + currentException = e; + this.errorCallback?.Invoke(currentException); + Log.Trace($"Write Query failed for Token {token}. Exception: {e.Message}"); + throw; + } + } + return awaiter?.Task ?? TaskHelper.CompletedResponse; + } + + public virtual bool Closed => !this.Open; + + public virtual bool Open => socket?.Connected ?? false; + + public virtual IPEndPoint ClientEndPoint => this.socket.LocalEndPoint as IPEndPoint; + + public virtual IPEndPoint RemoteEndPoint => this.socket.RemoteEndPoint as IPEndPoint; + + public virtual bool HasError => currentException != null; + + public virtual void Close() + { + this.pump?.Cancel(); + + try + { + this.ssl?.Dispose(); + this.ns.Dispose(); + } + catch + { + } + + try + { + socket.Shutdown(SocketShutdown.Both); + socket.Dispose(); + } + catch + { + } + + currentException = currentException ?? new EndOfStreamException("The driver connection is closed."); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs.meta new file mode 100644 index 000000000..5656575b6 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SocketWrapper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 41c8d473d861c6c48a7b9c804dd3589e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs new file mode 100644 index 000000000..a737e3571 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs @@ -0,0 +1,43 @@ +using System.Net.Security; +using System.Security.Authentication; +using System.Security.Cryptography.X509Certificates; + +namespace RethinkDb.Driver.Net +{ + /// + /// Settings object for SSL/TLS connections with RethinkDB. + /// + public class SslContext + { + /// + /// Client certificates. + /// + public X509CertificateCollection ClientCertificateCollection { get; set; } = new X509Certificate2Collection(); + + /// + /// Server-side certificate validation callback. + /// + public RemoteCertificateValidationCallback ServerCertificateValidationCallback { get; set; } + /// + /// Client-side certificate validation callback + /// + public LocalCertificateSelectionCallback LocalCertificateSelectionCallback { get; set; } + + /// + /// The enabled security protocols to use over the socket. Default: TLS, TLS 1.1, TLS 1.2. + /// SSLv2 and SSLv3 are considered insecure. + /// + public SslProtocols EnabledProtocols { get; set; } = + SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12; + + /// + /// By default, the connection's hostname is used. This setting can override host verification. + /// + public string TargetHostOverride { get; set; } + + /// + /// Check for certificate revocation. + /// + public bool CheckCertificateRevocation { get; set; } = false; + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs.meta new file mode 100644 index 000000000..ce6a39136 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Net/SslContext.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 534cfdcc7a48cf74ea4a467532b95253 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs new file mode 100644 index 000000000..c6c785170 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs @@ -0,0 +1,21 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; + +namespace RethinkDb.Driver +{ + public class ReqlAssertFailure : ReqlError + { + public ReqlAssertFailure(Exception e) : base(e) + { + } + + public ReqlAssertFailure(string message) : base(message) + { + } + + public ReqlAssertFailure(string message, Exception innerException) : base(message, innerException) + { + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs.meta new file mode 100644 index 000000000..7fe98b1c0 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/ReqlAssertFailure.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f6f07c98bd2039b4499daa4628a14952 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs new file mode 100644 index 000000000..0b5b0b7a3 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs @@ -0,0 +1,35 @@ +using RethinkDb.Driver.Ast; +using RethinkDb.Driver.Net; +using RethinkDb.Driver.Net.Clustering; + +namespace RethinkDb.Driver +{ + /// + /// The RethinkDB API + /// + public class RethinkDB : TopLevel + { + /// + /// The Singleton to use to begin interacting with RethinkDB Driver + /// + public static readonly RethinkDB R = new RethinkDB(); + + /// + /// A connection builder that can create a single connection to a RethinkDB. + /// + /// A connection builder for setting connection properties fluently. + public virtual Connection.Builder Connection() + { + return Net.Connection.Build(); + } + + /// + /// A connection builder that can create a pooled connection to a RethinkDB cluster. + /// + /// A connection builder for setting connection pool properties fluently. + public virtual ConnectionPool.Builder ConnectionPool() + { + return Net.Clustering.ConnectionPool.Build(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs.meta new file mode 100644 index 000000000..07f688277 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDB.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f15116940d063d54dab641f900664082 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs new file mode 100644 index 000000000..91f7332d2 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs @@ -0,0 +1,44 @@ +namespace RethinkDb.Driver +{ + /// + /// RethinkDB constants + /// + public class RethinkDBConstants + { + /// + /// Default database name: test + /// + public const string DefaultDbName = "test"; + + /// + /// Default hostname: localhost + /// + public const string DefaultHostname = "localhost"; + + /// + /// Default auth key: "" + /// + public const string DefaultAuthkey = ""; + + /// + /// Default TCP port: 28015 + /// + public const int DefaultPort = 28015; + + /// + /// Default connection timeout: 20 seconds + /// + public const int DefaultTimeout = 20; + + /// + /// Protocol constants + /// + public static class Protocol + { + /// + /// What success looks like. :D + /// + public const string Success = "SUCCESS"; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs.meta new file mode 100644 index 000000000..806aa7358 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDBConstants.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: dd44814c90d6e4846944636fa609222c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj new file mode 100644 index 000000000..a21400242 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj @@ -0,0 +1,43 @@ + + + A C#/.NET RethinkDB database driver with 100% ReQL API coverage. Architecturally, this driver is a port of the official Java driver. + + + 0.0.0-localbuild + Brian Chavez + net45;netstandard2.0 + RethinkDb.Driver.ruleset + true + + + false + RethinkDb.Driver + rethinkdb;document;database;driver;reql;nosql + https://raw.githubusercontent.com/wiki/bchavez/RethinkDb.Driver/logo.png + https://github.com/bchavez/RethinkDb.Driver + https://raw.githubusercontent.com/bchavez/RethinkDb.Driver/master/LICENSE + true + git + https://github.com/bchavez/RethinkDb.Driver + + true + false + $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb + + + $(DefineConstants);STANDARD + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj.meta new file mode 100644 index 000000000..e0f2d6a7c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.csproj.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e83de50916724bb4c9122d277c9f52a6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset new file mode 100644 index 000000000..a0ee0bb8a --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset.meta new file mode 100644 index 000000000..20ffd4e4f --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/RethinkDb.Driver.ruleset.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2b763ae847359734799828d9fd267628 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils.meta new file mode 100644 index 000000000..d32134753 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac5c7e1e733d8f9488b0fa46ce769fdc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs new file mode 100644 index 000000000..8e7dfe545 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs @@ -0,0 +1,38 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Net; + +namespace RethinkDb.Driver.Utils +{ + public class CancellableTask : TaskCompletionSource, IDisposable + { + private readonly CancellationToken cancelToken; + private CancellationTokenRegistration registration; + + + public CancellableTask(CancellationToken cancelToken) + { + this.cancelToken = cancelToken; + this.registration = this.cancelToken.Register(OnCancellation, false); + } + + private void OnCancellation() + { + this.TrySetCanceled(); + + //if the user successfully signaled they want to + //cancel, remove the registration because + //the task status = canceled has been set. + //don't need the registration any more. + this.Dispose(); + } + + public void Dispose() + { + this.registration.Dispose(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs.meta new file mode 100644 index 000000000..9a4e5b478 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/CancellableTask.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2c46e3badab9d1c4da1358e0b2b248d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs new file mode 100644 index 000000000..58fbd2dd8 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs @@ -0,0 +1,26 @@ +using System; + +namespace RethinkDb.Driver.Utils +{ + internal static class ExtensionsForEvent + { + public static void FireEvent(this EventHandler eve, object sender, T arg) + { + var handlers = eve?.GetInvocationList(); + if( handlers != null ) + { + foreach( var del in handlers ) + { + var callback = (EventHandler)del; + try + { + callback(sender, arg); + } + catch + { + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs.meta new file mode 100644 index 000000000..e0b58e117 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForEvent.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d2ff8775ebc53614ba53b975e2e8ba9c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs new file mode 100644 index 000000000..a3d7e02f5 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs @@ -0,0 +1,23 @@ +namespace RethinkDb.Driver.Utils +{ + internal static class ExtensionsForString + { + internal static bool IsNullOrEmpty(this string str) + { + return string.IsNullOrEmpty(str); + } + internal static bool IsNullOrWhiteSpace(this string str) + { + return string.IsNullOrWhiteSpace(str); + } + + internal static bool IsNotNullOrEmpty(this string str) + { + return !string.IsNullOrEmpty(str); + } + internal static bool IsNotNullOrWhiteSpace(this string str) + { + return !string.IsNullOrWhiteSpace(str); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs.meta new file mode 100644 index 000000000..21e25db89 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForString.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0349f1a79d169754dbfc24add5630c97 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs new file mode 100644 index 000000000..3af6a26d9 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs @@ -0,0 +1,16 @@ +using System.Net.Sockets; + +namespace RethinkDb.Driver.Utils +{ + internal static class ExtensionsForTcpClient + { + public static void Shutdown(this TcpClient tcp) + { +#if STANDARD + tcp.Dispose(); +#else + tcp.Close(); +#endif + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs.meta new file mode 100644 index 000000000..0a654ec2e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForTcpClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: df2d017543cdc024295a68784a96888a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs new file mode 100644 index 000000000..91bc0483e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs @@ -0,0 +1,28 @@ +using System; +using System.Reflection; +using Newtonsoft.Json.Linq; + +namespace RethinkDb.Driver.Utils +{ + internal static class ExtensionsForType + { + public static bool IsASubclassOf(this Type type, Type other) + { + return type.GetTypeInfo().IsSubclassOf(other); + } + public static bool IsJToken(this Type type) + { + return typeof(JToken) == type || type.IsASubclassOf(typeof(JToken)); + } + + public static bool IsGenericType(this Type type) + { + return type.GetTypeInfo().IsGenericType; + } + + public static Type BaseType(this Type type) + { + return type.GetTypeInfo().BaseType; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs.meta new file mode 100644 index 000000000..180977116 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/ExtensionsForType.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd0d996d5b0d8b442af4d7bc1de9c4a8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs new file mode 100644 index 000000000..f19460e7e --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs @@ -0,0 +1,32 @@ +using System.Reflection; +using RethinkDb.Driver.Net; +using Newtonsoft.Json.Serialization; + +namespace RethinkDb.Driver.Utils +{ + /// + /// Provides methods that assist in the translation of linq queries. + /// + public static class QueryHelper + { + /// + /// Gets the name of the database field that corresponds to the given class member. + /// The mapping can be configured by setting to a custom Serializer. + /// + public static string GetJsonMemberName(MemberInfo member) + { + if ( !(Converter.Serializer?.ContractResolver is DefaultContractResolver contractResolver) ) + { + return member.Name; + } + + var namingStrategy = contractResolver.NamingStrategy; + if ( namingStrategy == null ) + { + return member.Name; + } + + return namingStrategy.GetPropertyName( member.Name, false ); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs.meta new file mode 100644 index 000000000..ce73c2410 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/QueryHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 501368105dcc0f742a4ab62f3cdfec45 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs new file mode 100644 index 000000000..8f8eabd85 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs @@ -0,0 +1,15 @@ +using System; + +namespace RethinkDb.Driver.Utils +{ + internal static class StringHelper + { + /// + /// Gets the hex representation of a byte[], in lower case. + /// + public static string GetHexString(byte[] bytes) + { + return BitConverter.ToString(bytes).Replace("-", "").ToLowerInvariant(); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs.meta new file mode 100644 index 000000000..da8c7b776 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/StringHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 82c97aeaf79e08a44802c1e8b96248c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs new file mode 100644 index 000000000..cdb1b6402 --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs @@ -0,0 +1,72 @@ +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +using System; +using System.Runtime.ExceptionServices; +using System.Threading; +using System.Threading.Tasks; +using RethinkDb.Driver.Net; + +namespace RethinkDb.Driver.Utils +{ + public static class TaskHelper + { + // Proper Library Sync usage + // https://channel9.msdn.com/Series/Three-Essential-Tips-for-Async/Async-library-methods-should-consider-using-Task-ConfigureAwait-false- + // http://blogs.msdn.com/b/lucian/archive/2013/11/23/talk-mvp-summit-async-best-practices.aspx + public static T WaitSync(this Task task) + { + try + { + task.Wait(); + } + catch( AggregateException ae ) + { + ExceptionDispatchInfo.Capture(ae.InnerException).Throw(); + } + return task.Result; + } + + public static void WaitSync(this Task task) + { + try + { + task.Wait(); + } + catch( AggregateException ae ) + { + ExceptionDispatchInfo.Capture(ae.InnerException).Throw(); + } + } + + + static TaskHelper() + { + CompletedTask = Task.FromResult(true); + CompletedTaskTrue = Task.FromResult(true); + CompletedTaskFalse = Task.FromResult(false); + CompletedResponse = Task.FromResult(null); + } + + public static Task CompletedTask { get; } + public static Task CompletedTaskTrue { get; } + public static Task CompletedTaskFalse { get; } + public static Task CompletedResponse { get; } + + //Loosely based on: https://stackoverflow.com/a/22078975/9275 + public static async Task WaitOrTimeout(this Task task, TimeSpan timeout, CancellationToken cancellationToken = default) + { + var completedTask = await Task.WhenAny(task, Task.Delay(timeout, cancellationToken)) + .ConfigureAwait(false); + + if (completedTask == task) + { + await task; // Very important in order to propagate exceptions + return true; + } + + return false; + } + } + + +} \ No newline at end of file diff --git a/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs.meta b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs.meta new file mode 100644 index 000000000..fc56c989c --- /dev/null +++ b/Assets/Scripts/ServerShared/NIH/RethinkDb.Driver/Utils/TaskHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cd36cd92997a40b4299f9778875a08e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/Services.meta b/Assets/Scripts/ServerShared/Services.meta deleted file mode 100644 index 85e2d12c2..000000000 --- a/Assets/Scripts/ServerShared/Services.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: fab80ed56c97e934c9e7a836f31caa64 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ServerShared/Services/IChatService.cs b/Assets/Scripts/ServerShared/Services/IChatService.cs deleted file mode 100644 index 0dce7b9d0..000000000 --- a/Assets/Scripts/ServerShared/Services/IChatService.cs +++ /dev/null @@ -1,14 +0,0 @@ -using MagicOnion; -using MessagePack; - -namespace ChatApp.Shared.Services -{ - /// - /// Client -> Server API - /// - public interface IChatService : IService - { - UnaryResult GenerateException(string message); - UnaryResult SendReportAsync(string message); - } -} diff --git a/Assets/Scripts/ServerShared/Services/IChatService.cs.meta b/Assets/Scripts/ServerShared/Services/IChatService.cs.meta deleted file mode 100644 index d69c973b3..000000000 --- a/Assets/Scripts/ServerShared/Services/IChatService.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1319521a7dd3e5048b28683232e79387 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Economy.Server/ChatHub.cs b/Economy.Server/ChatHub.cs deleted file mode 100644 index 36e0c7fe2..000000000 --- a/Economy.Server/ChatHub.cs +++ /dev/null @@ -1,62 +0,0 @@ -using ChatApp.Shared.Hubs; -using ChatApp.Shared.MessagePackObjects; -using MagicOnion.Server.Hubs; -using System; -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace ChatApp.Server -{ - /// - /// Chat server processing. - /// One class instance for one connection. - /// - public class ChatHub : StreamingHubBase, IChatHub - { - private IGroup room; - private string myName; - - public async Task JoinAsync(JoinRequest request) - { - this.room = await this.Group.AddAsync(request.RoomName); - - this.myName = request.UserName; - - this.Broadcast(this.room).OnJoin(request.UserName); - } - - - public async Task LeaveAsync() - { - await this.room.RemoveAsync(this.Context); - - this.Broadcast(this.room).OnLeave(this.myName); - } - - public async Task SendMessageAsync(string message) - { - var response = new MessageResponse { UserName = this.myName, Message = message }; - this.Broadcast(this.room).OnSendMessage(response); - - await Task.CompletedTask; - } - - public Task GenerateException(string message) - { - throw new Exception(message); - } - - // It is not called because it is a method as a sample of arguments. - public Task SampleMethod(List sampleList, Dictionary sampleDictionary) - { - throw new System.NotImplementedException(); - } - - protected override ValueTask OnDisconnected() - { - // handle disconnection if needed. - // on disconnecting, if automatically removed this connection from group. - return CompletedTask; - } - } -} diff --git a/Economy.Server/ChatService.cs b/Economy.Server/ChatService.cs deleted file mode 100644 index b89646caf..000000000 --- a/Economy.Server/ChatService.cs +++ /dev/null @@ -1,22 +0,0 @@ -using ChatApp.Shared.Services; -using MagicOnion; -using MagicOnion.Server; -using MessagePack; - -namespace ChatApp.Server -{ - public class ChatService : ServiceBase, IChatService - { - public UnaryResult GenerateException(string message) - { - throw new System.NotImplementedException(); - } - - public UnaryResult SendReportAsync(string message) - { - Logger.Debug($"{message}"); - - return UnaryResult(Nil.Default); - } - } -} diff --git a/Economy.Server/Economy.Server.csproj b/Economy.Server/Economy.Server.csproj index 68a889992..f26636769 100644 --- a/Economy.Server/Economy.Server.csproj +++ b/Economy.Server/Economy.Server.csproj @@ -6,8 +6,9 @@ - - + + + diff --git a/Economy.Server/Program.cs b/Economy.Server/Program.cs index 5c17b1fbf..031ceab7a 100644 --- a/Economy.Server/Program.cs +++ b/Economy.Server/Program.cs @@ -1,8 +1,3 @@ -using Grpc.Core; -using MagicOnion.Hosting; -using MagicOnion.Server; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; @@ -18,11 +13,6 @@ namespace ChatApp.Server var connection = RethinkDb.Driver.RethinkDB.R.Connection().Hostname("asgard.gamecult.games") .Port(RethinkDBConstants.DefaultPort).Timeout(60).Connect(); - GrpcEnvironment.SetLogger(new Grpc.Core.Logging.ConsoleLogger()); - - await MagicOnionHost.CreateDefaultBuilder() - .UseMagicOnion() - .RunConsoleAsync(); } } } diff --git a/Economy.Server/Server.cs b/Economy.Server/Server.cs new file mode 100644 index 000000000..8e13d6b6f --- /dev/null +++ b/Economy.Server/Server.cs @@ -0,0 +1,246 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; + using System.Reactive.Linq; + using System.Text.RegularExpressions; +using Isopoh.Cryptography.Argon2; +using LiteNetLib; +using MessagePack; +using Microsoft.Extensions.Logging; + + public class MasterServer + { + public ILogger Logger = null; + + private const string EmailPattern = + @"^([0-9a-zA-Z]" + //Start with a digit or alphabetical + @"([\+\-_\.][0-9a-zA-Z]+)*" + // No continuous or ending +-_. chars in email + @")+" + + @"@(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]*\.)+[a-zA-Z0-9]{2,17})$"; + + private const string UsernamePattern = @"^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$"; + private Dictionary _messageCallbacks = new Dictionary(); + private Dictionary _users = new Dictionary(); + private Dictionary _sessions = new Dictionary(); + private List _readyPlayers = new List(); + public NetManager NetManager; + private Stopwatch _timer; + private Random _random = new Random(); + private DatabaseCache _database; + + private float Time => (float)_timer.Elapsed.TotalSeconds; + + public bool IsValidEmail(string email) => Regex.IsMatch(email, EmailPattern); + public bool IsValidUsername(string name) => Regex.IsMatch(name, UsernamePattern); + + public MasterServer(DatabaseCache cache) + { + + } + + public void ClearMessageListeners() + { + _messageCallbacks.Clear(); + } + + public void AddMessageListener(Action callback) where T : Message + { + if (!_messageCallbacks.ContainsKey(typeof(T))) + _messageCallbacks[typeof(T)] = new ActionCollection(); + ((ActionCollection)_messageCallbacks[typeof(T)]).Add(callback); + } + + public void Stop() + { + NetManager.Stop(); + } + + public void Start() + { + _timer = new Stopwatch(); + _timer.Start(); + + EventBasedNetListener listener = new EventBasedNetListener(); + NetManager = new NetManager(listener) + { +// UnsyncedEvents = true, +// MergeEnabled = true, +// NatPunchEnabled = true, +// DiscoveryEnabled = true + }; + NetManager.Start(3075); + + listener.NetworkErrorEvent += (point, code) => Logger.Log(LogLevel.Debug, $"{point.Address}: Error {code}"); + + listener.PeerConnectedEvent += peer => + { + Logger.Log(LogLevel.Debug, $"User Connected: {peer.EndPoint}"); // Show peer ip + _users[peer.Id] = new User {Peer = peer}; + }; + + listener.PeerDisconnectedEvent += (peer, info) => + { + Logger.Log(LogLevel.Debug, $"User Disconnected: {peer.EndPoint}"); // Show peer ip + +// foreach (var verifiedUser in _users.Values.Where(IsVerified)) +// verifiedUser.Peer.Send("PlayerLeft", SessionData(verifiedUser.Peer).Username); + + _users.Remove(peer.Id); + }; + + listener.NetworkLatencyUpdateEvent += (peer, latency) => + { +// Logger($"Received Ping: {latency}"); + _users[peer.Id].Latency = latency; + }; + + listener.NetworkReceiveEvent += (peer, reader, method) => + { + var message = MessagePackSerializer.Deserialize(reader.RawData); + Logger.Log(LogLevel.Debug, $"Received message: {MessagePackSerializer.ConvertToJson(new ReadOnlyMemory(reader.RawData))}"); + message.Peer = peer; + var user = _users[peer.Id]; + Guid guid; + var type = message.GetType(); + + if (type == typeof(LoginMessage) || type == typeof(RegisterMessage) || type == typeof(VerifyMessage)) + { + if (IsVerified(user)) + { + peer.Send(new LoginSuccessMessage {Session = _users[peer.Id].SessionGuid}); + return; + } + + var register = message as RegisterMessage; + if (register != null) + { + + if (!IsValidUsername(register.Name)) + { + peer.Send(new ErrorMessage {Error = "Username Invalid"}); + return; + } + if (!IsValidEmail(register.Email)) + { + peer.Send(new ErrorMessage {Error = "Email Invalid"}); + return; + } + if (8 < register.Password.Length && register.Password.Length < 32) + { + peer.Send(new ErrorMessage {Error = "Password Invalid"}); + return; + } + + peer.Send(new LoginSuccessMessage {Session = Guid.NewGuid()}); + + guid = Guid.NewGuid(); + + var newUserData = new Player + { + ID = guid, + Email = register.Email, + Password = Argon2.Hash(register.Password), + Username = register.Name + }; + _database.Add(newUserData); + + _sessions[guid] = new Session {Data = newUserData, LastUpdate = DateTime.Now}; + _users[peer.Id].SessionGuid = guid; + } + + var verify = message as VerifyMessage; + if (verify != null) + { + if (_sessions.ContainsKey(verify.Session)) + { + _users[peer.Id].SessionGuid = verify.Session; + peer.Send(new LoginSuccessMessage {Session = verify.Session}); + return; + } + } + + var login = message as LoginMessage; + if (login != null) + { + var auth = login.Email; + + var pass = login.Password; + var userData = _database.GetAll().FirstOrDefault(x => x.Email == auth); + + if (userData == null) + { + peer.Send(new ErrorMessage {Error = "Email Not Found"}); + return; + } + + if (!Argon2.Verify(userData.Password, pass)) + { + peer.Send(new ErrorMessage {Error = "Password Wrong"}); + return; + } + + guid = Guid.NewGuid(); + peer.Send(new LoginSuccessMessage {Session = guid}); + + _sessions.Add(guid, new Session { Data = userData, LastUpdate = DateTime.Now }); + _users[peer.Id].SessionGuid = guid; + } + } + else + { + if (IsVerified(user)) + { + if (_messageCallbacks.ContainsKey(type)) + typeof(ActionCollection<>).MakeGenericType(new[] {type}).GetMethod("Invoke") + .Invoke(_messageCallbacks[type], new object[] {message}); + else Logger.Log(LogLevel.Warning, $"Received {type.Name} message but no one is listening for it so I'll just leave it here ¯\\_(ツ)_/¯\n{MessagePackSerializer.ConvertToJson(new ReadOnlyMemory(reader.RawData))}"); + _sessions[_users[peer.Id].SessionGuid].LastUpdate = DateTime.Now; + } + else + peer.Send(new ErrorMessage {Error = "User Not Verified"}); + } + }; + + AddMessageListener(message => + { + foreach (var verifiedUser in _users.Values.Where(IsVerified)) + verifiedUser.Peer.Send(new ChatBroadcastMessage{User = SessionData(message.Peer).Username, Text = message.Text}); + }); + + AddMessageListener(message => + { + SessionData(message.Peer).Username = message.Name; + _database.Add(SessionData(message.Peer)); + }); + + Observable.Timer(DateTimeOffset.Now, TimeSpan.FromSeconds(30)).Subscribe(_ => + { + foreach (var s in _sessions.ToArray()) + { + if (DateTime.Now.Subtract(s.Value.LastUpdate).TotalSeconds > s.Value.DurationSeconds) + _sessions.Remove(s.Key); + } + }); + } + + private bool IsVerified(User u) => _sessions.ContainsKey(u.SessionGuid); + + public Player SessionData(NetPeer peer) => IsVerified(_users[peer.Id])?_sessions[_users[peer.Id].SessionGuid].Data:null; +} + + public class Session +{ + public DateTime LastUpdate; + public Player Data; + public float DurationSeconds; +} + +public class User +{ + public NetPeer Peer; + public int Latency; + public Guid SessionGuid; + public float Tardiness; +} \ No newline at end of file diff --git a/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.assets.cache b/Economy.Server/obj/Debug/netcoreapp3.1/Economy.Server.assets.cache index 4c1a8ccf49d536ee30da4ab885ac4d7c9c4fed68..a0fa245c933653de38b38398d0f961f4247589b4 100644 GIT binary patch literal 25739 zcmdU13zr;6b+%*6APY&BAIP?BSr6-BTk3siWm^t5$h(qQqZca~h%*q+&i3w(G}|-u z^h#PFAy0>pge1m1%p)Nr0Stt^LqZ_rb@BszPX0vlC-QyWb-Qm@SNHUeXKkZ%N;`e) z)~)Z}dflqJ-4{P_=H%@+-E`Bn*Kd3J$3J}Se|EQCn%Q*Vldr$N_J9BV(_M#Oz5TUU z&iwCBUVikRSumM@WB40RKh=1??}zS6m^c!BVy5vWVUbA(zx#ag7?S8k{UG`ex zS}*D@h0Wgbn%4}My1`^)!kh4pH9GD2M&L*Ns2MCY!-Yw2qA{D4nbu`a#$~*PPG^&; z{$~9BIiy>VZbc&fHYC#Dfkb*V47~YH^Qu2Nzdn4=CWSP>cLIP0xEap`NV)+0)Gz@1 zerq-Kn_<{oTOY_valw-;sDZNKHP9^vDCq+9@*toqe!q_vXTvwph~9~DY1&p7V0%5b z?74*LBA7IQcNqX%@s~}x4T+W_od8H*SqA{G83f&^8MV9Uk$Es#KO4`XIhmEv$hMtbXtjgL4;Py)jF1U$+#7F%{-Qk$&ZWhk zMX{4CHk%gHAa?)^LEec(^WB9+kfakN=>b4q3^@W<_MC2aQ13!F!nkYn7p^wWub%Ov z)6Gt29u0H4+gb3##!6aytH0a~dyOgYSP>_{H!_^lm&mE1-HoaV?H(jTdp8oHkxpo& zzjAYZ1Nt{2%rb0Ouhk6}+e@oq+{}&RwBpfT=wEC5*U|kZ$0sJoy(#H~xn@r_JC#YB z*3z^FJAsfI+>1mF?n9ymq*DXZe=q_KyykpA3Y)E@(~ef1lS;JK?S5d_y6wU2TS!^O3!9$ zb~u~J(XF%3LcQOhCS6buId%-{(YA=FP}T|$TlyR@`j9UA4A~0Z-e@MZ3yB=v3I{FJ zhYV`c1@-5K>pQ)$z0!`_*RWK+(Ru4)DoSHNY+--IU?*L$e{|5&82HyCtcG+huJpS> zV*<-y(W|DTeLmxS4xAdvqXx-i_{%l!2ol!;(usuh<@Gucp}*2)yL+8>@NsxylW-L* zXP@4~oUok*n+A0hm2z?NkO+#~4T2(_ph%w|WS;(7Kk`@LD|9-^q}?y`V~#a0CA`xa zuZA;@>Ig?XnF;(R9MTDg^mu%%%gZX_^MY=$PFWz28<3<6$d?BW;?$HHRc&LA zzIWOea+pgt36C56Pv9?m>XS$`GU>!mdOQieaVvXjRw{MK-QeAm&_x3d2cH3hUnU^OgqhF&dCA8gTbhc}!tC&qBMo z6m+v~ypGc?+xCSyZoQ*mHO$JkrHx zbw?Wx(y;Zs<|jTCyVa!aQ_;;bCYuv(yMLWGkS^daEp`!!kVq#a(mC4dG$UHfxK?F7 zD;;HXDXVV2527+{pE*1e4C!K@m$>>5(|#E`i~%`1Dg&wvCpvj*6R6IfFIku`8_cAS z67xD%du3erO8>lt`9lUX>4N!%x{a!C~{Q?r3n{>h;{cCld zJ+m0XzhCL$P&33$#I-gKRlU`q-(2)dHf~iOpDdTtM&c!r_9=u*8J#ABhg~}9yESo-z!xn|nnn}SMU%QKL4@hd z!*OJHf#+K#4n~UdGPzF~Zf)Fo3sTEKB3&STtY#mMma#n5gCm?8%7O*OH&93yD0Q9X z6p9x$`&S3|$IB_8%jDOv7A;sy1{Uc8tFAAmV8s;PoE&O%p*0*BzHCBKJ4Un+!v7fcwOcKs0W-S z%^^5NyHUGN$;s^&XAY#v@Q|~CuPy6V$9j=%(1)f z9yeFsNc-JPx#J&Jd9UFs9KbO1-IAF<1Yy?QCM$Oo!HkDo8Or}B&t}6j%N?KDo|hJ;ztXjYatdp16kjt_^(x33`BqX<;Iv>aXc`9Ikn zaImGjw-ScDb)~B*K>rdt%Iz$;HaDDwgr1xMG)y5+sk_f%aOMClyPR{`hb@|H&2i2}C+h*n?=o~Z!oRSK*kf8fdUFp+oy z>|LmUz_uc>OKd|TFwzN(bXS+S2Kt*Dp(lv9qh^ix4m=Yv=~alYBYz~3d)A$H9Ojrt z`#4;5?nwmv4uBx|JCSJa8%P9CI>D3fGB;QHQAPAw_!%mY`Jq`vpFqAFRTJ_(NQC?e zBtj;gkV$tz{v_yc&qzPfY$p&>vwM-K*?maVjC5*7x=XW9f&Q}=0Vq1(5A0g!U3jL> zq*v+u%g7%xx(PSHS=^?#!I6QY=L5j2^?VS|)RXioJ%0uHZ~urv(Q-G?YAsz6gRUO@ zX_Wg}jwBTQ_gMPx#WP!(^r}|=RpbvD+h$_*N^TnJ#~;hVgIXN+0hMme{dlG}q*rP4 zYsepRY#MFeoXA6IwTFRM>v;gr)RXioJ%1hfL$=xmL?ntf2Z2g!a|qAWhV&|JegpY$ zw@5|N=`gTqow#qIPNY}q^qa`v*a${J_$X>3LPjcb?LLA;grpN8>8_dYw?Kc>A{zzl zQB+E>9umQhArUO;1WURL>`S0;Oo*Yw2Q-^>b&jYG47CqC2~^ZZ9KzqmZ)!t2wJCE5 zKZCr_4tuY!0y@2Zc1mgP2kNP#PB*nazXM!apU>i%`jB3w&+j6Cq@k2mTId5<4SotB zH2B}cGr^Ny1^)MuzmXx9mM+{Rr5!A%i@NR5df6eCpEG*t5KGsP`2+B6Sm>ptlnPej ziC`QWn?wU;=WAN06Tqh1>JN=hq*t}oA0dAuLoy3$rQsZwTDdcMtrPj4(|@>c;GF5@0G+*b@-(yQQp0r>-ullnb>S7?tmzv#-3Z?VLfr^|hG#Yc z=~a#J=g1#=K~@<`WBw46X{hteH-~--RO`* z(`4z(@L8~_x%?}+Mbrwu0H9Rx2_$yM?;ue@(y1WnuI~66=pzo1D+K!$y5y92cyfhV zc0Z{#WKf@O!tdgl8j@bsgx^E{h&5ct8tvB5?e)C~q*}x8>K6L}aA|%13eVJs^eTP+8u`OU78d$ix>#nnzsd_)Kvf#z z-{6@LNw0$Vx5%&Sg+ytjUh=EVv<{>RW^L1DRICC29i9o8^eVuAkNmoTZ{RK*tE3(B zS8iJS@>~PHf{HcZf50;VlU@b*AIUT5hTS-z1dL>b0#@S%W*rJB%X$aZYPdhdGvSh6 z1^1s!xvva+Y>|6g$`1C%M?jLLpx;;x+BfVMJ9sg7DcL^cVwY4L1e@e`VC27lM$$U| z2+!1!^eP?y1^GWl`U%p%BK;KU)s5EodOH}gy8i~)b=3WL@KN3WK%%<;i6sC23qQ8S z-$vmFYY-4LyHF7fdY9(>5TfAm?(?Sj8%J9&HlyX)zzCT@mmSN0@o3ByBbt5jXp1R% zzPaLWGrvs*Rne!DH7in|E*cc9`gl!|D!!F{QpdO6mVA$AuaT7cLla{<=oN*^f?)CP zlV!j0Tv6);sXAU34TKlwr{I{{O_JS#m)zkO!fZFiyW>NaEL5O^YP0+F8UeXG-7hRp zop4zo4LQg{%n+ESuUcVKg`|{ChxeWyt|l#l?eC7Y&7(^qgx@z@h1sWIYKIrUw@?#$ zpv#Dk&}8Z~TxjyyLan-Ys5WucYMa#^lx%JikJYV7-8{P6Nf>nXwcE*6nC5e1Hv!eP zv8ykF3<|(5PF*FI&%5n*)b(x22R05`*2UsHX2oYy%Y1zHruZWm4;PA#kLAL+Sx};Q z)%D9Gg^A_ZnDGY`7YkPhd)t#8p*!Sc(cu&+5y<%y;3EY{AS*+2NW8NpICmiaR6+Lf64|+86ki(K zK30&Kwp}3(o`NK})jIq>S|O%*OfK=jIj{4vauGQ`qR67=_Y_K{Hc4K=*HQ8N3e1m- z0pl}KNS46f_*oz64k)TwAx3(4{-_n}IbKPx=;L{IYAVB4oqSddTgAn~V&_~qe(Y3C zK4#4sc*$E#k>jSAV(|Xqf;CdB&t+$gC|VhJf2<%yVUYI(tj&l+U^bBI3C#GZoE429 zTW8`x0a>P>Ib1{0no;{tTf)?2BgZ@(^?ch{g7LlV-Qe#w_-tf=nXxpxODCXpN;1r**IC_37y-nmmCnFBLo{ANML9B6T} zcA02YR`Nn-x$z6EN=)G_rCdyb6=Fms=BXo&3Y9EQs-$t;TGT## z$-ZrG=H-`g9J0jHL&^$eTe!Pj#Df`8jpzJc2i8AUgH1c!Y_X#?%49pCBTjDDz5=38 z)MmCp?QxbAx4#s%Fw_&L{QUjS`tp;_T@F`#N5RLodrvJ#IP+rDFUnbQQSt_qcFI+# z(Q!xTN?p!OrYgavmlx+sgp%b*mEfE&3ualTEC&`jPg-Ks`e!j)gYiJBMXoZ7>j_JI zU61==xAc6wKUEN(uCW&Og3B$-;2^%Eg(}ij$8xgSCiffEjx2eZt}MR8-mj|OSyqHK z%Fd*UXJ0{wf@8hi02fEwK6IP#@EWcV-ON%U< ztbzkACY;NBnk>PcGF}<#}ZdD7il^ zt^w(2Dk;HslQp1%#pSse3uW#oM9Ee&M=Xx<)IJ$s@{4d}jJxtGM7jJ~5#`FOm~b6V ztxUL%ESYfg#}nCbnlWB*e~hY)UTpi}tyE@O3Xb8TZAi^h8I9pD>-GqaG8wl(_WuK#L*$wO literal 66238 zcmdUY2bdhkaV{kWi8*JH1aqFl;Q%mG1P_r!;sK00g~i?Cu;kwEad!^{Bw2yVS+ar^ zXvza0F6U(WCOMZf=_?dqxS>FJrBJ;)TkZ?HGj)zyDh z=P=c~@7=QDgrkl+DtY|jmw)%!f4Sj?lV%sYw}12L2Orzef9krYH~sZX{_3ftFG=3> z(BO{IN0p;XOqtILUS;?)R=p$vC!<#F7%e>lDTfLIlCrV zGnK5KZMXK#cAA6!pwXFc^yb%qw1qs=;7R7&?PHDfXW{qRc#g(%3?9;t!$bOW@R0s+ z<csxWw8xaNRL_zvY8H&ZmLTj$uX>~iZut0K4$Ob#e zvx_`B`4b_Y$)ALW$)Aje$&=3HNpDwAK56Xh4|d{(7;YX!W!7AcqcH@ z1=zk3fF0=e2d&OR5vIvmWuL7>UJd6o56aJhTVt1VH-Y2mq2sr_&uYh8g98(KSb-*^tH1$j(N} z%qc;34*n)G(goR}Qe>^UUbo-fKS=h?wUb8waA&U788mzQ8*`}RlPJ`yXM4^4ZpDVN zY_z)(Z3Cliv(Yrja{-1R&%;CWosWkgNhe6sI{>-6*Ino}7FTUpnD({bBq3T(6jwut}@J@KGV80e%6 z^iQrB^hlrK3~Fq@t;%~yk)p0+wWrmj(Ta4@s%9U^`n=TZ9&Dk@=tuM^>%Uo>F_pkQ*8RVo3^5t5izHF+a(3X{#z?|o158*8a zA?bp!<^ah+9HV>--lCFys|Wrz1DsZY z0cT`gUheiFPaDXj3*?&fL@6)x&3(&WD_6B(Z)8*rccTY)lYvXRzoduNK0&-g6?;hdvi65Mv8k+DnLWu>OtRTpp!1p>os`Y zC0WiJp+DI*jHD6X;~~7)AS7K7e!O0ZFc94ZkGj($f$lUOYNV)UM%z7=b{LgN7nNRC zs}o=9wH8~0*1=Jysk?1FZTg)a&Rqs4>4Nh~n!e`x*AuPI)S5(LE?5bhQj1Lwrg6e} zcN@I2CU&2}OFHqA{=zc5cA8HNunNXS#dKmhiABU@N*2JR2b=_HXU6GIA!m>h7h3k< zIR?*OJjdZ7ok&Q3s0>N3x!7eLO0bObc)IjEnTN4@c1GB+O!BzSzWb2~K|FwmARfd+ z5Tp|X=`Se!eBPz=HilbL49yK!H#G3C`@9ztRS^DrKQ zc?1u^kWMh9KRPNHu}pPDzKvdhWHqc=yb~7b0;|+U!|^`$a+Wao7@z?uTGCxVI~>_3 z87~0D2FzTy-5$=&`$cG`1kH5DtKo1XjkXauFTvlm z4e0`>bcsF>ht2KWa<7MebR=Xjn2DxAHULJ0+-E?NE+Ah&avK#u-CA5+9&iN^`w9iy zbtZGQIk!nHjd{*sp2siiLK6=SOFA)={>GKS-05}}nw@5^H8+x_cXm5lhS4$7lP=ibvqIPhhnJeDhiK5TT~=i8bp`g`i^!;r!^qnDZBK(mqXFrn z!6Rjjye$&wgi+fH#{{;vrFvE88C zZ5Q@LL3Dc=LuczUlGY8-LA(0-Olhogaf=2--;)fD8ktrpsrdxvo}-X}b~hYViQ z1#jt)N8laqG_Y};^p-n=)?#_B*l74?hWr}VVGq_z4J^_H*8Yk`kZYWccI&0Xt>OZE z*>MIJG%dG=^fC|9%MB#b1=5@AwtNo81gpu|x@h2J&}e9tM#fH_bxUt3*_(iWF`I8}lPND&a5u>gXtT4C3qUhRQ; z(tsjeK-C`VxG0mCwwAbkFe=(dT1#AW*Qj6Pp?UhIz109CU4T`sptMZ#_;Ry%IGvKL#TvzA z=m^oCbSEiEZFHZoYfx`9px%yO_V@3=!%mfSf+C&Ps?&tw6jX9xFep6XWXsh~Fm45- z2KG)Qtb6-+;hn%p7i-m>ZV*_NWhY}j!V4GnpY=e#+khlpK=#J4UcWo{7*7Wj)B(qU zdxpH)hVSv86FF#C1k{d(70~cP@&`T4A2OIpUrEg6btQy3TxFi} zF#o*4OuArxMa7N`BLR?Qq`O`W+|^dIZKAC&c~6s?p{8D zcY-5bjQY}=Ew|YC0FOXoE2gaV7MpGz@@pIZvIp~%1}5nO^YDl^Opi!+mn7$1cxE4T z62l48`w6=Ah;(qnNa^N&C>& zSTig{ZaaM`Hz+Vlz~(fwC_roS8BdeX8cj$)LYkEKX(gJ3ySLAInta}9Lb_;DezeR? zKX5p7xz`#TPUd=tmj?XC04L&-Mth+P>Vd_=Jh0Od919%^nAQR|SOGc@zThGM4TGF? zL7q<4t8_DAMwezf775QT~Lo{?-5E$7 ze95!aXeT%#FyDQG1zjy`+p{`$IA?Lg)Fvhl3NWU|`W1tfYuFr+{0<)W`J@vo=~b6? z(!JZt<#{j0ElH^OeicdTVaV6;PDrGS`Km7KIFKsLGi+^h(S^rLzv}`0J-ibr=>qgk zb^DqWd9S&!+-~#=S6lKUlN9&NFj~Qy%hv%<+xPbkY|;hxiz*h+!2x`3SE>2hE1bIY zeZzzDO#_8=fl_rlz(Pp|js9bW{Xmw(7SLYuYgm8a!Ft-jB3)orE`c_g6jrj-=;7P9 z;tgFp%E=5i#JAf-)Ih)G0sTV*lym`Fcf_vjiQSdL>Ejw{Cly}uYnXrJ!Th#?NxHzS zI$Aum*v8DZfkXXIpu;c5W%KzVM3_kp{-x&W)%`VrWn`R*JBr4>$b z5YX+-_KR=iTdQ0VHZWecO}PZ z8OQKTQxY%Bh^kA#zJK;{DA^{;*>XxqVxJRNz)$3Np$~6{3Vb#$(*c3URp$ zk{N}uuC5S^rv%AcMIjFQFsk9VVT^K3P<-I)BQme6%ACuXaAs0ltp5kT3Sw&42UBz7 z$VWKj4_hkRSCY?O$ossYY*i1!B`NfoN3l4Z=H{mvWC)8h3^{9E7epuAxtelC89UFr z5JkA=iQM!|3E8fU%9Fz#QoPTD-OM(%z*%5gz%y@Qg z+B;3}8@t<$0oNVUig12Dd~c%%-yUh`1zD(nP?*Bc^Mf&XY{B&ek3JlACeqtu+<#!h zY+tW2q@U`Y^Cj=e&Y@dUPV*1Hl6baHOgG{fvQ-v>aHgo$=p;Aacxe4vS<*^6Sk5}w zOw0nDo!mH+_+9t}b5EZqtB%?x!uB`kyS)Y+nyjd_wc|)TTd+Ag5%m?pkidHE~1wAVSivbnZ!Q$Sfw>5aQ(^)tdSE+ z<<&kMd2jlp;4IF-NHwSCE1u8`?2IU^oF@?w)91@Yo9DoU7h}*dE7Wn1FPT zxG>~o6Ke-PkTG4kq3Etd;=6}D7+-1-L(Jg{O;(2*NS2D3ZQ7G6d6`j@P545KK~mJb zpk&+j^zePUqeZ^U3}~Nkdu!pq;E5*xC!17T&1R1p6fn3$FR6G+0_&4oLNca;4Rj_Y zwQgp(YfI8qqJ`PWE!aOM>-iq53&2{`2r`?dj3|}BB%63UmSmaqWP2=$iK=!28B5Ba z2$sz_hF$GREZXiW=XG;Ks+b+aY?#9~eIE_kpw~@@eUh@}aK?w(CJ$4VYzy;F4`)9m zO#LNFy3*(ymLzN3-dEbuDO=S;#I8ue9@o<0WSUlY0corV6 z`;q>qcz%HAhj@O3=f`;d49}7C`6%f4OLWKMA-WUr5FP16M|ud|pM!n`d_fAV6Cs|k zPQpW2C*vV3(g}<75Ujrdy>uOX(YmPgy;79>tJEv0Tyz$|ryyYs_*A?TFzGSCe+S{E zUtcP~2kQBb6qu(WISuo4yb~trF_?cB;ic!R7txc9>QhpHoq+@h>`Xk&@U!p`80iE? zdMLyH9_T+=Uz39PY^1CapM!TICOwAu?<2hQ1J_0C7OL0>WzM;*cAr?_gHphs3lIc< z9v+(eAK)Q)(g~jQkh%XM=qu%$(!-?Npp%r~V#z5q!R@`ZQ^`5)mSWYP(l^bq8K z40=spBy)OOVl>Yl7*SI z_`VeNt^iD}-j#T#dZfqH`)3IMsq%>_3SR}_TH&klPK8O2Dg4h7{*3pPDN0@guv*D$ z@lGX4k16>t5dMtvp(zSo2Vh#E>+w#7NRKJ>FA=^XwGgZFN5HqHsCNTkYV~f!JJlmS zrruv6yrw6pBjs~bR7wC%t2BXksziEBrGJI+pB`VFqU~y+*4j?uo!XKf)AnB@yk_6N zAG_#Fb{D;&JlKymUU7HUi~9C80IC(7!aEftJ*MElLHIM$ccib=OOTJ=0Jw>DSK&Cai3GdX1^q5Bf4&n8Dvt?7$5yq5qs6tJp zZw3O5{1&_uIq5Ov{~qBr2apE(7-M76qp0TG3UFGf+we}MNRKJ?9}r$IJKAIV29<(z zI}m8(ci^4KNsl4_j|hL}`3x1U?gTom)${RAtw@h)^`8*_4D=-`YTX5RTCELur&^@P z)cVf|e}?!N6;$dc_LC35V^`sNWe zHUf@TV-wz~2I(<1{wu9E6Uhg&c%a{p3ABppoB;cOoY}hWvjZ{HMgX zsg%3zfUH&Bfp@A(dQ8>7M)=>R&r`v_6F4+}9)uu%(qs7lC&EkpVr8RCeAfimr}*S0 zJ$`6DZ}OH|`PFr{%sM>JC7Cz58@#>(g}|A5V-#bdZ~8` zoZlYHeX4+b2#FEo!*~et5j+G*Izf^i0{J(fmwrLvgRJjXRp7n=$!fT>cqd%aV{p0E zT58k&(5FqqcemfbDlY>d>A#ou|P!0FD+G@JAc)q{qM?1HRgBOtdyD;15+w%bd|=9>2_p zCLU%4>C}bvP(~aJU1~cI)4JsRq*lwB?9ijmnf*YkbLKdcGo;6I<~iW2?c`2t)6Y&? zj#SXp2~DlfbAe0ibG*@q^q4*;AiS=FChVc){lUgEMIR#7;1772aiRfFdJOzY;5%Y| zVsnbv@0fWiF7<;u^p%tyebPET>gjZ{(TVh!PN#tHNcxY>sbyWUcxpMPbhTz}PqR~v zW~9e7J8c}z=I!xbd>5PjJ-lmS=(;7RnQf?J=Y+Lprvss`L}wVyNRMfDCc;<1AFQW< z^5>%!kORybc+X^s3@*7fDL zrQoaUE-~+quo$^Iy02ls53qD2eVKtxdd$X`gRgeS+RMBVHt}UZ(rTwJ`?W)>Vnx(Z zeSTKpd^?~uy8;NcW>*@`NRMfD6~b!|gOp|id`FONs1?;#J6=#~xnCe?ov!wDy2j{4 zdQ7Kl5uSP~sp40sXTCDvfRyg;aH=5SF3)6;S$S5yt9&rP0T83(!Dvl-EE8`8U)6S4 z^3e0SmQ%$xY@&*M=Ai+9+5?;zz@*0jPk`@8`(n#!Wc@mcMnxZ|XbnH(X}H>GNP0}e z$(7e|$zDrU)MVuH%+)YFf%=@M;ToeM=`jtbz*lwQr!St@8tG>{So`5;J5Ymuth|g; z4Tk-y#`)SuXU|%IV2zOh`8orhbb>D$kgrGh`|3Jqvf4O~=(_y;xi8nXcuJ||H>;HM zfs*+ENb7c!(M?A0HyhnZk7dj)2roa|VTNU4T}CKsVRgbq?Mq%!yVYn!dQ79+!1t<= zoxeeepx-nvYeMA>@ZFE1biRDWXdz|pcB2L9u`+iD_-Zd{4KQHf4oTQ4n5U8|Z3Q1; zX??!#<;tB#AJSvF@_g{s^%j-`Y@4p^6E8JE`GyDaE(4MD7{m?Wt2*@?*ssQd?z*ZV zc0V`MHvX2Uz}-dx(qjrtgRg4OPM=Q!|5(Mq{SVzV;O}^VHyXgC#{h2v-#C7=;%FVe zSu$4qo(FZafl7J|>K5=-U6i41@p%5UO2B5H18U2D--El=z$HBfcN_Sw2T$pa&;tB! zVSA<5#O;J@rg;C+aM<2QPup2OG&}S?!fuzGFP`fkX!Mp|%=U#|SNh!(kO==Fy|iyV z8owNa-(!H1PN1Z741O;NKg92k@cbChcD(PvvlGuQJiGB6Nzga1kAS`piF5Y^KT*&# zVDLdV$~IezEe+owC3c=aj0`9;^`45T_Zrmq0MC&_4MRs!KZw+;*!m&x(bgLE zY<*kf^nlnpRG`s~6q)(qihv(6fM0-Lnt7JbkpWB_7XyAF60Tz57lDr!)__a4g;;>RrksPqI{M53 z7c;0#pLy^xgPM4xM16bY`H0bg=l%-aW<|&O?wrLMM9Y(^wP$$FAUxdPIdst_lbEaz z*$@5nipB!oX&=&cXXp1J2M|vCwD8bAkK*}mZTmz$fz>gPBXB$mJqFFRh1z(hg-DNC zXc6JGPzMh!)WtKtg@XQ~#<5T;a6AhwK{IWk$MH@Jksh;958<>>9}g`w!1JTpWhkvG zG4Ez|tdtWvo~4$dp|;dPywg&o$1L>(!fB~Pcxb7^cviqtMPA#+vXlrN&r&aihT2ju z!#gcSddyNUM>s9@Gk9pJSK#?h{W2BvAQ!a~j(cTy`^oU$aY#3ceQ+X-SN`b{=_{d_ zHqfi^P6Lr1GtjFMP6IuOhX#5Lp6~xH7^t9Ut8F6b+8iUj7RqTOy$*C&1_DTb10YdKvR8Mjg^)8S|?~oloIcsuV97tW%?k)QM+N6>Wa4qBfs4 z+UU&rTHOZG)Rv_BWrXqkt9g7zItd<=(N*u)jZH|8Fd5dU1rRk{E*D%2@htr?85&B-r3HQ z&deq~bVBTl2xmL1M+D_Qc1%NSHFHjWV6f!%wE>h+6U{xrF*W!p}ez?Tq~d9R#_M5uK}qp(7%g!W-#fo z0{wdk_cJ*4K~$$duB>sLoGwxL>lGFLeWUP^%;Nr1wJf%$bi!qOy1%5e_!~g3v-q1v zW71<;{0By3J&9TAEY52j%;NDBe!8N<-!cm8L0Nh_v3?`%U&bjtQn>1ts40HTb>@E2 z>yZA?=t_DlbN?uix$hl$WZ`s3MY`6>(JHEbyP~S!31sWX>W(YJO;y1nZa9}qdL~)J zRg>A9pn1F+4qpI3;3740{+KFchY0Je?Opm zx!aQH0JBW@U_oC&)&HcT>VIlf*IiY)`y5~OqI0`;=AcWrojTZwlI@y;hj?ZB;2+}s zfl;yS5bqC-ia)}y%oRsJY+b6N%F&h5@W&N3{4=BBpBoK1q?CVufxl1LxxA%0*xi_W z3_jDh&1biJo~Z*Kz}G>oZs)k+5yX>sHwFi`bxfpHm=aB3DMZH1IBYYqg@+cWdBGi; zpA!w^&c84sfrT}29)AUOq8 zOy8GY;MUS>a}p*elmzk0M_Z`7Orh>%a`S2do|TLV#WVyybZJl9=?hSUzzbNBcKoi? zW8p3l7lPr#Ha9b&iS+_s;LbgF#pvCio&<=_)?cTWoaZ@nLIoW3A+r z0H#^@8rmJT5)WNyOBADDXuG9W`urMPl`y0nzUtM@U0#ZNN3HZ2vue(AT7hm7o{swU za#jgon&BH&1NZUXSy8n>RHjq!D&OrUQQh5SEtJZmP^x|v4L1zMUWltU48;VTvH$}OVn5l&eD*5-Mhd{Z3Nx#36o27=$M`beMt94D+x2B>Ns;3OMp2DCrvTExY zid&4_IBcwnT>Lx25@F=RppoBIwJe7s6Z#0ZG)r1#ou?$_wq!`F(iP9QR?KLX3h%C@ zF5zK-Fs2?&s}2C1NR(aeI_cX+1h0L{gd0r(qP%`eHLIErDr#|IHGVm(7FOlPv(|;z z_f#~Lq~nw&)kGs_%I?ixS1~C}58)&NH%r6OQM(`YFN%nEL za(Hzzb(KLT?IjLLOnBF66N-DC_OTrEPx><)j*OjKw;3^a>-KZjVBLOl-Ri5oggN2L zUB(Ro;TyVds1jRT%E-l^nUle5a^_n zrrnS;-s((g%}5b)+odZ)IWoGbvNX3Y$i=RnV8`p(tvT823XnR{h+8gKMP9R8xH2b6 zWpv8HNTK_P)9zxTIJ!Qemhw_i?BZigY2n>qjVF;+&y)}?QFja>bm?u$d2~TpDKF7Q zZdT5>Y1ZNzmbr(S!sMb$&)wLKo_?xkd7Km?*JwIN;I1zg;qXy_+%4(`*qfc#RTX7p zP-u3~^Qv5YYZjc70;|+C_taFrrrA>GGE#)JR9=X=Ejm*F!x1P_%nFWds2wq@!$$#f zbE+GVRpj+KyJ!WoG*x>+vHIrf%W@)YHz0k7T)>*XYtLULQ8g=4l{`wt+_&899d7Jv zH&Go|CzJV{vQ@}sC;U@QMV0ecSLJY6D+mjtN&2K^Cd{YoM9vr~Lb^hVFqdsdxIT(ho?exp6$w4|tpuBF(r2d2X_#5i~O%jDLMhUIfY<{W9~dIo(UsF@V*L z=uBD~E>Xw2$|_I5vO70% z*Dd#|+Za&Bb$lc(qFsEj&317dDkDP@=c4$?ki_Am02z|F0a;rV8Ilx5p;&2oQXbqN zL4QhW{7~HT6hxrR+->&xeJooL9QQ`jmS)7%gHWU`^*9|vS^q_@8=}0SY%AwW+ui6j z+U;hWVguM(i_Kmh+Zri$N*XySL>k7Nr=eWowFb(uLW~q9hFKRtk;3HgX=T!Y%q>q| z83zWqH+JWi7qNgqA;)j%_nQOGK%dha_TtA+cb5)t@6I*a#|(PQ%`-MO`-2wU>vTJN zmiKYbTWwcE!s*#Ax7n0FMQ!?m;X?JQmwi(mRG2JGBg(1X*6)S-eM6_y9i({DMXt5E zFK3K6f$h*{<4H4pAJ)KeAMe2d*!Ax^d>x~2j* zhFG#C$}G99LX@I?$naj4t2ZZB$|y)Nyb4k3C*Q}jWOBp8?bI88h(+ zWHU%_xdayIRSc?oSviZpDdL#XUtE{zx3>n4ly1sprX62<%x?L;!Xk9ia+zdnHB;Ws z?LFbSWp$bIl<~>xzFsuW{@#;b8tbB-n!ctXGZ^=_;Iv!apHDgyoliaNW zk)j=ori*qNpERtBkF_=H^72iHt>uMr2tb;UDAVnxD46NLs#j9@*+O987INl)ohc+0 zShwbioSmdfY=6nm(7mO&bzYj)V&#jkt?ZJ#UZ|7e8w!)t8qyR^CU#v$*o)Tnm@C(N z_+z~Jq;ja;=x+BAPs-($O)IY2u1Gq=Z@yX9dxGt|CWpGJD&` zDjJUvt}(_gWsF!l9M`p;Sh@kgo1emgx;}9dAS;prsYf)usqGLRfs?F7)nPvmi%?EoeEUZ(cRP9jM^|?mM*0*$F zNiP=3CVnm;GOkE@-8Cl}R|JA4dgjw7Oj+R8d1C0+ne&&B7u(@L_rtZ_wwu zi&`67z2@AY+dF(tSkCFDk=r(pRkPOqRFknkY$H{3qK8T2d%!iEzCnJ@G`VBgzGVq5~1$ zS@4Qp1-zL`iuY*zZG}V=B)qB#4tehoa1;E7Yt*^6jXkTs08NN@#Zoum`kCbn=~@g_nY*5@Reycs}jmqaHVQT420h0Qv`>Y3wW zK^7KvvXey4AVF8Y^$e1VS}B8!;So4*5J#9bNJ`xyWg-1Wdb!_BCa01$H}Z}H2^pc3 z?3TQk$cd|G7%Ol#C$L^=xl9li3p_oSRNhG9Uw4I!B;r=gNFs2>jN}Wg=9S)aMZt)r$GtUr;-8712VQ@?8^&1RBD$?{Cn zg<|@Eq!TjX(xWB5+uJ&Ju-P-=ORHxMD{t19SI;JDjJOZ8tL0=8r$(JV<}^Q{oPEUI z?aJ6kq^*>FMBYl-$CqdABLM;X)M!6Vv9zxEP{_2!%2~8Gv#SWz%Fytz=+Nfow z%tyV&rW!X-BxZ?G@-f%iG{c(OwMiav-#Qqi?!|1R0v)a68y%^vc&wkDvRLB!YpFI) ziRL=a12&zo&NVkatk?ppSpPUP<^+1RoslxTP0rqL^$FUoraD$?*s?XXDXDssvv-A* z$(mC+Xki!foox`dWmbU3oe7YZtXP0uPf1r3bFGxE5mth;DdIX0wX)KMMsGQ4L`S5V z=`iT$LaAQbqAcm?`vqOWNXV_Qg3@g3_(*2ZU2N89j|40;DN1|D4Do4Td!dW1h69V~ zam>u51+rxCH>@Q5OK!5oHQbhzsAfD=S}FC6ZKT*KpF#OQXrIk`(Hal#IN+~g0H7Hg{*lg91+*4ARN}%X3CakD>rqQD8gg0EQ zMgV0c)iP2TQ>|(zb8vJQ874{^xjj*mW=e9eq$vn}9b!cm7%Q6y9C$uT$cHpebrWLE_Yel^w?kL5WbXsETMyu|p29tu@{q+k@A;%gnBc zp@Ja9?|~mt2`->W61+SDRMWUgz+qU*m?TMIn zsxgTvYFQ2D({z^Ev-S#5_&#-GfFSJsM6_a3_bH;bG9XkG|EQ{iLiRvNynV!tLvHlr z834HDuoDqZxruhG>^f&u3%7Ged29Vq`5mb`pA>4=&=>~{K`7Y-n0ZDiG<6RmE#}1Mvjh%?N zZPKK|5oyY7P9YxFrMAz4$D9efXpcKSt2+UWMN9&ZaBtksJAL$(b?pP7ZF|12o8W6n zzDj3(KXqiuJSTx*2myV%5D$r>BDl0|{BHvbz!<`OrKf4Zz{-Nqa5Va_bQ#^ZP8G~r zrW1N9JZ*&psz)QC3#5|Jc-*C2X#{X8iXuyvIkwqywFMmT>^UK5r|$O-kq*6gF^0?o zF7YoypjOY>k2IcEeE2|G;_ZMXija(I$ z8(@RhB4X~48URKmYG%-puHFzOsajP@4-Ccc8YXPx3^I6=J<@AtbJqNIE z+=}wn5WKOjM}c`n_}Jv9L8#xtg?MeK(T>r@`=VBpu%aY&1&sZ-U^du94?v%rpnG_$ zz^+`-PSu`8(Y;<{$YIXu;6cogY&Nd1x|9fygI1q<^^b*>=6 zRV>5rRcBRuzF5aOa6(= zg-W#QU0k%jcztZ@j-Q90d)IuVR6YHIJ$>rbC%K>AJDWr5AwiVmXQ$Nj7e91W $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + + + \ No newline at end of file diff --git a/Economy.Server/obj/project.assets.json b/Economy.Server/obj/project.assets.json index 4a5c69d38..8b922a874 100644 --- a/Economy.Server/obj/project.assets.json +++ b/Economy.Server/obj/project.assets.json @@ -2,117 +2,48 @@ "version": 3, "targets": { ".NETCoreApp,Version=v3.1": { - "Grpc/2.23.0": { + "Isopoh.Cryptography.Argon2/1.1.3": { "type": "package", "dependencies": { - "Grpc.Core": "2.23.0" - } - }, - "Grpc.Core/2.23.0": { - "type": "package", - "dependencies": { - "Grpc.Core.Api": "2.23.0", - "System.Memory": "4.5.3" + "Isopoh.Cryptography.Blake2b": "1.1.3", + "Isopoh.Cryptography.SecureArray": "1.1.3", + "System.Threading.Thread": "4.3.0" }, "compile": { - "lib/netstandard2.0/Grpc.Core.dll": {} + "lib/netstandard2.1/Isopoh.Cryptography.Argon2.dll": {} }, "runtime": { - "lib/netstandard2.0/Grpc.Core.dll": {} - }, - "runtimeTargets": { - "runtimes/linux/native/libgrpc_csharp_ext.x64.so": { - "assetType": "native", - "rid": "linux" - }, - "runtimes/linux/native/libgrpc_csharp_ext.x86.so": { - "assetType": "native", - "rid": "linux" - }, - "runtimes/osx/native/libgrpc_csharp_ext.x64.dylib": { - "assetType": "native", - "rid": "osx" - }, - "runtimes/osx/native/libgrpc_csharp_ext.x86.dylib": { - "assetType": "native", - "rid": "osx" - }, - "runtimes/win/native/grpc_csharp_ext.x64.dll": { - "assetType": "native", - "rid": "win" - }, - "runtimes/win/native/grpc_csharp_ext.x86.dll": { - "assetType": "native", - "rid": "win" - } + "lib/netstandard2.1/Isopoh.Cryptography.Argon2.dll": {} } }, - "Grpc.Core.Api/2.25.0": { + "Isopoh.Cryptography.Blake2b/1.1.3": { "type": "package", "dependencies": { - "System.Memory": "4.5.3" + "Isopoh.Cryptography.SecureArray": "1.1.3" }, "compile": { - "lib/netstandard2.0/Grpc.Core.Api.dll": {} + "lib/netstandard2.1/Isopoh.Cryptography.Blake2b.dll": {} }, "runtime": { - "lib/netstandard2.0/Grpc.Core.Api.dll": {} + "lib/netstandard2.1/Isopoh.Cryptography.Blake2b.dll": {} } }, - "MagicOnion/3.0.9": { + "Isopoh.Cryptography.SecureArray/1.1.3": { "type": "package", "dependencies": { - "Grpc": "2.23.0", - "MagicOnion.Abstractions": "3.0.9", - "MessagePack": "2.1.80", - "System.Buffers": "4.5.0", - "System.Collections.Immutable": "1.5.0", - "System.Runtime.CompilerServices.Unsafe": "4.5.2", - "System.Threading.Tasks.Extensions": "4.5.3", - "System.Threading.Tasks.Parallel": "4.3.0" + "System.Runtime.Extensions": "4.3.1" }, "compile": { - "lib/netstandard2.0/MagicOnion.dll": {} + "lib/netstandard2.1/Isopoh.Cryptography.SecureArray.dll": {} }, "runtime": { - "lib/netstandard2.0/MagicOnion.dll": {} + "lib/netstandard2.1/Isopoh.Cryptography.SecureArray.dll": {} } }, - "MagicOnion.Abstractions/3.0.9": { + "MessagePack/2.1.90": { "type": "package", "dependencies": { - "Grpc.Core.Api": "2.25.0", - "MessagePack": "2.1.80" - }, - "compile": { - "lib/netstandard2.0/MagicOnion.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/MagicOnion.Abstractions.dll": {} - } - }, - "MagicOnion.Hosting/3.0.9": { - "type": "package", - "dependencies": { - "MagicOnion": "3.0.9", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "3.1.0", - "Microsoft.Extensions.Configuration.Json": "3.1.0", - "Microsoft.Extensions.Configuration.UserSecrets": "3.1.0", - "Microsoft.Extensions.Hosting": "3.1.0", - "Microsoft.Extensions.Logging.Configuration": "3.1.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "3.1.0" - }, - "compile": { - "lib/netstandard2.1/MagicOnion.Hosting.dll": {} - }, - "runtime": { - "lib/netstandard2.1/MagicOnion.Hosting.dll": {} - } - }, - "MessagePack/2.1.80": { - "type": "package", - "dependencies": { - "MessagePack.Annotations": "2.1.80", + "MessagePack.Annotations": "2.1.90", "Microsoft.Bcl.AsyncInterfaces": "1.0.0", "System.Memory": "4.5.3", "System.Reflection.Emit": "4.6.0", @@ -127,7 +58,7 @@ "lib/netcoreapp2.1/MessagePack.dll": {} } }, - "MessagePack.Annotations/2.1.80": { + "MessagePack.Annotations/2.1.90": { "type": "package", "compile": { "lib/netstandard2.0/MessagePack.Annotations.dll": {} @@ -172,120 +103,55 @@ "lib/netstandard1.3/Microsoft.CSharp.dll": {} } }, - "Microsoft.Extensions.Configuration/3.1.0": { + "Microsoft.Extensions.Configuration/5.0.0-preview.1.20120.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.0" + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0-preview.1.20120.4" }, "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {} }, "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {} } }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.0": { + "Microsoft.Extensions.Configuration.Abstractions/5.0.0-preview.1.20120.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.0" + "Microsoft.Extensions.Primitives": "5.0.0-preview.1.20120.4" }, "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} }, "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} } }, - "Microsoft.Extensions.Configuration.Binder/3.1.0": { + "Microsoft.Extensions.Configuration.Binder/5.0.0-preview.1.20120.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" + "Microsoft.Extensions.Configuration": "5.0.0-preview.1.20120.4" }, "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": {} }, "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": {} } }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0": { + "Microsoft.Extensions.DependencyInjection/5.0.0-preview.1.20120.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0-preview.1.20120.4" }, "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.CommandLine.dll": {} + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll": {} }, "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.CommandLine.dll": {} + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll": {} } }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": {} - } - }, - "Microsoft.Extensions.Configuration.FileExtensions/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0", - "Microsoft.Extensions.FileProviders.Physical": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.FileExtensions.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.FileExtensions.dll": {} - } - }, - "Microsoft.Extensions.Configuration.Json/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0", - "Microsoft.Extensions.Configuration.FileExtensions": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Json.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Json.dll": {} - } - }, - "Microsoft.Extensions.Configuration.UserSecrets/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Json": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.UserSecrets.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.UserSecrets.dll": {} - }, - "build": { - "build/netstandard2.0/_._": {} - } - }, - "Microsoft.Extensions.DependencyInjection/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll": {} - } - }, - "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.0": { + "Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0-preview.1.20120.4": { "type": "package", "compile": { "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} @@ -294,94 +160,22 @@ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} } }, - "Microsoft.Extensions.FileProviders.Abstractions/3.1.0": { + "Microsoft.Extensions.Logging/5.0.0-preview.1.20120.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Primitives": "3.1.0" + "Microsoft.Extensions.Configuration.Binder": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.DependencyInjection": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.Options": "5.0.0-preview.1.20120.4" }, "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": {} }, "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Abstractions.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": {} } }, - "Microsoft.Extensions.FileProviders.Physical/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "3.1.0", - "Microsoft.Extensions.FileSystemGlobbing": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Physical.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Physical.dll": {} - } - }, - "Microsoft.Extensions.FileSystemGlobbing/3.1.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll": {} - } - }, - "Microsoft.Extensions.Hosting/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration": "3.1.0", - "Microsoft.Extensions.Configuration.CommandLine": "3.1.0", - "Microsoft.Extensions.Configuration.EnvironmentVariables": "3.1.0", - "Microsoft.Extensions.Configuration.UserSecrets": "3.1.0", - "Microsoft.Extensions.DependencyInjection": "3.1.0", - "Microsoft.Extensions.FileProviders.Physical": "3.1.0", - "Microsoft.Extensions.Hosting.Abstractions": "3.1.0", - "Microsoft.Extensions.Logging": "3.1.0", - "Microsoft.Extensions.Logging.Console": "3.1.0", - "Microsoft.Extensions.Logging.Debug": "3.1.0", - "Microsoft.Extensions.Logging.EventLog": "3.1.0", - "Microsoft.Extensions.Logging.EventSource": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.dll": {} - } - }, - "Microsoft.Extensions.Hosting.Abstractions/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", - "Microsoft.Extensions.FileProviders.Abstractions": "3.1.0", - "Microsoft.Extensions.Logging.Abstractions": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.Abstractions.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.Abstractions.dll": {} - } - }, - "Microsoft.Extensions.Logging/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Binder": "3.1.0", - "Microsoft.Extensions.DependencyInjection": "3.1.0", - "Microsoft.Extensions.Logging.Abstractions": "3.1.0", - "Microsoft.Extensions.Options": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll": {} - } - }, - "Microsoft.Extensions.Logging.Abstractions/3.1.0": { + "Microsoft.Extensions.Logging.Abstractions/5.0.0-preview.1.20120.4": { "type": "package", "compile": { "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} @@ -390,108 +184,34 @@ "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} } }, - "Microsoft.Extensions.Logging.Configuration/3.1.0": { + "Microsoft.Extensions.Options/5.0.0-preview.1.20120.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Logging": "3.1.0", - "Microsoft.Extensions.Options.ConfigurationExtensions": "3.1.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.Primitives": "5.0.0-preview.1.20120.4", + "System.ComponentModel.Annotations": "5.0.0-preview.1.20120.5" }, "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Configuration.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} }, "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Configuration.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} } }, - "Microsoft.Extensions.Logging.Console/3.1.0": { + "Microsoft.Extensions.Primitives/5.0.0-preview.1.20120.4": { "type": "package", "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.0", - "Microsoft.Extensions.Logging": "3.1.0", - "Microsoft.Extensions.Logging.Configuration": "3.1.0" + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "5.0.0-preview.1.20120.5" }, "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Console.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} }, "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Console.dll": {} + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} } }, - "Microsoft.Extensions.Logging.Debug/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Debug.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Debug.dll": {} - } - }, - "Microsoft.Extensions.Logging.EventLog/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging": "3.1.0", - "System.Diagnostics.EventLog": "4.7.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventLog.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventLog.dll": {} - } - }, - "Microsoft.Extensions.Logging.EventSource/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventSource.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventSource.dll": {} - } - }, - "Microsoft.Extensions.Options/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", - "Microsoft.Extensions.Primitives": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll": {} - } - }, - "Microsoft.Extensions.Options.ConfigurationExtensions/3.1.0": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Configuration.Abstractions": "3.1.0", - "Microsoft.Extensions.Configuration.Binder": "3.1.0", - "Microsoft.Extensions.DependencyInjection.Abstractions": "3.1.0", - "Microsoft.Extensions.Options": "3.1.0" - }, - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {} - } - }, - "Microsoft.Extensions.Primitives/3.1.0": { - "type": "package", - "compile": { - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} - }, - "runtime": { - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll": {} - } - }, - "Microsoft.NETCore.Platforms/3.1.0": { + "Microsoft.NETCore.Platforms/1.1.1": { "type": "package", "compile": { "lib/netstandard1.0/_._": {} @@ -500,7 +220,7 @@ "lib/netstandard1.0/_._": {} } }, - "Microsoft.NETCore.Targets/1.1.0": { + "Microsoft.NETCore.Targets/1.1.3": { "type": "package", "compile": { "lib/netstandard1.0/_._": {} @@ -509,89 +229,6 @@ "lib/netstandard1.0/_._": {} } }, - "Microsoft.Win32.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll": {} - } - }, - "Microsoft.Win32.Registry/4.7.0": { - "type": "package", - "dependencies": { - "System.Security.AccessControl": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - }, - "compile": { - "ref/netstandard2.0/_._": {} - }, - "runtime": { - "lib/netstandard2.0/Microsoft.Win32.Registry.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "NETStandard.Library/1.6.1": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.Win32.Primitives": "4.3.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.Compression.ZipFile": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Net.Http": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Net.Sockets": "4.3.0", - "System.ObjectModel": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Reflection.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.InteropServices.RuntimeInformation": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Text.RegularExpressions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Timer": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0" - } - }, "Newtonsoft.Json/10.0.3": { "type": "package", "dependencies": { @@ -609,7 +246,7 @@ "lib/netstandard1.3/Newtonsoft.Json.dll": {} } }, - "Remotion.Linq/2.1.1": { + "Remotion.Linq/2.2.0": { "type": "package", "dependencies": { "System.Collections": "4.0.11", @@ -631,224 +268,6 @@ "lib/netstandard1.0/Remotion.Linq.dll": {} } }, - "RethinkDb.Driver/2.3.150": { - "type": "package", - "dependencies": { - "Microsoft.Extensions.Logging.Abstractions": "2.0.0", - "Newtonsoft.Json": "10.0.3" - }, - "compile": { - "lib/netstandard2.0/RethinkDb.Driver.dll": {} - }, - "runtime": { - "lib/netstandard2.0/RethinkDb.Driver.dll": {} - } - }, - "RethinkDb.Driver.Linq/2.3.150": { - "type": "package", - "dependencies": { - "Remotion.Linq": "2.1.1", - "RethinkDb.Driver": "[2.3.150]" - }, - "compile": { - "lib/netstandard2.0/RethinkDb.Driver.Linq.dll": {} - }, - "runtime": { - "lib/netstandard2.0/RethinkDb.Driver.Linq.dll": {} - } - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "debian.8-x64" - } - } - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "fedora.23-x64" - } - } - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "fedora.24-x64" - } - } - }, - "runtime.native.System/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.IO.Compression/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Net.Http/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "dependencies": { - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple": "4.3.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "dependencies": { - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0", - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "lib/netstandard1.0/_._": {} - }, - "runtime": { - "lib/netstandard1.0/_._": {} - } - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "opensuse.13.2-x64" - } - } - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "opensuse.42.1-x64" - } - } - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib": { - "assetType": "native", - "rid": "osx.10.10-x64" - } - } - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib": { - "assetType": "native", - "rid": "osx.10.10-x64" - } - } - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "rhel.7-x64" - } - } - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.14.04-x64" - } - } - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.16.04-x64" - } - } - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "runtimeTargets": { - "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so": { - "assetType": "native", - "rid": "ubuntu.16.10-x64" - } - } - }, - "System.AppContext/4.3.0": { - "type": "package", - "dependencies": { - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/System.AppContext.dll": {} - }, - "runtime": { - "lib/netstandard1.6/System.AppContext.dll": {} - } - }, - "System.Buffers/4.5.0": { - "type": "package", - "compile": { - "ref/netcoreapp2.0/_._": {} - }, - "runtime": { - "lib/netcoreapp2.0/_._": {} - } - }, "System.Collections/4.3.0": { "type": "package", "dependencies": { @@ -860,36 +279,6 @@ "ref/netstandard1.3/System.Collections.dll": {} } }, - "System.Collections.Concurrent/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Collections.Concurrent.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Collections.Concurrent.dll": {} - } - }, - "System.Collections.Immutable/1.5.0": { - "type": "package", - "compile": { - "lib/netstandard2.0/System.Collections.Immutable.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Collections.Immutable.dll": {} - } - }, "System.Collections.NonGeneric/4.3.0": { "type": "package", "dependencies": { @@ -937,6 +326,15 @@ "lib/netstandard1.3/System.ComponentModel.dll": {} } }, + "System.ComponentModel.Annotations/5.0.0-preview.1.20120.5": { + "type": "package", + "compile": { + "ref/netstandard2.1/System.ComponentModel.Annotations.dll": {} + }, + "runtime": { + "lib/netstandard2.1/System.ComponentModel.Annotations.dll": {} + } + }, "System.ComponentModel.Primitives/4.3.0": { "type": "package", "dependencies": { @@ -977,19 +375,6 @@ "lib/netstandard1.5/System.ComponentModel.TypeConverter.dll": {} } }, - "System.Console/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Console.dll": {} - } - }, "System.Diagnostics.Debug/4.3.0": { "type": "package", "dependencies": { @@ -1001,64 +386,6 @@ "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} } }, - "System.Diagnostics.DiagnosticSource/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Reflection": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0" - }, - "compile": { - "lib/netstandard1.3/_._": {} - }, - "runtime": { - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll": {} - } - }, - "System.Diagnostics.EventLog/4.7.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "Microsoft.Win32.Registry": "4.7.0", - "System.Security.Principal.Windows": "4.7.0" - }, - "compile": { - "ref/netstandard2.0/System.Diagnostics.EventLog.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Diagnostics.EventLog.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netcoreapp2.0/System.Diagnostics.EventLog.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Diagnostics.Tools/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.0/System.Diagnostics.Tools.dll": {} - } - }, - "System.Diagnostics.Tracing/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.5/System.Diagnostics.Tracing.dll": {} - } - }, "System.Dynamic.Runtime/4.3.0": { "type": "package", "dependencies": { @@ -1095,18 +422,6 @@ "ref/netstandard1.3/System.Globalization.dll": {} } }, - "System.Globalization.Calendars/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Globalization": "4.3.0", - "System.Runtime": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Globalization.Calendars.dll": {} - } - }, "System.Globalization.Extensions/4.3.0": { "type": "package", "dependencies": { @@ -1144,59 +459,6 @@ "ref/netstandard1.5/System.IO.dll": {} } }, - "System.IO.Compression/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Buffers": "4.3.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.IO.Compression": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.IO.Compression.ZipFile/4.3.0": { - "type": "package", - "dependencies": { - "System.Buffers": "4.3.0", - "System.IO": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll": {} - } - }, "System.IO.FileSystem/4.3.0": { "type": "package", "dependencies": { @@ -1210,7 +472,7 @@ "System.Threading.Tasks": "4.3.0" }, "compile": { - "ref/netstandard1.3/System.IO.FileSystem.dll": {} + "ref/netstandard1.3/_._": {} } }, "System.IO.FileSystem.Primitives/4.3.0": { @@ -1219,7 +481,7 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} + "ref/netstandard1.3/_._": {} }, "runtime": { "lib/netstandard1.3/System.IO.FileSystem.Primitives.dll": {} @@ -1297,76 +559,6 @@ "lib/netcoreapp2.1/_._": {} } }, - "System.Net.Http/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.DiagnosticSource": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Extensions": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Http.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Net.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0", - "System.Runtime.Handles": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Primitives.dll": {} - } - }, - "System.Net.Sockets/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.IO": "4.3.0", - "System.Net.Primitives": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Net.Sockets.dll": {} - } - }, "System.ObjectModel/4.3.0": { "type": "package", "dependencies": { @@ -1383,6 +575,31 @@ "lib/netstandard1.3/System.ObjectModel.dll": {} } }, + "System.Reactive/4.3.2": { + "type": "package", + "compile": { + "lib/netcoreapp3.0/_._": {} + }, + "runtime": { + "lib/netcoreapp3.0/_._": {} + }, + "build": { + "buildTransitive/netcoreapp3.0/System.Reactive.targets": {} + } + }, + "System.Reactive.Linq/4.3.2": { + "type": "package", + "dependencies": { + "System.Reactive": "4.3.2", + "System.Threading.Tasks.Extensions": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/System.Reactive.Linq.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.Reactive.Linq.dll": {} + } + }, "System.Reflection/4.3.0": { "type": "package", "dependencies": { @@ -1474,34 +691,34 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.0/System.Resources.ResourceManager.dll": {} + "ref/netstandard1.0/_._": {} } }, - "System.Runtime/4.3.0": { + "System.Runtime/4.3.1": { "type": "package", "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0" + "Microsoft.NETCore.Platforms": "1.1.1", + "Microsoft.NETCore.Targets": "1.1.3" }, "compile": { "ref/netstandard1.5/System.Runtime.dll": {} } }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { + "System.Runtime.CompilerServices.Unsafe/5.0.0-preview.1.20120.5": { "type": "package", "compile": { - "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {} + "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll": {} }, "runtime": { "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll": {} } }, - "System.Runtime.Extensions/4.3.0": { + "System.Runtime.Extensions/4.3.1": { "type": "package", "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", - "System.Runtime": "4.3.0" + "Microsoft.NETCore.Platforms": "1.1.1", + "Microsoft.NETCore.Targets": "1.1.3", + "System.Runtime": "4.3.1" }, "compile": { "ref/netstandard1.5/System.Runtime.Extensions.dll": {} @@ -1515,7 +732,7 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.3/System.Runtime.Handles.dll": {} + "ref/netstandard1.3/_._": {} } }, "System.Runtime.InteropServices/4.3.0": { @@ -1529,50 +746,7 @@ "System.Runtime.Handles": "4.3.0" }, "compile": { - "ref/netcoreapp1.1/System.Runtime.InteropServices.dll": {} - } - }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "type": "package", - "dependencies": { - "System.Reflection": "4.3.0", - "System.Reflection.Extensions": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtime": { - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Runtime.Numerics/4.3.0": { - "type": "package", - "dependencies": { - "System.Globalization": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Runtime.Numerics.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Runtime.Numerics.dll": {} + "ref/netcoreapp1.1/_._": {} } }, "System.Runtime.Serialization.Formatters/4.3.0": { @@ -1604,261 +778,6 @@ "lib/netstandard1.3/System.Runtime.Serialization.Primitives.dll": {} } }, - "System.Security.AccessControl/4.7.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "3.1.0", - "System.Security.Principal.Windows": "4.7.0" - }, - "compile": { - "ref/netstandard2.0/_._": {} - }, - "runtime": { - "lib/netstandard2.0/System.Security.AccessControl.dll": {} - }, - "runtimeTargets": { - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.Apple": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll": {} - }, - "runtimeTargets": { - "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "osx" - }, - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Cng/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Csp/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/_._": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Linq": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.6/_._": {} - }, - "runtime": { - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll": { - "assetType": "runtime", - "rid": "unix" - } - } - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "type": "package", - "dependencies": { - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll": {} - } - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Globalization": "4.3.0", - "System.Globalization.Calendars": "4.3.0", - "System.IO": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.Handles": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Cng": "4.3.0", - "System.Security.Cryptography.Csp": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.OpenSsl": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "runtime.native.System": "4.3.0", - "runtime.native.System.Net.Http": "4.3.0", - "runtime.native.System.Security.Cryptography.OpenSsl": "4.3.0" - }, - "compile": { - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, - "System.Security.Principal.Windows/4.7.0": { - "type": "package", - "compile": { - "ref/netcoreapp3.0/System.Security.Principal.Windows.dll": {} - }, - "runtime": { - "lib/netstandard2.0/System.Security.Principal.Windows.dll": {} - }, - "runtimeTargets": { - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "unix" - }, - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll": { - "assetType": "runtime", - "rid": "win" - } - } - }, "System.Text.Encoding/4.3.0": { "type": "package", "dependencies": { @@ -1879,7 +798,7 @@ "System.Text.Encoding": "4.3.0" }, "compile": { - "ref/netstandard1.3/System.Text.Encoding.Extensions.dll": {} + "ref/netstandard1.3/_._": {} } }, "System.Text.RegularExpressions/4.3.0": { @@ -1888,7 +807,7 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netcoreapp1.1/System.Text.RegularExpressions.dll": {} + "ref/netcoreapp1.1/_._": {} }, "runtime": { "lib/netstandard1.6/System.Text.RegularExpressions.dll": {} @@ -1927,34 +846,16 @@ "lib/netcoreapp2.1/_._": {} } }, - "System.Threading.Tasks.Parallel/4.3.0": { + "System.Threading.Thread/4.3.0": { "type": "package", "dependencies": { - "System.Collections.Concurrent": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tracing": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0" - }, - "compile": { - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll": {} - } - }, - "System.Threading.Timer/4.3.0": { - "type": "package", - "dependencies": { - "Microsoft.NETCore.Platforms": "1.1.0", - "Microsoft.NETCore.Targets": "1.1.0", "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.2/System.Threading.Timer.dll": {} + "ref/netstandard1.3/System.Threading.Thread.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Threading.Thread.dll": {} } }, "System.Xml.ReaderWriter/4.3.0": { @@ -1983,29 +884,6 @@ "lib/netstandard1.3/System.Xml.ReaderWriter.dll": {} } }, - "System.Xml.XDocument/4.3.0": { - "type": "package", - "dependencies": { - "System.Collections": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO": "4.3.0", - "System.Reflection": "4.3.0", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Threading": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0" - }, - "compile": { - "ref/netstandard1.3/System.Xml.XDocument.dll": {} - }, - "runtime": { - "lib/netstandard1.3/System.Xml.XDocument.dll": {} - } - }, "System.Xml.XmlDocument/4.3.0": { "type": "package", "dependencies": { @@ -2031,8 +909,10 @@ "type": "project", "framework": ".NETStandard,Version=v2.0", "dependencies": { - "MagicOnion.Abstractions": "3.0.0", - "Newtonsoft.Json": "10.0.3" + "MessagePack": "2.1.90", + "Microsoft.Extensions.Logging": "5.0.0-preview.1.20120.4", + "Newtonsoft.Json": "10.0.3", + "Remotion.Linq": "2.2.0" }, "compile": { "bin/placeholder/Economy.Shared.dll": {} @@ -2044,117 +924,109 @@ } }, "libraries": { - "Grpc/2.23.0": { - "sha512": "h2L2SQBI7Y8cQ/TKXFSSEL+bxOA4FtF907DxL8AuVomEmuZG2IemKye9U5cFgx3hq9h7RpP30XyBsG+Se0Mp9w==", + "Isopoh.Cryptography.Argon2/1.1.3": { + "sha512": "ewLDFbREgqI3WvoDg9aDgzxGO8IkyZ90aIKEI8KaoiOy112Syar1RMeYfs06ZcF3F33vYXtGbliCMiw5+04UDA==", "type": "package", - "path": "grpc/2.23.0", + "path": "isopoh.cryptography.argon2/1.1.3", "files": [ ".nupkg.metadata", ".signature.p7s", - "grpc.2.23.0.nupkg.sha512", - "grpc.nuspec" + "LICENSE", + "isopoh.cryptography.argon2.1.1.3.nupkg.sha512", + "isopoh.cryptography.argon2.nuspec", + "isopoh.png", + "lib/net462/Isopoh.Cryptography.Argon2.dll", + "lib/net462/Isopoh.Cryptography.Argon2.xml", + "lib/net472/Isopoh.Cryptography.Argon2.dll", + "lib/net472/Isopoh.Cryptography.Argon2.xml", + "lib/net48/Isopoh.Cryptography.Argon2.dll", + "lib/net48/Isopoh.Cryptography.Argon2.xml", + "lib/netstandard1.3/Isopoh.Cryptography.Argon2.dll", + "lib/netstandard1.3/Isopoh.Cryptography.Argon2.xml", + "lib/netstandard1.4/Isopoh.Cryptography.Argon2.dll", + "lib/netstandard1.4/Isopoh.Cryptography.Argon2.xml", + "lib/netstandard1.5/Isopoh.Cryptography.Argon2.dll", + "lib/netstandard1.5/Isopoh.Cryptography.Argon2.xml", + "lib/netstandard1.6/Isopoh.Cryptography.Argon2.dll", + "lib/netstandard1.6/Isopoh.Cryptography.Argon2.xml", + "lib/netstandard2.0/Isopoh.Cryptography.Argon2.dll", + "lib/netstandard2.0/Isopoh.Cryptography.Argon2.xml", + "lib/netstandard2.1/Isopoh.Cryptography.Argon2.dll", + "lib/netstandard2.1/Isopoh.Cryptography.Argon2.xml" ] }, - "Grpc.Core/2.23.0": { - "sha512": "42H3YNdzsT1CHb+woJxHjwcPj8SQk0jcDIMk2YLiryClShTq7x9EOYYdrxmAYyiMt0UkWuWRG6z857zVB/8zpQ==", + "Isopoh.Cryptography.Blake2b/1.1.3": { + "sha512": "2syQ7twZ6RCVwpt67YFYMTgMxoyVabUo8GfmEKB+iiAAHgbpkzFX3NL8IHpRJHraz/BD12usHLfudiwe1Swvkw==", "type": "package", - "path": "grpc.core/2.23.0", + "path": "isopoh.cryptography.blake2b/1.1.3", "files": [ ".nupkg.metadata", ".signature.p7s", - "build/MonoAndroid10/Grpc.Core.targets", - "build/Xamarin.iOS10/Grpc.Core.targets", - "build/net45/Grpc.Core.targets", - "grpc.core.2.23.0.nupkg.sha512", - "grpc.core.nuspec", - "lib/net45/Grpc.Core.dll", - "lib/net45/Grpc.Core.pdb", - "lib/net45/Grpc.Core.xml", - "lib/netstandard1.5/Grpc.Core.dll", - "lib/netstandard1.5/Grpc.Core.pdb", - "lib/netstandard1.5/Grpc.Core.xml", - "lib/netstandard2.0/Grpc.Core.dll", - "lib/netstandard2.0/Grpc.Core.pdb", - "lib/netstandard2.0/Grpc.Core.xml", - "native/android/arm64-v8a/libgrpc_csharp_ext.so", - "native/android/armeabi-v7a/libgrpc_csharp_ext.so", - "native/android/x86/libgrpc_csharp_ext.so", - "native/ios/universal/libgrpc.a", - "native/ios/universal/libgrpc_csharp_ext.a", - "runtimes/linux/native/libgrpc_csharp_ext.x64.so", - "runtimes/linux/native/libgrpc_csharp_ext.x86.so", - "runtimes/osx/native/libgrpc_csharp_ext.x64.dylib", - "runtimes/osx/native/libgrpc_csharp_ext.x86.dylib", - "runtimes/win/native/grpc_csharp_ext.x64.dll", - "runtimes/win/native/grpc_csharp_ext.x86.dll" + "LICENSE", + "isopoh.cryptography.blake2b.1.1.3.nupkg.sha512", + "isopoh.cryptography.blake2b.nuspec", + "isopoh.png", + "lib/net452/Isopoh.Cryptography.Blake2b.dll", + "lib/net452/Isopoh.Cryptography.Blake2b.xml", + "lib/net462/Isopoh.Cryptography.Blake2b.dll", + "lib/net462/Isopoh.Cryptography.Blake2b.xml", + "lib/net472/Isopoh.Cryptography.Blake2b.dll", + "lib/net472/Isopoh.Cryptography.Blake2b.xml", + "lib/net48/Isopoh.Cryptography.Blake2b.dll", + "lib/net48/Isopoh.Cryptography.Blake2b.xml", + "lib/netstandard1.3/Isopoh.Cryptography.Blake2b.dll", + "lib/netstandard1.3/Isopoh.Cryptography.Blake2b.xml", + "lib/netstandard1.4/Isopoh.Cryptography.Blake2b.dll", + "lib/netstandard1.4/Isopoh.Cryptography.Blake2b.xml", + "lib/netstandard1.5/Isopoh.Cryptography.Blake2b.dll", + "lib/netstandard1.5/Isopoh.Cryptography.Blake2b.xml", + "lib/netstandard1.6/Isopoh.Cryptography.Blake2b.dll", + "lib/netstandard1.6/Isopoh.Cryptography.Blake2b.xml", + "lib/netstandard2.0/Isopoh.Cryptography.Blake2b.dll", + "lib/netstandard2.0/Isopoh.Cryptography.Blake2b.xml", + "lib/netstandard2.1/Isopoh.Cryptography.Blake2b.dll", + "lib/netstandard2.1/Isopoh.Cryptography.Blake2b.xml" ] }, - "Grpc.Core.Api/2.25.0": { - "sha512": "ax4qg0k4ZTlWf8PtZoU/hfbwWkgtCRIucVqqgXrRd9HYyieuilZtX6h55SwoFeW8sdNQs950gEkR5XHGStR0lQ==", + "Isopoh.Cryptography.SecureArray/1.1.3": { + "sha512": "NYx60QMT5hyeDij0ROC2iOIOKrPSzXbDuESjXU14vm9OAGiibERyILUK3Adqur6go9Dj628egqGrLC24ith9rg==", "type": "package", - "path": "grpc.core.api/2.25.0", + "path": "isopoh.cryptography.securearray/1.1.3", "files": [ ".nupkg.metadata", ".signature.p7s", - "grpc.core.api.2.25.0.nupkg.sha512", - "grpc.core.api.nuspec", - "lib/net45/Grpc.Core.Api.dll", - "lib/net45/Grpc.Core.Api.pdb", - "lib/net45/Grpc.Core.Api.xml", - "lib/netstandard1.5/Grpc.Core.Api.dll", - "lib/netstandard1.5/Grpc.Core.Api.pdb", - "lib/netstandard1.5/Grpc.Core.Api.xml", - "lib/netstandard2.0/Grpc.Core.Api.dll", - "lib/netstandard2.0/Grpc.Core.Api.pdb", - "lib/netstandard2.0/Grpc.Core.Api.xml" + "LICENSE", + "isopoh.cryptography.securearray.1.1.3.nupkg.sha512", + "isopoh.cryptography.securearray.nuspec", + "isopoh.png", + "lib/net452/Isopoh.Cryptography.SecureArray.dll", + "lib/net452/Isopoh.Cryptography.SecureArray.xml", + "lib/net462/Isopoh.Cryptography.SecureArray.dll", + "lib/net462/Isopoh.Cryptography.SecureArray.xml", + "lib/net472/Isopoh.Cryptography.SecureArray.dll", + "lib/net472/Isopoh.Cryptography.SecureArray.xml", + "lib/net48/Isopoh.Cryptography.SecureArray.dll", + "lib/net48/Isopoh.Cryptography.SecureArray.xml", + "lib/netstandard1.2/Isopoh.Cryptography.SecureArray.dll", + "lib/netstandard1.2/Isopoh.Cryptography.SecureArray.xml", + "lib/netstandard1.3/Isopoh.Cryptography.SecureArray.dll", + "lib/netstandard1.3/Isopoh.Cryptography.SecureArray.xml", + "lib/netstandard1.4/Isopoh.Cryptography.SecureArray.dll", + "lib/netstandard1.4/Isopoh.Cryptography.SecureArray.xml", + "lib/netstandard1.5/Isopoh.Cryptography.SecureArray.dll", + "lib/netstandard1.5/Isopoh.Cryptography.SecureArray.xml", + "lib/netstandard1.6/Isopoh.Cryptography.SecureArray.dll", + "lib/netstandard1.6/Isopoh.Cryptography.SecureArray.xml", + "lib/netstandard2.0/Isopoh.Cryptography.SecureArray.dll", + "lib/netstandard2.0/Isopoh.Cryptography.SecureArray.xml", + "lib/netstandard2.1/Isopoh.Cryptography.SecureArray.dll", + "lib/netstandard2.1/Isopoh.Cryptography.SecureArray.xml" ] }, - "MagicOnion/3.0.9": { - "sha512": "WesAXQnCC66ZkegdUCZHCI3eDpGdxt11x3eXC5NBPPo3zIh1IWClfMEVAEO9quPuMKlEi/ej24WTNC0JC6JP0A==", + "MessagePack/2.1.90": { + "sha512": "frdAkIQyILYjAhH8Q107N77eccLjnkYr8/L+3vHeCezI0rvfCB2xiZjin936QFtskLBmgW1D9y6bKs45zddVLQ==", "type": "package", - "path": "magiconion/3.0.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netstandard2.0/MagicOnion.dll", - "lib/netstandard2.0/MagicOnion.xml", - "magiconion.3.0.9.nupkg.sha512", - "magiconion.nuspec" - ] - }, - "MagicOnion.Abstractions/3.0.9": { - "sha512": "fKImfu81sBP6NbaRlZI5+TouYEg14SYoHCvcqc7Oqn5kjm/CcyKnMtsbIdRlblWj9agbqP3bqt3cURI9Bt7QSQ==", - "type": "package", - "path": "magiconion.abstractions/3.0.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netstandard2.0/MagicOnion.Abstractions.dll", - "lib/netstandard2.0/MagicOnion.Abstractions.xml", - "magiconion.abstractions.3.0.9.nupkg.sha512", - "magiconion.abstractions.nuspec" - ] - }, - "MagicOnion.Hosting/3.0.9": { - "sha512": "ktg3TZ3Ip9mPOwOuwjhbDB23VTuq4X4/vDdKHEvFRQYMURs30Vg1IBWBFIISPhi27xdz1NZzN7m1zhXFlswo9g==", - "type": "package", - "path": "magiconion.hosting/3.0.9", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "Icon.png", - "lib/netstandard2.1/MagicOnion.Hosting.dll", - "lib/netstandard2.1/MagicOnion.Hosting.xml", - "magiconion.hosting.3.0.9.nupkg.sha512", - "magiconion.hosting.nuspec" - ] - }, - "MessagePack/2.1.80": { - "sha512": "gEOcbTp5iLNojD57FEaHxWPvxtmQK0HJB0HiMnfBFZubpUvT/JbeHqqn2KAdl94bTw/P8mxi0WaQawzkxIG4gw==", - "type": "package", - "path": "messagepack/2.1.80", + "path": "messagepack/2.1.90", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -2163,21 +1035,21 @@ "lib/netcoreapp2.1/MessagePack.xml", "lib/netstandard2.0/MessagePack.dll", "lib/netstandard2.0/MessagePack.xml", - "messagepack.2.1.80.nupkg.sha512", + "messagepack.2.1.90.nupkg.sha512", "messagepack.nuspec" ] }, - "MessagePack.Annotations/2.1.80": { - "sha512": "tpEQqydFReJlJ5HfU+YVCkMS/Vf6OFzswCH4RazvfNqC/8iUD7ztFQJ/eeRt9zpQ5RMHlabR+ULqW4Zo6oqYog==", + "MessagePack.Annotations/2.1.90": { + "sha512": "YnS4qdOMFJuC8TDvXK8ECjWn+hI/B6apwMSgQsiynVXxsvFiiSyun7OXgVT7KxkR8qLinFuASzoG/5zv3kemwQ==", "type": "package", - "path": "messagepack.annotations/2.1.80", + "path": "messagepack.annotations/2.1.90", "files": [ ".nupkg.metadata", ".signature.p7s", "LICENSE", "lib/netstandard2.0/MessagePack.Annotations.dll", "lib/netstandard2.0/MessagePack.Annotations.xml", - "messagepack.annotations.2.1.80.nupkg.sha512", + "messagepack.annotations.2.1.90.nupkg.sha512", "messagepack.annotations.nuspec" ] }, @@ -2263,535 +1135,178 @@ "ref/xamarinwatchos10/_._" ] }, - "Microsoft.Extensions.Configuration/3.1.0": { - "sha512": "Lu41BWNmwhKr6LgyQvcYBOge0pPvmiaK8R5UHXX4//wBhonJyWcT2OK1mqYfEM5G7pTf31fPrpIHOT6sN7EGOA==", + "Microsoft.Extensions.Configuration/5.0.0-preview.1.20120.4": { + "sha512": "sxiJYEYRm1XEdndAyXdOTwSnT3cV7XDtyJlfs7bEVC4BZABrblopCmwVbLjE6/ZjaDxmuaPr8cVyYAnDM55iIg==", "type": "package", - "path": "microsoft.extensions.configuration/3.1.0", + "path": "microsoft.extensions.configuration/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.xml", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.xml", "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", - "microsoft.extensions.configuration.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.nuspec", - "packageIcon.png" + "microsoft.extensions.configuration.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.configuration.nuspec" ] }, - "Microsoft.Extensions.Configuration.Abstractions/3.1.0": { - "sha512": "ESz6bVoDQX7sgWdKHF6G9Pq672T8k+19AFb/txDXwdz7MoqaNQj2/in3agm/3qae9V+WvQZH86LLTNVo0it8vQ==", + "Microsoft.Extensions.Configuration.Abstractions/5.0.0-preview.1.20120.4": { + "sha512": "52otpppSgAezHQ8v1TEfkNckX/qXJQAYShl97A03GG8kHTWkqS8Bv3zSLXJZ3084qj822eNcylKz/lMZkf/9CA==", "type": "package", - "path": "microsoft.extensions.configuration.abstractions/3.1.0", + "path": "microsoft.extensions.configuration.abstractions/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Abstractions.xml", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Abstractions.xml", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", - "microsoft.extensions.configuration.abstractions.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.abstractions.nuspec", - "packageIcon.png" + "microsoft.extensions.configuration.abstractions.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec" ] }, - "Microsoft.Extensions.Configuration.Binder/3.1.0": { - "sha512": "o9eELDBfNkR7sUtYysFZ1Q7BQ1mYt27DMkups/3vu7xgPyOpMD+iAfrBZFzUXT2iw0fmFb8s1gfNBZS+IgjKdQ==", + "Microsoft.Extensions.Configuration.Binder/5.0.0-preview.1.20120.4": { + "sha512": "5gC3Rr0gj1r/olVBDMAqE5uL/2SBXoEU2iO3yqvT/uct94TwHBlvw9R96HQeDNBGlPn+DhBaX9XSSXb3ojzzsw==", "type": "package", - "path": "microsoft.extensions.configuration.binder/3.1.0", + "path": "microsoft.extensions.configuration.binder/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Binder.xml", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Binder.xml", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", - "microsoft.extensions.configuration.binder.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.binder.nuspec", - "packageIcon.png" + "microsoft.extensions.configuration.binder.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec" ] }, - "Microsoft.Extensions.Configuration.CommandLine/3.1.0": { - "sha512": "KDjz4HBw549oW4Y1eQAImAugCSYn84KXwgGZtgMqEwctvkdxZo0ObZC5QQI/YvX21U+DArR9+NfWZ3MxD9MhPA==", + "Microsoft.Extensions.DependencyInjection/5.0.0-preview.1.20120.4": { + "sha512": "CEmbKkrUhfIIDV9m2dhPrKfPqW+WmB3aAEZhWLqcVkX0On7f2R0FTWCSvWqgZkrY0g5+xaGdXw6CofIWmIyXng==", "type": "package", - "path": "microsoft.extensions.configuration.commandline/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.CommandLine.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.CommandLine.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.xml", - "microsoft.extensions.configuration.commandline.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.commandline.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Configuration.EnvironmentVariables/3.1.0": { - "sha512": "WryksPlAFFRMWIGpFwDDbrVSD/kSO7P7fRRzBHh6vEIrgflsM8tpPCcgIvKszH4fz4vcuapih9RMdiiJ2VS7aw==", - "type": "package", - "path": "microsoft.extensions.configuration.environmentvariables/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", - "microsoft.extensions.configuration.environmentvariables.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.environmentvariables.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Configuration.FileExtensions/3.1.0": { - "sha512": "OjRJIkVxUFiVkr9a39AqVThft9QHoef4But5pDCydJOXJ4D/SkmzuW1tm6J2IXynxj6qfeAz9QTnzQAvOcGvzg==", - "type": "package", - "path": "microsoft.extensions.configuration.fileextensions/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.FileExtensions.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.FileExtensions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", - "microsoft.extensions.configuration.fileextensions.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.fileextensions.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Configuration.Json/3.1.0": { - "sha512": "gBpBE1GoaCf1PKYC7u0Bd4mVZ/eR2bnOvn7u8GBXEy3JGar6sC3UVpVfTB9w+biLPtzcukZynBG9uchSBbLTNQ==", - "type": "package", - "path": "microsoft.extensions.configuration.json/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Json.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.Json.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.xml", - "microsoft.extensions.configuration.json.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.json.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Configuration.UserSecrets/3.1.0": { - "sha512": "ZS71TEcxggal3Koh2qHo6s7aNLhwpW2veNCKaxB6nPJabdZBU/sExhszd6JjuCeYMFxDHL1ygJ/N+ghKSrFNDQ==", - "type": "package", - "path": "microsoft.extensions.configuration.usersecrets/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.props", - "build/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.UserSecrets.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Configuration.UserSecrets.xml", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.dll", - "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.xml", - "microsoft.extensions.configuration.usersecrets.3.1.0.nupkg.sha512", - "microsoft.extensions.configuration.usersecrets.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.DependencyInjection/3.1.0": { - "sha512": "KVkv3aF2MQpmGFRh4xRx2CNbc2sjDFk+lH4ySrjWSOS+XoY1Xc+sJphw3N0iYOpoeCCq8976ceVYDH8sdx2qIQ==", - "type": "package", - "path": "microsoft.extensions.dependencyinjection/3.1.0", + "path": "microsoft.extensions.dependencyinjection/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", + "Icon.png", "lib/net461/Microsoft.Extensions.DependencyInjection.dll", "lib/net461/Microsoft.Extensions.DependencyInjection.xml", - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.DependencyInjection.xml", + "lib/netcoreapp5.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.DependencyInjection.xml", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", - "microsoft.extensions.dependencyinjection.3.1.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.nuspec", - "packageIcon.png" + "microsoft.extensions.dependencyinjection.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec" ] }, - "Microsoft.Extensions.DependencyInjection.Abstractions/3.1.0": { - "sha512": "44rDtOf1JXXAFpNT2EXMExaDm/4OJ2RXOL9i9lE4bK427nzC7Exphv+beB6IgluyE2GIoo8zezTStMXI7MQ8WA==", + "Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0-preview.1.20120.4": { + "sha512": "nR8JGs9F4uKUJHA3rXZYVpU4kzQ7G38h3rYq7KgPr3vEWGuCFBL88ZMQMRNRXnBi5kogs9ZQtXZ6D8lo+ccv7A==", "type": "package", - "path": "microsoft.extensions.dependencyinjection.abstractions/3.1.0", + "path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", + "Icon.png", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", - "microsoft.extensions.dependencyinjection.abstractions.3.1.0.nupkg.sha512", - "microsoft.extensions.dependencyinjection.abstractions.nuspec", - "packageIcon.png" + "microsoft.extensions.dependencyinjection.abstractions.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec" ] }, - "Microsoft.Extensions.FileProviders.Abstractions/3.1.0": { - "sha512": "G3iBMOnn3tETEUvkE9J3a23wQpRkiXZp73zR0XNlicjLFhkeWW1FCaC2bTjrgHhPi2KO6x0BXnHvVuJPIlygBQ==", + "Microsoft.Extensions.Logging/5.0.0-preview.1.20120.4": { + "sha512": "v/+7h5o7u980DKyx8sVP618InuzV5nsZa14NiN22sFs3J0WsuJUlBNi/2q3BymPGUKhW5a51J5Bqa/CWHJ0TYQ==", "type": "package", - "path": "microsoft.extensions.fileproviders.abstractions/3.1.0", + "path": "microsoft.extensions.logging/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", - "microsoft.extensions.fileproviders.abstractions.3.1.0.nupkg.sha512", - "microsoft.extensions.fileproviders.abstractions.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.FileProviders.Physical/3.1.0": { - "sha512": "KsvgrYp2fhNXoD9gqSu8jPK9Sbvaa7SqNtsLqHugJkCwFmgRvdz76z6Jz2tlFlC7wyMTZxwwtRF8WAorRQWTEA==", - "type": "package", - "path": "microsoft.extensions.fileproviders.physical/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Physical.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.FileProviders.Physical.xml", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", - "microsoft.extensions.fileproviders.physical.3.1.0.nupkg.sha512", - "microsoft.extensions.fileproviders.physical.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.FileSystemGlobbing/3.1.0": { - "sha512": "tK5HZOmVv0kUYkonMjuSsxR0CBk+Rd/69QU3eOMv9FvODGZ2d0SR+7R+n8XIgBcCCoCHJBSsI4GPRaoN3Le4rA==", - "type": "package", - "path": "microsoft.extensions.filesystemglobbing/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", - "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", - "microsoft.extensions.filesystemglobbing.3.1.0.nupkg.sha512", - "microsoft.extensions.filesystemglobbing.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Hosting/3.1.0": { - "sha512": "oM5Zd2eI8tbY+5hR/ZusdS/mcYb25XVLMEohl6rZv8NcfeSEqlZG5YVo81DQGnWhB1OB2nHMVgXj6RN3tEqAqQ==", - "type": "package", - "path": "microsoft.extensions.hosting/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.xml", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.dll", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.xml", - "lib/netstandard2.1/Microsoft.Extensions.Hosting.dll", - "lib/netstandard2.1/Microsoft.Extensions.Hosting.xml", - "microsoft.extensions.hosting.3.1.0.nupkg.sha512", - "microsoft.extensions.hosting.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Hosting.Abstractions/3.1.0": { - "sha512": "LiOP1ceFaPBxaE28SOjtORzOVCJk33TT5VQ/Cg5EoatZh1dxpPAgAV/0ruzWKQE7WAHU3F1H9Z6rFgsQwIb9uQ==", - "type": "package", - "path": "microsoft.extensions.hosting.abstractions/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Hosting.Abstractions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", - "microsoft.extensions.hosting.abstractions.3.1.0.nupkg.sha512", - "microsoft.extensions.hosting.abstractions.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Logging/3.1.0": { - "sha512": "P+8sKQ8L4ooL79sxxqwFPxGGC3aBrUDLB/dZqhs4J0XjTyrkeeyJQ4D4nzJB6OnAhy78HIIgQ/RbD6upOXLynw==", - "type": "package", - "path": "microsoft.extensions.logging/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.xml", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Logging.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Logging.xml", "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", - "microsoft.extensions.logging.3.1.0.nupkg.sha512", - "microsoft.extensions.logging.nuspec", - "packageIcon.png" + "microsoft.extensions.logging.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.logging.nuspec" ] }, - "Microsoft.Extensions.Logging.Abstractions/3.1.0": { - "sha512": "jjo4YXRx6MIpv6DiRxJjSpl+sPP0+5VW0clMEdLyIAz44PPwrDTFrd5PZckIxIXl1kKZ2KK6IL2nkt0+ug2MQg==", + "Microsoft.Extensions.Logging.Abstractions/5.0.0-preview.1.20120.4": { + "sha512": "ChPPvivkV7B0nKuTKmhjA7R+4BfOPp8a/J3BzbHpSJRkCX6If9CGenP/5liLN9KuzTE+yCdK8H3n/JgLvpYS1w==", "type": "package", - "path": "microsoft.extensions.logging.abstractions/3.1.0", + "path": "microsoft.extensions.logging.abstractions/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", + "Icon.png", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", - "microsoft.extensions.logging.abstractions.3.1.0.nupkg.sha512", - "microsoft.extensions.logging.abstractions.nuspec", - "packageIcon.png" + "microsoft.extensions.logging.abstractions.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec" ] }, - "Microsoft.Extensions.Logging.Configuration/3.1.0": { - "sha512": "yW3nIoNM3T5iZg8bRViiCN4+vIU/02l+mlWSvKqWnr0Fd5Uk1zKdT9jBWKEcJhRIWKVWWSpFWXnM5yWoIAy1Eg==", + "Microsoft.Extensions.Options/5.0.0-preview.1.20120.4": { + "sha512": "xL0TKJZ9DTWSZWyhtux5gjxrXkBOlLr0Ga0MaprkBJFe4HBGNBz1qR5uiCqOQvmTCTeuajDCh51YHyLgby44lQ==", "type": "package", - "path": "microsoft.extensions.logging.configuration/3.1.0", + "path": "microsoft.extensions.options/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Configuration.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Configuration.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml", - "microsoft.extensions.logging.configuration.3.1.0.nupkg.sha512", - "microsoft.extensions.logging.configuration.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Logging.Console/3.1.0": { - "sha512": "lkqVlnQqfqr8nmrpy7EnISXy192NEaIb0Xh4zaO8XS/QMiC3RqOAxxeq89JPSmjw+YfecwcikV8UB+NacdgRDg==", - "type": "package", - "path": "microsoft.extensions.logging.console/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Console.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Console.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.xml", - "microsoft.extensions.logging.console.3.1.0.nupkg.sha512", - "microsoft.extensions.logging.console.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Logging.Debug/3.1.0": { - "sha512": "pTuUb46wKuZD2nuvzmlHQfbm9sUAiOg1x1pe1fzxDHaocXaZQDjKGYYZifnTLeJk35OSi8ouEIcbuKLVF16yfg==", - "type": "package", - "path": "microsoft.extensions.logging.debug/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Debug.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.Debug.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.xml", - "microsoft.extensions.logging.debug.3.1.0.nupkg.sha512", - "microsoft.extensions.logging.debug.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Logging.EventLog/3.1.0": { - "sha512": "9m5orA0YkzN6DGZIMqMi0SYel2LPhQitaUSMhA9Rocu6k6ZTYJvhqaRYACC4uhpymPyOf0fQaAGK13sqPWi9MA==", - "type": "package", - "path": "microsoft.extensions.logging.eventlog/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net461/Microsoft.Extensions.Logging.EventLog.dll", - "lib/net461/Microsoft.Extensions.Logging.EventLog.xml", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventLog.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventLog.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.xml", - "microsoft.extensions.logging.eventlog.3.1.0.nupkg.sha512", - "microsoft.extensions.logging.eventlog.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Logging.EventSource/3.1.0": { - "sha512": "HT5UXDPIQFBZob4rF/jwErm/tawmThqhyDdlxLv+VFEAdsgq7/XwMqWLlF59aPvK+ypI0sneV2GUlB4KfWPuSA==", - "type": "package", - "path": "microsoft.extensions.logging.eventsource/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventSource.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Logging.EventSource.xml", - "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.dll", - "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.xml", - "microsoft.extensions.logging.eventsource.3.1.0.nupkg.sha512", - "microsoft.extensions.logging.eventsource.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Options/3.1.0": { - "sha512": "9b6JHY7TAXrSfZ6EEGf+j8XnqKIiMPErfmaNXhJYSCb+BUW2H4RtzkNJvwLJzwgzqBP0wtTjyA6Uw4BPPdmkMw==", - "type": "package", - "path": "microsoft.extensions.options/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Options.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Options.xml", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Options.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Options.xml", "lib/netstandard2.0/Microsoft.Extensions.Options.dll", "lib/netstandard2.0/Microsoft.Extensions.Options.xml", - "microsoft.extensions.options.3.1.0.nupkg.sha512", - "microsoft.extensions.options.nuspec", - "packageIcon.png" + "microsoft.extensions.options.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.options.nuspec" ] }, - "Microsoft.Extensions.Options.ConfigurationExtensions/3.1.0": { - "sha512": "tx6gMKE3rDspA1YZT8SlQJmyt1BaBSl6mNjB3g0ZO6m3NnoavCifXkGeBuDk9Ae4XjW8C+dty52p+0u38jPRIQ==", + "Microsoft.Extensions.Primitives/5.0.0-preview.1.20120.4": { + "sha512": "TXN/iw+ZLtReje7mljcf7wUr3iiOx5ffCEYLu2T7st8N5hclsswbhFovw4pIUjrpj+NIdUhr6SCvTSGFhZvewA==", "type": "package", - "path": "microsoft.extensions.options.configurationextensions/3.1.0", + "path": "microsoft.extensions.primitives/5.0.0-preview.1.20120.4", "files": [ ".nupkg.metadata", ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Options.ConfigurationExtensions.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Options.ConfigurationExtensions.xml", - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", - "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", - "microsoft.extensions.options.configurationextensions.3.1.0.nupkg.sha512", - "microsoft.extensions.options.configurationextensions.nuspec", - "packageIcon.png" - ] - }, - "Microsoft.Extensions.Primitives/3.1.0": { - "sha512": "LEKAnX7lhUhSoIc2XraCTK3M4IU/LdVUzCe464Sa4+7F4ZJuXHHRzZli2mDbiT4xzAZhgqXbvfnb5+CNDcQFfg==", - "type": "package", - "path": "microsoft.extensions.primitives/3.1.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll", - "lib/netcoreapp3.1/Microsoft.Extensions.Primitives.xml", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Primitives.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Primitives.xml", "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", - "microsoft.extensions.primitives.3.1.0.nupkg.sha512", - "microsoft.extensions.primitives.nuspec", - "packageIcon.png" + "microsoft.extensions.primitives.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.primitives.nuspec" ] }, - "Microsoft.NETCore.Platforms/3.1.0": { - "sha512": "z7aeg8oHln2CuNulfhiLYxCVMPEwBl3rzicjvIX+4sUuCwvXw5oXQEtbiU2c0z4qYL5L3Kmx0mMA/+t/SbY67w==", + "Microsoft.NETCore.Platforms/1.1.1": { + "sha512": "TMBuzAHpTenGbGgk0SMTwyEkyijY/Eae4ZGsFNYJvAr/LDn1ku3Etp3FPxChmDp5HHF3kzJuoaa08N0xjqAJfQ==", "type": "package", - "path": "microsoft.netcore.platforms/3.1.0", + "path": "microsoft.netcore.platforms/1.1.1", "files": [ ".nupkg.metadata", ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/_._", - "microsoft.netcore.platforms.3.1.0.nupkg.sha512", - "microsoft.netcore.platforms.nuspec", - "runtime.json", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "Microsoft.NETCore.Targets/1.1.0": { - "sha512": "aOZA3BWfz9RXjpzt0sRJJMjAscAUm3Hoa4UWAfceV9UTYxgwZ1lZt5nO2myFf+/jetYQo4uTP7zS8sJY67BBxg==", - "type": "package", - "path": "microsoft.netcore.targets/1.1.0", - "files": [ - ".nupkg.metadata", "ThirdPartyNotices.txt", "dotnet_library_license.txt", "lib/netstandard1.0/_._", - "microsoft.netcore.targets.1.1.0.nupkg.sha512", - "microsoft.netcore.targets.nuspec", + "microsoft.netcore.platforms.1.1.1.nupkg.sha512", + "microsoft.netcore.platforms.nuspec", "runtime.json" ] }, - "Microsoft.Win32.Primitives/4.3.0": { - "sha512": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==", + "Microsoft.NETCore.Targets/1.1.3": { + "sha512": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==", "type": "package", - "path": "microsoft.win32.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/Microsoft.Win32.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "microsoft.win32.primitives.4.3.0.nupkg.sha512", - "microsoft.win32.primitives.nuspec", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.dll", - "ref/netstandard1.3/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Primitives.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Primitives.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._" - ] - }, - "Microsoft.Win32.Registry/4.7.0": { - "sha512": "KSrRMb5vNi0CWSGG1++id2ZOs/1QhRqROt+qgbEAdQuGjGrFcl4AOl4/exGPUYz2wUnU42nvJqon1T3U0kPXLA==", - "type": "package", - "path": "microsoft.win32.registry/4.7.0", + "path": "microsoft.netcore.targets/1.1.3", "files": [ ".nupkg.metadata", ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/Microsoft.Win32.Registry.dll", - "lib/net461/Microsoft.Win32.Registry.dll", - "lib/net461/Microsoft.Win32.Registry.xml", - "lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "lib/netstandard2.0/Microsoft.Win32.Registry.dll", - "lib/netstandard2.0/Microsoft.Win32.Registry.xml", - "microsoft.win32.registry.4.7.0.nupkg.sha512", - "microsoft.win32.registry.nuspec", - "ref/net46/Microsoft.Win32.Registry.dll", - "ref/net461/Microsoft.Win32.Registry.dll", - "ref/net461/Microsoft.Win32.Registry.xml", - "ref/net472/Microsoft.Win32.Registry.dll", - "ref/net472/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/Microsoft.Win32.Registry.dll", - "ref/netstandard1.3/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/de/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/es/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/fr/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/it/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ja/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ko/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/ru/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hans/Microsoft.Win32.Registry.xml", - "ref/netstandard1.3/zh-hant/Microsoft.Win32.Registry.xml", - "ref/netstandard2.0/Microsoft.Win32.Registry.dll", - "ref/netstandard2.0/Microsoft.Win32.Registry.xml", - "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.dll", - "runtimes/unix/lib/netstandard2.0/Microsoft.Win32.Registry.xml", - "runtimes/win/lib/net46/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net461/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/net461/Microsoft.Win32.Registry.xml", - "runtimes/win/lib/netstandard1.3/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.dll", - "runtimes/win/lib/netstandard2.0/Microsoft.Win32.Registry.xml", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "NETStandard.Library/1.6.1": { - "sha512": "WcSp3+vP+yHNgS8EV5J7pZ9IRpeDuARBPN28by8zqff1wJQXm26PVU8L3/fYLBJVU7BtDyqNVWq2KlCVvSSR4A==", - "type": "package", - "path": "netstandard.library/1.6.1", - "files": [ - ".nupkg.metadata", "ThirdPartyNotices.txt", "dotnet_library_license.txt", - "netstandard.library.1.6.1.nupkg.sha512", - "netstandard.library.nuspec" + "lib/netstandard1.0/_._", + "microsoft.netcore.targets.1.1.3.nupkg.sha512", + "microsoft.netcore.targets.nuspec", + "runtime.json" ] }, "Newtonsoft.Json/10.0.3": { @@ -2824,10 +1339,10 @@ "tools/install.ps1" ] }, - "Remotion.Linq/2.1.1": { - "sha512": "IJn0BqkvwEDpP+2qjvci7n4/a9f7DhKESLWb2/uG4xQh3rTkGTBUz69bI4IivCoKkTFAqjXxYDZw2K/npohjsw==", + "Remotion.Linq/2.2.0": { + "sha512": "fK/76UmpC0FXBlGDFVPLJHQlDLYnGC+XY3eoDgCgbtrhi0vzbXDQ3n/IYHhqSKqXQfGw/u04A1drWs7rFVkRjw==", "type": "package", - "path": "remotion.linq/2.1.1", + "path": "remotion.linq/2.2.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -2841,340 +1356,10 @@ "lib/netstandard1.0/Remotion.Linq.xml", "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.dll", "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.xml", - "remotion.linq.2.1.1.nupkg.sha512", + "remotion.linq.2.2.0.nupkg.sha512", "remotion.linq.nuspec" ] }, - "RethinkDb.Driver/2.3.150": { - "sha512": "T10sFVMqof9NQBsSdRheR9uXI7yCVV/7gScbEB8k/MZ9B8BCjCfKjtkcMSWE07WynNAiPYCfXv1t9q09Q7U3ng==", - "type": "package", - "path": "rethinkdb.driver/2.3.150", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/RethinkDb.Driver.dll", - "lib/net45/RethinkDb.Driver.pdb", - "lib/net45/RethinkDb.Driver.xml", - "lib/netstandard2.0/RethinkDb.Driver.dll", - "lib/netstandard2.0/RethinkDb.Driver.pdb", - "lib/netstandard2.0/RethinkDb.Driver.xml", - "rethinkdb.driver.2.3.150.nupkg.sha512", - "rethinkdb.driver.nuspec" - ] - }, - "RethinkDb.Driver.Linq/2.3.150": { - "sha512": "FYiYDKSRE0Nesiohb+pOvqJIOhr4sLYlI9Ua5dlOn21r2Pwp2nA6fcKZ2krVJbVLSBxN2BDf0YFucudrTr0GPw==", - "type": "package", - "path": "rethinkdb.driver.linq/2.3.150", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/net45/RethinkDb.Driver.Linq.dll", - "lib/net45/RethinkDb.Driver.Linq.pdb", - "lib/net45/RethinkDb.Driver.Linq.xml", - "lib/netstandard2.0/RethinkDb.Driver.Linq.dll", - "lib/netstandard2.0/RethinkDb.Driver.Linq.pdb", - "lib/netstandard2.0/RethinkDb.Driver.Linq.xml", - "rethinkdb.driver.linq.2.3.150.nupkg.sha512", - "rethinkdb.driver.linq.nuspec" - ] - }, - "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "HdSSp5MnJSsg08KMfZThpuLPJpPwE5hBXvHwoKWosyHHfe8Mh5WKT0ylEOf6yNzX6Ngjxe4Whkafh5q7Ymac4Q==", - "type": "package", - "path": "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.debian.8-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/debian.8-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "+yH1a49wJMy8Zt4yx5RhJrxO/DBDByAiCzNwiETI+1S4mPdCu0OY4djdciC7Vssk0l22wQaDLrXxXkp+3+7bVA==", - "type": "package", - "path": "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.fedora.23-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/fedora.23-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "c3YNH1GQJbfIPJeCnr4avseugSqPrxwIqzthYyZDN6EuOyNOzq+y2KSUfRcXauya1sF4foESTgwM5e1A8arAKw==", - "type": "package", - "path": "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.fedora.24-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/fedora.24-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.native.System/4.3.0": { - "sha512": "c/qWt2LieNZIj1jGnVNsE2Kl23Ya2aSTBuXMD6V7k9KWr6l16Tqdwq+hJScEpWER9753NWC8h96PaVNY5Ld7Jw==", - "type": "package", - "path": "runtime.native.system/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.4.3.0.nupkg.sha512", - "runtime.native.system.nuspec" - ] - }, - "runtime.native.System.IO.Compression/4.3.0": { - "sha512": "INBPonS5QPEgn7naufQFXJEp3zX6L4bwHgJ/ZH78aBTpeNfQMtf7C6VrAFhlq2xxWBveIOWyFzQjJ8XzHMhdOQ==", - "type": "package", - "path": "runtime.native.system.io.compression/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.io.compression.4.3.0.nupkg.sha512", - "runtime.native.system.io.compression.nuspec" - ] - }, - "runtime.native.System.Net.Http/4.3.0": { - "sha512": "ZVuZJqnnegJhd2k/PtAbbIcZ3aZeITq3sj06oKfMBSfphW3HDmk/t4ObvbOk/JA/swGR0LNqMksAh/f7gpTROg==", - "type": "package", - "path": "runtime.native.system.net.http/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.net.http.4.3.0.nupkg.sha512", - "runtime.native.system.net.http.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "sha512": "DloMk88juo0OuOWr56QG7MNchmafTLYWvABy36izkrLI5VledI0rq28KGs1i9wbpeT9NPQrx/wTf8U2vazqQ3Q==", - "type": "package", - "path": "runtime.native.system.security.cryptography.apple/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "runtime.native.system.security.cryptography.apple.nuspec" - ] - }, - "runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "NS1U+700m4KFRHR5o4vo9DSlTmlCKu/u7dtE5sUHVIPB+xpXxYQvgBgA6wEIeCz6Yfn0Z52/72WYsToCEPJnrw==", - "type": "package", - "path": "runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.0/_._", - "runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.native.system.security.cryptography.openssl.nuspec" - ] - }, - "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "b3pthNgxxFcD+Pc0WSEoC0+md3MyhRS6aCEeenvNE3Fdw1HyJ18ZhRFVJJzIeR/O/jpxPboB805Ho0T3Ul7w8A==", - "type": "package", - "path": "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.opensuse.13.2-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/opensuse.13.2-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "KeLz4HClKf+nFS7p/6Fi/CqyLXh81FpiGzcmuS8DGi9lUqSnZ6Es23/gv2O+1XVGfrbNmviF7CckBpavkBoIFQ==", - "type": "package", - "path": "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.opensuse.42.1-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/opensuse.42.1-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple/4.3.0": { - "sha512": "kVXCuMTrTlxq4XOOMAysuNwsXWpYeboGddNGpIgNSZmv1b6r/s/DPk0fYMB7Q5Qo4bY68o48jt4T4y5BVecbCQ==", - "type": "package", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.4.3.0.nupkg.sha512", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.apple.nuspec", - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.Apple.dylib" - ] - }, - "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "X7IdhILzr4ROXd8mI1BUCQMSHSQwelUlBjF1JyTKCjXaOGn2fB4EKBxQbCK2VjO3WaWIdlXZL3W6TiIVnrhX4g==", - "type": "package", - "path": "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.osx.10.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/osx.10.10-x64/native/System.Security.Cryptography.Native.OpenSsl.dylib" - ] - }, - "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "nyFNiCk/r+VOiIqreLix8yN+q3Wga9+SE8BCgkf+2BwEKiNx6DyvFjCgkfV743/grxv8jHJ8gUK4XEQw7yzRYg==", - "type": "package", - "path": "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.rhel.7-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/rhel.7-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "ytoewC6wGorL7KoCAvRfsgoJPJbNq+64k2SqW6JcOAebWsFUvCCYgfzQMrnpvPiEl4OrblUlhF2ji+Q1+SVLrQ==", - "type": "package", - "path": "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.14.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.14.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "I8bKw2I8k58Wx7fMKQJn2R8lamboCAiHfHeV/pS65ScKWMMI0+wJkLYlEKvgW1D/XvSl/221clBoR2q9QNNM7A==", - "type": "package", - "path": "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.16.04-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.16.04-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "VB5cn/7OzUfzdnC8tqAIMQciVLiq2epm2NrAm1E9OjNRyG4lVhfR61SMcLizejzQP8R8Uf/0l5qOIbUEi+RdEg==", - "type": "package", - "path": "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "runtime.ubuntu.16.10-x64.runtime.native.system.security.cryptography.openssl.nuspec", - "runtimes/ubuntu.16.10-x64/native/System.Security.Cryptography.Native.OpenSsl.so" - ] - }, - "System.AppContext/4.3.0": { - "sha512": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==", - "type": "package", - "path": "system.appcontext/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.AppContext.dll", - "lib/net463/System.AppContext.dll", - "lib/netcore50/System.AppContext.dll", - "lib/netstandard1.6/System.AppContext.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.AppContext.dll", - "ref/net463/System.AppContext.dll", - "ref/netstandard/_._", - "ref/netstandard1.3/System.AppContext.dll", - "ref/netstandard1.3/System.AppContext.xml", - "ref/netstandard1.3/de/System.AppContext.xml", - "ref/netstandard1.3/es/System.AppContext.xml", - "ref/netstandard1.3/fr/System.AppContext.xml", - "ref/netstandard1.3/it/System.AppContext.xml", - "ref/netstandard1.3/ja/System.AppContext.xml", - "ref/netstandard1.3/ko/System.AppContext.xml", - "ref/netstandard1.3/ru/System.AppContext.xml", - "ref/netstandard1.3/zh-hans/System.AppContext.xml", - "ref/netstandard1.3/zh-hant/System.AppContext.xml", - "ref/netstandard1.6/System.AppContext.dll", - "ref/netstandard1.6/System.AppContext.xml", - "ref/netstandard1.6/de/System.AppContext.xml", - "ref/netstandard1.6/es/System.AppContext.xml", - "ref/netstandard1.6/fr/System.AppContext.xml", - "ref/netstandard1.6/it/System.AppContext.xml", - "ref/netstandard1.6/ja/System.AppContext.xml", - "ref/netstandard1.6/ko/System.AppContext.xml", - "ref/netstandard1.6/ru/System.AppContext.xml", - "ref/netstandard1.6/zh-hans/System.AppContext.xml", - "ref/netstandard1.6/zh-hant/System.AppContext.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.AppContext.dll", - "system.appcontext.4.3.0.nupkg.sha512", - "system.appcontext.nuspec" - ] - }, - "System.Buffers/4.5.0": { - "sha512": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A==", - "type": "package", - "path": "system.buffers/4.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netcoreapp2.0/_._", - "lib/netstandard1.1/System.Buffers.dll", - "lib/netstandard1.1/System.Buffers.xml", - "lib/netstandard2.0/System.Buffers.dll", - "lib/netstandard2.0/System.Buffers.xml", - "lib/uap10.0.16299/_._", - "ref/net45/System.Buffers.dll", - "ref/net45/System.Buffers.xml", - "ref/netcoreapp2.0/_._", - "ref/netstandard1.1/System.Buffers.dll", - "ref/netstandard1.1/System.Buffers.xml", - "ref/netstandard2.0/System.Buffers.dll", - "ref/netstandard2.0/System.Buffers.xml", - "ref/uap10.0.16299/_._", - "system.buffers.4.5.0.nupkg.sha512", - "system.buffers.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, "System.Collections/4.3.0": { "sha512": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==", "type": "package", @@ -3242,96 +1427,6 @@ "system.collections.nuspec" ] }, - "System.Collections.Concurrent/4.3.0": { - "sha512": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==", - "type": "package", - "path": "system.collections.concurrent/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Collections.Concurrent.dll", - "lib/netstandard1.3/System.Collections.Concurrent.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Collections.Concurrent.dll", - "ref/netcore50/System.Collections.Concurrent.xml", - "ref/netcore50/de/System.Collections.Concurrent.xml", - "ref/netcore50/es/System.Collections.Concurrent.xml", - "ref/netcore50/fr/System.Collections.Concurrent.xml", - "ref/netcore50/it/System.Collections.Concurrent.xml", - "ref/netcore50/ja/System.Collections.Concurrent.xml", - "ref/netcore50/ko/System.Collections.Concurrent.xml", - "ref/netcore50/ru/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hans/System.Collections.Concurrent.xml", - "ref/netcore50/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.1/System.Collections.Concurrent.dll", - "ref/netstandard1.1/System.Collections.Concurrent.xml", - "ref/netstandard1.1/de/System.Collections.Concurrent.xml", - "ref/netstandard1.1/es/System.Collections.Concurrent.xml", - "ref/netstandard1.1/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.1/it/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.1/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.1/zh-hant/System.Collections.Concurrent.xml", - "ref/netstandard1.3/System.Collections.Concurrent.dll", - "ref/netstandard1.3/System.Collections.Concurrent.xml", - "ref/netstandard1.3/de/System.Collections.Concurrent.xml", - "ref/netstandard1.3/es/System.Collections.Concurrent.xml", - "ref/netstandard1.3/fr/System.Collections.Concurrent.xml", - "ref/netstandard1.3/it/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ja/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ko/System.Collections.Concurrent.xml", - "ref/netstandard1.3/ru/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hans/System.Collections.Concurrent.xml", - "ref/netstandard1.3/zh-hant/System.Collections.Concurrent.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.collections.concurrent.4.3.0.nupkg.sha512", - "system.collections.concurrent.nuspec" - ] - }, - "System.Collections.Immutable/1.5.0": { - "sha512": "EXKiDFsChZW0RjrZ4FYHu9aW6+P4MCgEDCklsVseRfhoO0F+dXeMSsMRAlVXIo06kGJ/zv+2w1a2uc2+kxxSaQ==", - "type": "package", - "path": "system.collections.immutable/1.5.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/netstandard1.0/System.Collections.Immutable.dll", - "lib/netstandard1.0/System.Collections.Immutable.xml", - "lib/netstandard1.3/System.Collections.Immutable.dll", - "lib/netstandard1.3/System.Collections.Immutable.xml", - "lib/netstandard2.0/System.Collections.Immutable.dll", - "lib/netstandard2.0/System.Collections.Immutable.xml", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.dll", - "lib/portable-net45+win8+wp8+wpa81/System.Collections.Immutable.xml", - "system.collections.immutable.1.5.0.nupkg.sha512", - "system.collections.immutable.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, "System.Collections.NonGeneric/4.3.0": { "sha512": "prtjIEMhGUnQq6RnPEYLpFt8AtLbp9yq2zxOSrY7KJJZrw25Fi97IzBqY7iqssbM61Ek5b8f3MG/sG1N2sN5KA==", "type": "package", @@ -3466,6 +1561,96 @@ "system.componentmodel.nuspec" ] }, + "System.ComponentModel.Annotations/5.0.0-preview.1.20120.5": { + "sha512": "GeaNNeis4umcr8dJH3nyeQH/lq7KsdOJjSegDaurBRJukOpW8fj1vervj1zix9ZJNT6UzphgpeDjS0BLA1OLqg==", + "type": "package", + "path": "system.componentmodel.annotations/5.0.0-preview.1.20120.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/netstandard2.0/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.xml", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/net461/System.ComponentModel.Annotations.xml", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard2.0/System.ComponentModel.Annotations.dll", + "ref/netstandard2.0/System.ComponentModel.Annotations.xml", + "ref/netstandard2.1/System.ComponentModel.Annotations.dll", + "ref/netstandard2.1/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.annotations.5.0.0-preview.1.20120.5.nupkg.sha512", + "system.componentmodel.annotations.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "System.ComponentModel.Primitives/4.3.0": { "sha512": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", "type": "package", @@ -3556,43 +1741,6 @@ "system.componentmodel.typeconverter.nuspec" ] }, - "System.Console/4.3.0": { - "sha512": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==", - "type": "package", - "path": "system.console/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Console.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Console.dll", - "ref/netstandard1.3/System.Console.dll", - "ref/netstandard1.3/System.Console.xml", - "ref/netstandard1.3/de/System.Console.xml", - "ref/netstandard1.3/es/System.Console.xml", - "ref/netstandard1.3/fr/System.Console.xml", - "ref/netstandard1.3/it/System.Console.xml", - "ref/netstandard1.3/ja/System.Console.xml", - "ref/netstandard1.3/ko/System.Console.xml", - "ref/netstandard1.3/ru/System.Console.xml", - "ref/netstandard1.3/zh-hans/System.Console.xml", - "ref/netstandard1.3/zh-hant/System.Console.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.console.4.3.0.nupkg.sha512", - "system.console.nuspec" - ] - }, "System.Diagnostics.Debug/4.3.0": { "sha512": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==", "type": "package", @@ -3660,198 +1808,6 @@ "system.diagnostics.debug.nuspec" ] }, - "System.Diagnostics.DiagnosticSource/4.3.0": { - "sha512": "tD6kosZnTAGdrEa0tZSuFyunMbt/5KYDnHdndJYGqZoNy00XVXyACd5d6KnE1YgYv3ne2CjtAfNXo/fwEhnKUA==", - "type": "package", - "path": "system.diagnostics.diagnosticsource/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Diagnostics.DiagnosticSource.dll", - "lib/net46/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.1/System.Diagnostics.DiagnosticSource.xml", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.dll", - "lib/netstandard1.3/System.Diagnostics.DiagnosticSource.xml", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.dll", - "lib/portable-net45+win8+wpa81/System.Diagnostics.DiagnosticSource.xml", - "system.diagnostics.diagnosticsource.4.3.0.nupkg.sha512", - "system.diagnostics.diagnosticsource.nuspec" - ] - }, - "System.Diagnostics.EventLog/4.7.0": { - "sha512": "iDoKGQcRwX0qwY+eAEkaJGae0d/lHlxtslO+t8pJWAUxlvY3tqLtVOPnW2UU4cFjP0Y/L1QBqhkZfSyGqVMR2w==", - "type": "package", - "path": "system.diagnostics.eventlog/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net461/System.Diagnostics.EventLog.dll", - "lib/net461/System.Diagnostics.EventLog.xml", - "lib/netstandard2.0/System.Diagnostics.EventLog.dll", - "lib/netstandard2.0/System.Diagnostics.EventLog.xml", - "ref/net461/System.Diagnostics.EventLog.dll", - "ref/net461/System.Diagnostics.EventLog.xml", - "ref/net472/System.Diagnostics.EventLog.dll", - "ref/net472/System.Diagnostics.EventLog.xml", - "ref/netstandard2.0/System.Diagnostics.EventLog.dll", - "ref/netstandard2.0/System.Diagnostics.EventLog.xml", - "runtimes/win/lib/netcoreapp2.0/System.Diagnostics.EventLog.dll", - "runtimes/win/lib/netcoreapp2.0/System.Diagnostics.EventLog.xml", - "system.diagnostics.eventlog.4.7.0.nupkg.sha512", - "system.diagnostics.eventlog.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Diagnostics.Tools/4.3.0": { - "sha512": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==", - "type": "package", - "path": "system.diagnostics.tools/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Diagnostics.Tools.dll", - "ref/netcore50/System.Diagnostics.Tools.xml", - "ref/netcore50/de/System.Diagnostics.Tools.xml", - "ref/netcore50/es/System.Diagnostics.Tools.xml", - "ref/netcore50/fr/System.Diagnostics.Tools.xml", - "ref/netcore50/it/System.Diagnostics.Tools.xml", - "ref/netcore50/ja/System.Diagnostics.Tools.xml", - "ref/netcore50/ko/System.Diagnostics.Tools.xml", - "ref/netcore50/ru/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tools.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/System.Diagnostics.Tools.dll", - "ref/netstandard1.0/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/de/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/es/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/fr/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/it/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ja/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ko/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/ru/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hans/System.Diagnostics.Tools.xml", - "ref/netstandard1.0/zh-hant/System.Diagnostics.Tools.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tools.4.3.0.nupkg.sha512", - "system.diagnostics.tools.nuspec" - ] - }, - "System.Diagnostics.Tracing/4.3.0": { - "sha512": "rswfv0f/Cqkh78rA5S8eN8Neocz234+emGCtTF3lxPY96F+mmmUen6tbn0glN6PMvlKQb9bPAY5e9u7fgPTkKw==", - "type": "package", - "path": "system.diagnostics.tracing/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net462/System.Diagnostics.Tracing.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net462/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.dll", - "ref/netcore50/System.Diagnostics.Tracing.xml", - "ref/netcore50/de/System.Diagnostics.Tracing.xml", - "ref/netcore50/es/System.Diagnostics.Tracing.xml", - "ref/netcore50/fr/System.Diagnostics.Tracing.xml", - "ref/netcore50/it/System.Diagnostics.Tracing.xml", - "ref/netcore50/ja/System.Diagnostics.Tracing.xml", - "ref/netcore50/ko/System.Diagnostics.Tracing.xml", - "ref/netcore50/ru/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netcore50/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/System.Diagnostics.Tracing.dll", - "ref/netstandard1.1/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.1/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/System.Diagnostics.Tracing.dll", - "ref/netstandard1.2/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.2/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/System.Diagnostics.Tracing.dll", - "ref/netstandard1.3/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.3/zh-hant/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/System.Diagnostics.Tracing.dll", - "ref/netstandard1.5/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/de/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/es/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/fr/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/it/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ja/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ko/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/ru/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hans/System.Diagnostics.Tracing.xml", - "ref/netstandard1.5/zh-hant/System.Diagnostics.Tracing.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.diagnostics.tracing.4.3.0.nupkg.sha512", - "system.diagnostics.tracing.nuspec" - ] - }, "System.Dynamic.Runtime/4.3.0": { "sha512": "SNVi1E/vfWUAs/WYKhE9+qlS6KqK0YVhnlT0HQtr8pMIA8YX3lwy3uPMownDwdYISBdmAF/2holEIldVp85Wag==", "type": "package", @@ -3989,43 +1945,6 @@ "system.globalization.nuspec" ] }, - "System.Globalization.Calendars/4.3.0": { - "sha512": "GUlBtdOWT4LTV3I+9/PJW+56AnnChTaOqqTLFtdmype/L500M2LIyXgmtd9X2P2VOkmJd5c67H5SaC2QcL1bFA==", - "type": "package", - "path": "system.globalization.calendars/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Globalization.Calendars.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.dll", - "ref/netstandard1.3/System.Globalization.Calendars.xml", - "ref/netstandard1.3/de/System.Globalization.Calendars.xml", - "ref/netstandard1.3/es/System.Globalization.Calendars.xml", - "ref/netstandard1.3/fr/System.Globalization.Calendars.xml", - "ref/netstandard1.3/it/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ja/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ko/System.Globalization.Calendars.xml", - "ref/netstandard1.3/ru/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hans/System.Globalization.Calendars.xml", - "ref/netstandard1.3/zh-hant/System.Globalization.Calendars.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.globalization.calendars.4.3.0.nupkg.sha512", - "system.globalization.calendars.nuspec" - ] - }, "System.Globalization.Extensions/4.3.0": { "sha512": "FhKmdR6MPG+pxow6wGtNAWdZh7noIOpdD5TwQ3CprzgIE1bBBoim0vbR1+AWsWjQmU7zXHgQo4TWSP6lCeiWcQ==", "type": "package", @@ -4146,114 +2065,6 @@ "system.io.nuspec" ] }, - "System.IO.Compression/4.3.0": { - "sha512": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==", - "type": "package", - "path": "system.io.compression/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/net46/System.IO.Compression.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/net46/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.dll", - "ref/netcore50/System.IO.Compression.xml", - "ref/netcore50/de/System.IO.Compression.xml", - "ref/netcore50/es/System.IO.Compression.xml", - "ref/netcore50/fr/System.IO.Compression.xml", - "ref/netcore50/it/System.IO.Compression.xml", - "ref/netcore50/ja/System.IO.Compression.xml", - "ref/netcore50/ko/System.IO.Compression.xml", - "ref/netcore50/ru/System.IO.Compression.xml", - "ref/netcore50/zh-hans/System.IO.Compression.xml", - "ref/netcore50/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.1/System.IO.Compression.dll", - "ref/netstandard1.1/System.IO.Compression.xml", - "ref/netstandard1.1/de/System.IO.Compression.xml", - "ref/netstandard1.1/es/System.IO.Compression.xml", - "ref/netstandard1.1/fr/System.IO.Compression.xml", - "ref/netstandard1.1/it/System.IO.Compression.xml", - "ref/netstandard1.1/ja/System.IO.Compression.xml", - "ref/netstandard1.1/ko/System.IO.Compression.xml", - "ref/netstandard1.1/ru/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.1/zh-hant/System.IO.Compression.xml", - "ref/netstandard1.3/System.IO.Compression.dll", - "ref/netstandard1.3/System.IO.Compression.xml", - "ref/netstandard1.3/de/System.IO.Compression.xml", - "ref/netstandard1.3/es/System.IO.Compression.xml", - "ref/netstandard1.3/fr/System.IO.Compression.xml", - "ref/netstandard1.3/it/System.IO.Compression.xml", - "ref/netstandard1.3/ja/System.IO.Compression.xml", - "ref/netstandard1.3/ko/System.IO.Compression.xml", - "ref/netstandard1.3/ru/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.IO.Compression.dll", - "runtimes/win/lib/net46/System.IO.Compression.dll", - "runtimes/win/lib/netstandard1.3/System.IO.Compression.dll", - "system.io.compression.4.3.0.nupkg.sha512", - "system.io.compression.nuspec" - ] - }, - "System.IO.Compression.ZipFile/4.3.0": { - "sha512": "G4HwjEsgIwy3JFBduZ9quBkAu+eUwjIdJleuNSgmUojbH6O3mlvEIme+GHx/cLlTAPcrnnL7GqvB9pTlWRfhOg==", - "type": "package", - "path": "system.io.compression.zipfile/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.IO.Compression.ZipFile.dll", - "lib/netstandard1.3/System.IO.Compression.ZipFile.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.dll", - "ref/netstandard1.3/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/de/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/es/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/fr/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/it/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ja/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ko/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/ru/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hans/System.IO.Compression.ZipFile.xml", - "ref/netstandard1.3/zh-hant/System.IO.Compression.ZipFile.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.io.compression.zipfile.4.3.0.nupkg.sha512", - "system.io.compression.zipfile.nuspec" - ] - }, "System.IO.FileSystem/4.3.0": { "sha512": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", "type": "package", @@ -4489,6 +2300,7 @@ "path": "system.linq.queryable/4.0.1", "files": [ ".nupkg.metadata", + ".signature.p7s", "ThirdPartyNotices.txt", "dotnet_library_license.txt", "lib/monoandroid10/_._", @@ -4562,203 +2374,6 @@ "version.txt" ] }, - "System.Net.Http/4.3.0": { - "sha512": "sYg+FtILtRQuYWSIAuNOELwVuVsxVyJGWQyOnlAzhV4xvhyFnON1bAzYYC+jjRW8JREM45R0R5Dgi8MTC5sEwA==", - "type": "package", - "path": "system.net.http/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/Xamarinmac20/_._", - "lib/monoandroid10/_._", - "lib/monotouch10/_._", - "lib/net45/_._", - "lib/net46/System.Net.Http.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/Xamarinmac20/_._", - "ref/monoandroid10/_._", - "ref/monotouch10/_._", - "ref/net45/_._", - "ref/net46/System.Net.Http.dll", - "ref/net46/System.Net.Http.xml", - "ref/net46/de/System.Net.Http.xml", - "ref/net46/es/System.Net.Http.xml", - "ref/net46/fr/System.Net.Http.xml", - "ref/net46/it/System.Net.Http.xml", - "ref/net46/ja/System.Net.Http.xml", - "ref/net46/ko/System.Net.Http.xml", - "ref/net46/ru/System.Net.Http.xml", - "ref/net46/zh-hans/System.Net.Http.xml", - "ref/net46/zh-hant/System.Net.Http.xml", - "ref/netcore50/System.Net.Http.dll", - "ref/netcore50/System.Net.Http.xml", - "ref/netcore50/de/System.Net.Http.xml", - "ref/netcore50/es/System.Net.Http.xml", - "ref/netcore50/fr/System.Net.Http.xml", - "ref/netcore50/it/System.Net.Http.xml", - "ref/netcore50/ja/System.Net.Http.xml", - "ref/netcore50/ko/System.Net.Http.xml", - "ref/netcore50/ru/System.Net.Http.xml", - "ref/netcore50/zh-hans/System.Net.Http.xml", - "ref/netcore50/zh-hant/System.Net.Http.xml", - "ref/netstandard1.1/System.Net.Http.dll", - "ref/netstandard1.1/System.Net.Http.xml", - "ref/netstandard1.1/de/System.Net.Http.xml", - "ref/netstandard1.1/es/System.Net.Http.xml", - "ref/netstandard1.1/fr/System.Net.Http.xml", - "ref/netstandard1.1/it/System.Net.Http.xml", - "ref/netstandard1.1/ja/System.Net.Http.xml", - "ref/netstandard1.1/ko/System.Net.Http.xml", - "ref/netstandard1.1/ru/System.Net.Http.xml", - "ref/netstandard1.1/zh-hans/System.Net.Http.xml", - "ref/netstandard1.1/zh-hant/System.Net.Http.xml", - "ref/netstandard1.3/System.Net.Http.dll", - "ref/netstandard1.3/System.Net.Http.xml", - "ref/netstandard1.3/de/System.Net.Http.xml", - "ref/netstandard1.3/es/System.Net.Http.xml", - "ref/netstandard1.3/fr/System.Net.Http.xml", - "ref/netstandard1.3/it/System.Net.Http.xml", - "ref/netstandard1.3/ja/System.Net.Http.xml", - "ref/netstandard1.3/ko/System.Net.Http.xml", - "ref/netstandard1.3/ru/System.Net.Http.xml", - "ref/netstandard1.3/zh-hans/System.Net.Http.xml", - "ref/netstandard1.3/zh-hant/System.Net.Http.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Net.Http.dll", - "runtimes/win/lib/net46/System.Net.Http.dll", - "runtimes/win/lib/netcore50/System.Net.Http.dll", - "runtimes/win/lib/netstandard1.3/System.Net.Http.dll", - "system.net.http.4.3.0.nupkg.sha512", - "system.net.http.nuspec" - ] - }, - "System.Net.Primitives/4.3.0": { - "sha512": "qOu+hDwFwoZPbzPvwut2qATe3ygjeQBDQj91xlsaqGFQUI5i4ZnZb8yyQuLGpDGivEPIt8EJkd1BVzVoP31FXA==", - "type": "package", - "path": "system.net.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Net.Primitives.dll", - "ref/netcore50/System.Net.Primitives.xml", - "ref/netcore50/de/System.Net.Primitives.xml", - "ref/netcore50/es/System.Net.Primitives.xml", - "ref/netcore50/fr/System.Net.Primitives.xml", - "ref/netcore50/it/System.Net.Primitives.xml", - "ref/netcore50/ja/System.Net.Primitives.xml", - "ref/netcore50/ko/System.Net.Primitives.xml", - "ref/netcore50/ru/System.Net.Primitives.xml", - "ref/netcore50/zh-hans/System.Net.Primitives.xml", - "ref/netcore50/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.0/System.Net.Primitives.dll", - "ref/netstandard1.0/System.Net.Primitives.xml", - "ref/netstandard1.0/de/System.Net.Primitives.xml", - "ref/netstandard1.0/es/System.Net.Primitives.xml", - "ref/netstandard1.0/fr/System.Net.Primitives.xml", - "ref/netstandard1.0/it/System.Net.Primitives.xml", - "ref/netstandard1.0/ja/System.Net.Primitives.xml", - "ref/netstandard1.0/ko/System.Net.Primitives.xml", - "ref/netstandard1.0/ru/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.0/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.1/System.Net.Primitives.dll", - "ref/netstandard1.1/System.Net.Primitives.xml", - "ref/netstandard1.1/de/System.Net.Primitives.xml", - "ref/netstandard1.1/es/System.Net.Primitives.xml", - "ref/netstandard1.1/fr/System.Net.Primitives.xml", - "ref/netstandard1.1/it/System.Net.Primitives.xml", - "ref/netstandard1.1/ja/System.Net.Primitives.xml", - "ref/netstandard1.1/ko/System.Net.Primitives.xml", - "ref/netstandard1.1/ru/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.1/zh-hant/System.Net.Primitives.xml", - "ref/netstandard1.3/System.Net.Primitives.dll", - "ref/netstandard1.3/System.Net.Primitives.xml", - "ref/netstandard1.3/de/System.Net.Primitives.xml", - "ref/netstandard1.3/es/System.Net.Primitives.xml", - "ref/netstandard1.3/fr/System.Net.Primitives.xml", - "ref/netstandard1.3/it/System.Net.Primitives.xml", - "ref/netstandard1.3/ja/System.Net.Primitives.xml", - "ref/netstandard1.3/ko/System.Net.Primitives.xml", - "ref/netstandard1.3/ru/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hans/System.Net.Primitives.xml", - "ref/netstandard1.3/zh-hant/System.Net.Primitives.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.primitives.4.3.0.nupkg.sha512", - "system.net.primitives.nuspec" - ] - }, - "System.Net.Sockets/4.3.0": { - "sha512": "m6icV6TqQOAdgt5N/9I5KNpjom/5NFtkmGseEH+AK/hny8XrytLH3+b5M8zL/Ycg3fhIocFpUMyl/wpFnVRvdw==", - "type": "package", - "path": "system.net.sockets/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Net.Sockets.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.dll", - "ref/netstandard1.3/System.Net.Sockets.xml", - "ref/netstandard1.3/de/System.Net.Sockets.xml", - "ref/netstandard1.3/es/System.Net.Sockets.xml", - "ref/netstandard1.3/fr/System.Net.Sockets.xml", - "ref/netstandard1.3/it/System.Net.Sockets.xml", - "ref/netstandard1.3/ja/System.Net.Sockets.xml", - "ref/netstandard1.3/ko/System.Net.Sockets.xml", - "ref/netstandard1.3/ru/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hans/System.Net.Sockets.xml", - "ref/netstandard1.3/zh-hant/System.Net.Sockets.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.net.sockets.4.3.0.nupkg.sha512", - "system.net.sockets.nuspec" - ] - }, "System.ObjectModel/4.3.0": { "sha512": "bdX+80eKv9bN6K4N+d77OankKHGn6CH711a6fcOpMQu2Fckp/Ft4L/kW9WznHpyR0NRAvJutzOMHNNlBGvxQzQ==", "type": "package", @@ -4828,6 +2443,50 @@ "system.objectmodel.nuspec" ] }, + "System.Reactive/4.3.2": { + "sha512": "WhGkScPWxw2pp7UwRW8M1OvYZ3WUDPC2wJ0aiuaB4KRD3bt4wLkgHgYnOUu87WRhsurvv5LN0E63iWOEza2o8g==", + "type": "package", + "path": "system.reactive/4.3.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/netcoreapp3.0/System.Reactive.dll", + "build/netcoreapp3.0/System.Reactive.targets", + "build/netcoreapp3.0/System.Reactive.xml", + "buildTransitive/netcoreapp3.0/System.Reactive.targets", + "lib/net46/System.Reactive.dll", + "lib/net46/System.Reactive.xml", + "lib/netcoreapp3.0/_._", + "lib/netstandard2.0/System.Reactive.dll", + "lib/netstandard2.0/System.Reactive.xml", + "lib/uap10.0.16299/System.Reactive.dll", + "lib/uap10.0.16299/System.Reactive.pri", + "lib/uap10.0.16299/System.Reactive.xml", + "lib/uap10.0/System.Reactive.dll", + "lib/uap10.0/System.Reactive.pri", + "lib/uap10.0/System.Reactive.xml", + "system.reactive.4.3.2.nupkg.sha512", + "system.reactive.nuspec" + ] + }, + "System.Reactive.Linq/4.3.2": { + "sha512": "YDTHN/jSwFDxGjgOjTpiJiwbq5d2ggKCR+9c6LLPEmTYBOu1Q5TFSYbeZNPPGgGMzoxY1WRrEJ/bLej0s3jXhQ==", + "type": "package", + "path": "system.reactive.linq/4.3.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net46/System.Reactive.Linq.dll", + "lib/net46/System.Reactive.Linq.xml", + "lib/netstandard2.0/System.Reactive.Linq.dll", + "lib/netstandard2.0/System.Reactive.Linq.xml", + "lib/uap10.0/System.Reactive.Linq.dll", + "lib/uap10.0/System.Reactive.Linq.pri", + "lib/uap10.0/System.Reactive.Linq.xml", + "system.reactive.linq.4.3.2.nupkg.sha512", + "system.reactive.linq.nuspec" + ] + }, "System.Reflection/4.3.0": { "sha512": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==", "type": "package", @@ -5279,12 +2938,13 @@ "system.resources.resourcemanager.nuspec" ] }, - "System.Runtime/4.3.0": { - "sha512": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==", + "System.Runtime/4.3.1": { + "sha512": "abhfv1dTK6NXOmu4bgHIONxHyEqFjW8HwXPmpY9gmll+ix9UNo4XDcmzJn6oLooftxNssVHdJC1pGT9jkSynQg==", "type": "package", - "path": "system.runtime/4.3.0", + "path": "system.runtime/4.3.1", "files": [ ".nupkg.metadata", + ".signature.p7s", "ThirdPartyNotices.txt", "dotnet_library_license.txt", "lib/MonoAndroid10/_._", @@ -5366,19 +3026,22 @@ "ref/xamarinmac20/_._", "ref/xamarintvos10/_._", "ref/xamarinwatchos10/_._", - "system.runtime.4.3.0.nupkg.sha512", + "system.runtime.4.3.1.nupkg.sha512", "system.runtime.nuspec" ] }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "sha512": "wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==", + "System.Runtime.CompilerServices.Unsafe/5.0.0-preview.1.20120.5": { + "sha512": "vAVVRGUm4plmUFqwuXZ9OzfmYU6CEOlD7W4PlOs1wPyWj3JDi00rb9KK9cS/jwsoSmZEzzE6PG74JyYa88w4kg==", "type": "package", - "path": "system.runtime.compilerservices.unsafe/4.5.2", + "path": "system.runtime.compilerservices.unsafe/5.0.0-preview.1.20120.5", "files": [ ".nupkg.metadata", ".signature.p7s", + "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", + "lib/net45/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net45/System.Runtime.CompilerServices.Unsafe.xml", "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", @@ -5389,18 +3052,21 @@ "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", + "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll", + "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.5.0.0-preview.1.20120.5.nupkg.sha512", "system.runtime.compilerservices.unsafe.nuspec", "useSharedDesignerContext.txt", "version.txt" ] }, - "System.Runtime.Extensions/4.3.0": { - "sha512": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==", + "System.Runtime.Extensions/4.3.1": { + "sha512": "qAtKMcHOAq9/zKkl0dwvF0T0pmgCQxX1rC49rJXoU8jq+lw6MC3uXy7nLFmjEI20T3Aq069eWz4LcYR64vEmJw==", "type": "package", - "path": "system.runtime.extensions/4.3.0", + "path": "system.runtime.extensions/4.3.1", "files": [ ".nupkg.metadata", + ".signature.p7s", "ThirdPartyNotices.txt", "dotnet_library_license.txt", "lib/MonoAndroid10/_._", @@ -5471,7 +3137,7 @@ "ref/xamarinmac20/_._", "ref/xamarintvos10/_._", "ref/xamarinwatchos10/_._", - "system.runtime.extensions.4.3.0.nupkg.sha512", + "system.runtime.extensions.4.3.1.nupkg.sha512", "system.runtime.extensions.nuspec" ] }, @@ -5604,96 +3270,6 @@ "system.runtime.interopservices.nuspec" ] }, - "System.Runtime.InteropServices.RuntimeInformation/4.3.0": { - "sha512": "cbz4YJMqRDR7oLeMRbdYv7mYzc++17lNhScCX0goO2XpGWdvAt60CGN+FHdePUEHCe/Jy9jUlvNAiNdM+7jsOw==", - "type": "package", - "path": "system.runtime.interopservices.runtimeinformation/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/win8/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/wpa81/System.Runtime.InteropServices.RuntimeInformation.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/aot/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/unix/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/net45/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netcore50/System.Runtime.InteropServices.RuntimeInformation.dll", - "runtimes/win/lib/netstandard1.1/System.Runtime.InteropServices.RuntimeInformation.dll", - "system.runtime.interopservices.runtimeinformation.4.3.0.nupkg.sha512", - "system.runtime.interopservices.runtimeinformation.nuspec" - ] - }, - "System.Runtime.Numerics/4.3.0": { - "sha512": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==", - "type": "package", - "path": "system.runtime.numerics/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Runtime.Numerics.dll", - "lib/netstandard1.3/System.Runtime.Numerics.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Runtime.Numerics.dll", - "ref/netcore50/System.Runtime.Numerics.xml", - "ref/netcore50/de/System.Runtime.Numerics.xml", - "ref/netcore50/es/System.Runtime.Numerics.xml", - "ref/netcore50/fr/System.Runtime.Numerics.xml", - "ref/netcore50/it/System.Runtime.Numerics.xml", - "ref/netcore50/ja/System.Runtime.Numerics.xml", - "ref/netcore50/ko/System.Runtime.Numerics.xml", - "ref/netcore50/ru/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hans/System.Runtime.Numerics.xml", - "ref/netcore50/zh-hant/System.Runtime.Numerics.xml", - "ref/netstandard1.1/System.Runtime.Numerics.dll", - "ref/netstandard1.1/System.Runtime.Numerics.xml", - "ref/netstandard1.1/de/System.Runtime.Numerics.xml", - "ref/netstandard1.1/es/System.Runtime.Numerics.xml", - "ref/netstandard1.1/fr/System.Runtime.Numerics.xml", - "ref/netstandard1.1/it/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ja/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ko/System.Runtime.Numerics.xml", - "ref/netstandard1.1/ru/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hans/System.Runtime.Numerics.xml", - "ref/netstandard1.1/zh-hant/System.Runtime.Numerics.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.runtime.numerics.4.3.0.nupkg.sha512", - "system.runtime.numerics.nuspec" - ] - }, "System.Runtime.Serialization.Formatters/4.3.0": { "sha512": "KT591AkTNFOTbhZlaeMVvfax3RqhH1EJlcwF50Wm7sfnBLuHiOeZRRKrr1ns3NESkM20KPZ5Ol/ueMq5vg4QoQ==", "type": "package", @@ -5795,344 +3371,6 @@ "system.runtime.serialization.primitives.nuspec" ] }, - "System.Security.AccessControl/4.7.0": { - "sha512": "JECvTt5aFF3WT3gHpfofL2MNNP6v84sxtXxpqhLBCcDRzqsPBmHhQ6shv4DwwN2tRlzsUxtb3G9M3763rbXKDg==", - "type": "package", - "path": "system.security.accesscontrol/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.AccessControl.dll", - "lib/net461/System.Security.AccessControl.dll", - "lib/net461/System.Security.AccessControl.xml", - "lib/netstandard1.3/System.Security.AccessControl.dll", - "lib/netstandard2.0/System.Security.AccessControl.dll", - "lib/netstandard2.0/System.Security.AccessControl.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.dll", - "ref/net461/System.Security.AccessControl.xml", - "ref/netstandard1.3/System.Security.AccessControl.dll", - "ref/netstandard1.3/System.Security.AccessControl.xml", - "ref/netstandard1.3/de/System.Security.AccessControl.xml", - "ref/netstandard1.3/es/System.Security.AccessControl.xml", - "ref/netstandard1.3/fr/System.Security.AccessControl.xml", - "ref/netstandard1.3/it/System.Security.AccessControl.xml", - "ref/netstandard1.3/ja/System.Security.AccessControl.xml", - "ref/netstandard1.3/ko/System.Security.AccessControl.xml", - "ref/netstandard1.3/ru/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hans/System.Security.AccessControl.xml", - "ref/netstandard1.3/zh-hant/System.Security.AccessControl.xml", - "ref/netstandard2.0/System.Security.AccessControl.dll", - "ref/netstandard2.0/System.Security.AccessControl.xml", - "ref/uap10.0.16299/_._", - "runtimes/win/lib/net46/System.Security.AccessControl.dll", - "runtimes/win/lib/net461/System.Security.AccessControl.dll", - "runtimes/win/lib/net461/System.Security.AccessControl.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.AccessControl.xml", - "runtimes/win/lib/netstandard1.3/System.Security.AccessControl.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.accesscontrol.4.7.0.nupkg.sha512", - "system.security.accesscontrol.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, - "System.Security.Cryptography.Algorithms/4.3.0": { - "sha512": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "type": "package", - "path": "system.security.cryptography.algorithms/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Algorithms.dll", - "lib/net461/System.Security.Cryptography.Algorithms.dll", - "lib/net463/System.Security.Cryptography.Algorithms.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Algorithms.dll", - "ref/net461/System.Security.Cryptography.Algorithms.dll", - "ref/net463/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.3/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.4/System.Security.Cryptography.Algorithms.dll", - "ref/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/osx/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.Algorithms.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Algorithms.dll", - "system.security.cryptography.algorithms.4.3.0.nupkg.sha512", - "system.security.cryptography.algorithms.nuspec" - ] - }, - "System.Security.Cryptography.Cng/4.3.0": { - "sha512": "03idZOqFlsKRL4W+LuCpJ6dBYDUWReug6lZjBa3uJWnk5sPCUXckocevTaUA8iT/MFSrY/2HXkOt753xQ/cf8g==", - "type": "package", - "path": "system.security.cryptography.cng/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/net46/System.Security.Cryptography.Cng.dll", - "lib/net461/System.Security.Cryptography.Cng.dll", - "lib/net463/System.Security.Cryptography.Cng.dll", - "ref/net46/System.Security.Cryptography.Cng.dll", - "ref/net461/System.Security.Cryptography.Cng.dll", - "ref/net463/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.3/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.4/System.Security.Cryptography.Cng.dll", - "ref/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/net463/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.4/System.Security.Cryptography.Cng.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.Cng.dll", - "system.security.cryptography.cng.4.3.0.nupkg.sha512", - "system.security.cryptography.cng.nuspec" - ] - }, - "System.Security.Cryptography.Csp/4.3.0": { - "sha512": "X4s/FCkEUnRGnwR3aSfVIkldBmtURMhmexALNTwpjklzxWU7yjMk7GHLKOZTNkgnWnE0q7+BCf9N2LVRWxewaA==", - "type": "package", - "path": "system.security.cryptography.csp/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Csp.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Csp.dll", - "ref/netstandard1.3/System.Security.Cryptography.Csp.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Csp.dll", - "runtimes/win/lib/netcore50/_._", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Csp.dll", - "system.security.cryptography.csp.4.3.0.nupkg.sha512", - "system.security.cryptography.csp.nuspec" - ] - }, - "System.Security.Cryptography.Encoding/4.3.0": { - "sha512": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==", - "type": "package", - "path": "system.security.cryptography.encoding/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Encoding.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "ref/netstandard1.3/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.Encoding.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.Encoding.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.Encoding.dll", - "runtimes/win/lib/netstandard1.3/System.Security.Cryptography.Encoding.dll", - "system.security.cryptography.encoding.4.3.0.nupkg.sha512", - "system.security.cryptography.encoding.nuspec" - ] - }, - "System.Security.Cryptography.OpenSsl/4.3.0": { - "sha512": "h4CEgOgv5PKVF/HwaHzJRiVboL2THYCou97zpmhjghx5frc7fIvlkY1jL+lnIQyChrJDMNEXS6r7byGif8Cy4w==", - "type": "package", - "path": "system.security.cryptography.openssl/4.3.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "ref/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.OpenSsl.dll", - "system.security.cryptography.openssl.4.3.0.nupkg.sha512", - "system.security.cryptography.openssl.nuspec" - ] - }, - "System.Security.Cryptography.Primitives/4.3.0": { - "sha512": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==", - "type": "package", - "path": "system.security.cryptography.primitives/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.Primitives.dll", - "lib/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.Primitives.dll", - "ref/netstandard1.3/System.Security.Cryptography.Primitives.dll", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.security.cryptography.primitives.4.3.0.nupkg.sha512", - "system.security.cryptography.primitives.nuspec" - ] - }, - "System.Security.Cryptography.X509Certificates/4.3.0": { - "sha512": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "type": "package", - "path": "system.security.cryptography.x509certificates/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net46/System.Security.Cryptography.X509Certificates.dll", - "lib/net461/System.Security.Cryptography.X509Certificates.dll", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net46/System.Security.Cryptography.X509Certificates.dll", - "ref/net461/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.3/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.3/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.dll", - "ref/netstandard1.4/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/de/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/es/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/fr/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/it/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ja/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ko/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/ru/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hans/System.Security.Cryptography.X509Certificates.xml", - "ref/netstandard1.4/zh-hant/System.Security.Cryptography.X509Certificates.xml", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "runtimes/unix/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net46/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/net461/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netcore50/System.Security.Cryptography.X509Certificates.dll", - "runtimes/win/lib/netstandard1.6/System.Security.Cryptography.X509Certificates.dll", - "system.security.cryptography.x509certificates.4.3.0.nupkg.sha512", - "system.security.cryptography.x509certificates.nuspec" - ] - }, - "System.Security.Principal.Windows/4.7.0": { - "sha512": "ojD0PX0XhneCsUbAZVKdb7h/70vyYMDYs85lwEI+LngEONe/17A0cFaRFqZU+sOEidcVswYWikYOQ9PPfjlbtQ==", - "type": "package", - "path": "system.security.principal.windows/4.7.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "LICENSE.TXT", - "THIRD-PARTY-NOTICES.TXT", - "lib/net46/System.Security.Principal.Windows.dll", - "lib/net461/System.Security.Principal.Windows.dll", - "lib/net461/System.Security.Principal.Windows.xml", - "lib/netstandard1.3/System.Security.Principal.Windows.dll", - "lib/netstandard2.0/System.Security.Principal.Windows.dll", - "lib/netstandard2.0/System.Security.Principal.Windows.xml", - "lib/uap10.0.16299/_._", - "ref/net46/System.Security.Principal.Windows.dll", - "ref/net461/System.Security.Principal.Windows.dll", - "ref/net461/System.Security.Principal.Windows.xml", - "ref/netcoreapp3.0/System.Security.Principal.Windows.dll", - "ref/netcoreapp3.0/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/System.Security.Principal.Windows.dll", - "ref/netstandard1.3/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/de/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/es/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/fr/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/it/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ja/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ko/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/ru/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hans/System.Security.Principal.Windows.xml", - "ref/netstandard1.3/zh-hant/System.Security.Principal.Windows.xml", - "ref/netstandard2.0/System.Security.Principal.Windows.dll", - "ref/netstandard2.0/System.Security.Principal.Windows.xml", - "ref/uap10.0.16299/_._", - "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", - "runtimes/unix/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", - "runtimes/unix/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", - "runtimes/win/lib/net46/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net461/System.Security.Principal.Windows.dll", - "runtimes/win/lib/net461/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netcoreapp2.0/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.dll", - "runtimes/win/lib/netcoreapp2.1/System.Security.Principal.Windows.xml", - "runtimes/win/lib/netstandard1.3/System.Security.Principal.Windows.dll", - "runtimes/win/lib/uap10.0.16299/_._", - "system.security.principal.windows.4.7.0.nupkg.sha512", - "system.security.principal.windows.nuspec", - "useSharedDesignerContext.txt", - "version.txt" - ] - }, "System.Text.Encoding/4.3.0": { "sha512": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==", "type": "package", @@ -6522,10 +3760,10 @@ "version.txt" ] }, - "System.Threading.Tasks.Parallel/4.3.0": { - "sha512": "cbjBNZHf/vQCfcdhzx7knsiygoCKgxL8mZOeocXZn5gWhCdzHIq6bYNKWX0LAJCWYP7bds4yBK8p06YkP0oa0g==", + "System.Threading.Thread/4.3.0": { + "sha512": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==", "type": "package", - "path": "system.threading.tasks.parallel/4.3.0", + "path": "system.threading.thread/4.3.0", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -6533,104 +3771,33 @@ "dotnet_library_license.txt", "lib/MonoAndroid10/_._", "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Threading.Tasks.Parallel.dll", - "lib/netstandard1.3/System.Threading.Tasks.Parallel.dll", - "lib/portable-net45+win8+wpa81/_._", - "lib/win8/_._", - "lib/wpa81/_._", + "lib/net46/System.Threading.Thread.dll", + "lib/netcore50/_._", + "lib/netstandard1.3/System.Threading.Thread.dll", "lib/xamarinios10/_._", "lib/xamarinmac20/_._", "lib/xamarintvos10/_._", "lib/xamarinwatchos10/_._", "ref/MonoAndroid10/_._", "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Threading.Tasks.Parallel.dll", - "ref/netcore50/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/de/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/es/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/fr/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/it/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ja/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ko/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/ru/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netcore50/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.dll", - "ref/netstandard1.1/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/de/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/es/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/fr/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/it/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ja/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ko/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/ru/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hans/System.Threading.Tasks.Parallel.xml", - "ref/netstandard1.1/zh-hant/System.Threading.Tasks.Parallel.xml", - "ref/portable-net45+win8+wpa81/_._", - "ref/win8/_._", - "ref/wpa81/_._", + "ref/net46/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.dll", + "ref/netstandard1.3/System.Threading.Thread.xml", + "ref/netstandard1.3/de/System.Threading.Thread.xml", + "ref/netstandard1.3/es/System.Threading.Thread.xml", + "ref/netstandard1.3/fr/System.Threading.Thread.xml", + "ref/netstandard1.3/it/System.Threading.Thread.xml", + "ref/netstandard1.3/ja/System.Threading.Thread.xml", + "ref/netstandard1.3/ko/System.Threading.Thread.xml", + "ref/netstandard1.3/ru/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hans/System.Threading.Thread.xml", + "ref/netstandard1.3/zh-hant/System.Threading.Thread.xml", "ref/xamarinios10/_._", "ref/xamarinmac20/_._", "ref/xamarintvos10/_._", "ref/xamarinwatchos10/_._", - "system.threading.tasks.parallel.4.3.0.nupkg.sha512", - "system.threading.tasks.parallel.nuspec" - ] - }, - "System.Threading.Timer/4.3.0": { - "sha512": "Z6YfyYTCg7lOZjJzBjONJTFKGN9/NIYKSxhU5GRd+DTwHSZyvWp1xuI5aR+dLg+ayyC5Xv57KiY4oJ0tMO89fQ==", - "type": "package", - "path": "system.threading.timer/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net451/_._", - "lib/portable-net451+win81+wpa81/_._", - "lib/win81/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net451/_._", - "ref/netcore50/System.Threading.Timer.dll", - "ref/netcore50/System.Threading.Timer.xml", - "ref/netcore50/de/System.Threading.Timer.xml", - "ref/netcore50/es/System.Threading.Timer.xml", - "ref/netcore50/fr/System.Threading.Timer.xml", - "ref/netcore50/it/System.Threading.Timer.xml", - "ref/netcore50/ja/System.Threading.Timer.xml", - "ref/netcore50/ko/System.Threading.Timer.xml", - "ref/netcore50/ru/System.Threading.Timer.xml", - "ref/netcore50/zh-hans/System.Threading.Timer.xml", - "ref/netcore50/zh-hant/System.Threading.Timer.xml", - "ref/netstandard1.2/System.Threading.Timer.dll", - "ref/netstandard1.2/System.Threading.Timer.xml", - "ref/netstandard1.2/de/System.Threading.Timer.xml", - "ref/netstandard1.2/es/System.Threading.Timer.xml", - "ref/netstandard1.2/fr/System.Threading.Timer.xml", - "ref/netstandard1.2/it/System.Threading.Timer.xml", - "ref/netstandard1.2/ja/System.Threading.Timer.xml", - "ref/netstandard1.2/ko/System.Threading.Timer.xml", - "ref/netstandard1.2/ru/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hans/System.Threading.Timer.xml", - "ref/netstandard1.2/zh-hant/System.Threading.Timer.xml", - "ref/portable-net451+win81+wpa81/_._", - "ref/win81/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.threading.timer.4.3.0.nupkg.sha512", - "system.threading.timer.nuspec" + "system.threading.thread.4.3.0.nupkg.sha512", + "system.threading.thread.nuspec" ] }, "System.Xml.ReaderWriter/4.3.0": { @@ -6704,75 +3871,6 @@ "system.xml.readerwriter.nuspec" ] }, - "System.Xml.XDocument/4.3.0": { - "sha512": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==", - "type": "package", - "path": "system.xml.xdocument/4.3.0", - "files": [ - ".nupkg.metadata", - "ThirdPartyNotices.txt", - "dotnet_library_license.txt", - "lib/MonoAndroid10/_._", - "lib/MonoTouch10/_._", - "lib/net45/_._", - "lib/netcore50/System.Xml.XDocument.dll", - "lib/netstandard1.3/System.Xml.XDocument.dll", - "lib/portable-net45+win8+wp8+wpa81/_._", - "lib/win8/_._", - "lib/wp80/_._", - "lib/wpa81/_._", - "lib/xamarinios10/_._", - "lib/xamarinmac20/_._", - "lib/xamarintvos10/_._", - "lib/xamarinwatchos10/_._", - "ref/MonoAndroid10/_._", - "ref/MonoTouch10/_._", - "ref/net45/_._", - "ref/netcore50/System.Xml.XDocument.dll", - "ref/netcore50/System.Xml.XDocument.xml", - "ref/netcore50/de/System.Xml.XDocument.xml", - "ref/netcore50/es/System.Xml.XDocument.xml", - "ref/netcore50/fr/System.Xml.XDocument.xml", - "ref/netcore50/it/System.Xml.XDocument.xml", - "ref/netcore50/ja/System.Xml.XDocument.xml", - "ref/netcore50/ko/System.Xml.XDocument.xml", - "ref/netcore50/ru/System.Xml.XDocument.xml", - "ref/netcore50/zh-hans/System.Xml.XDocument.xml", - "ref/netcore50/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.0/System.Xml.XDocument.dll", - "ref/netstandard1.0/System.Xml.XDocument.xml", - "ref/netstandard1.0/de/System.Xml.XDocument.xml", - "ref/netstandard1.0/es/System.Xml.XDocument.xml", - "ref/netstandard1.0/fr/System.Xml.XDocument.xml", - "ref/netstandard1.0/it/System.Xml.XDocument.xml", - "ref/netstandard1.0/ja/System.Xml.XDocument.xml", - "ref/netstandard1.0/ko/System.Xml.XDocument.xml", - "ref/netstandard1.0/ru/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.0/zh-hant/System.Xml.XDocument.xml", - "ref/netstandard1.3/System.Xml.XDocument.dll", - "ref/netstandard1.3/System.Xml.XDocument.xml", - "ref/netstandard1.3/de/System.Xml.XDocument.xml", - "ref/netstandard1.3/es/System.Xml.XDocument.xml", - "ref/netstandard1.3/fr/System.Xml.XDocument.xml", - "ref/netstandard1.3/it/System.Xml.XDocument.xml", - "ref/netstandard1.3/ja/System.Xml.XDocument.xml", - "ref/netstandard1.3/ko/System.Xml.XDocument.xml", - "ref/netstandard1.3/ru/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hans/System.Xml.XDocument.xml", - "ref/netstandard1.3/zh-hant/System.Xml.XDocument.xml", - "ref/portable-net45+win8+wp8+wpa81/_._", - "ref/win8/_._", - "ref/wp80/_._", - "ref/wpa81/_._", - "ref/xamarinios10/_._", - "ref/xamarinmac20/_._", - "ref/xamarintvos10/_._", - "ref/xamarinwatchos10/_._", - "system.xml.xdocument.4.3.0.nupkg.sha512", - "system.xml.xdocument.nuspec" - ] - }, "System.Xml.XmlDocument/4.3.0": { "sha512": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==", "type": "package", @@ -6820,8 +3918,9 @@ "projectFileDependencyGroups": { ".NETCoreApp,Version=v3.1": [ "Economy.Shared >= 1.0.0", - "MagicOnion.Hosting >= 3.0.9", - "RethinkDb.Driver.Linq >= 2.3.150" + "Isopoh.Cryptography.Argon2 >= 1.1.3", + "MessagePack >= 2.1.90", + "System.Reactive.Linq >= 4.3.2" ] }, "packageFolders": { @@ -6867,13 +3966,17 @@ "frameworks": { "netcoreapp3.1": { "dependencies": { - "MagicOnion.Hosting": { + "Isopoh.Cryptography.Argon2": { "target": "Package", - "version": "[3.0.9, )" + "version": "[1.1.3, )" }, - "RethinkDb.Driver.Linq": { + "MessagePack": { "target": "Package", - "version": "[2.3.150, )" + "version": "[2.1.90, )" + }, + "System.Reactive.Linq": { + "target": "Package", + "version": "[4.3.2, )" } }, "imports": [ diff --git a/Economy.Server/obj/project.packagespec.json b/Economy.Server/obj/project.packagespec.json index ab420bcd7..597d74d36 100644 --- a/Economy.Server/obj/project.packagespec.json +++ b/Economy.Server/obj/project.packagespec.json @@ -33,13 +33,17 @@ "frameworks": { "netcoreapp3.1": { "dependencies": { - "MagicOnion.Hosting": { + "Isopoh.Cryptography.Argon2": { "target": "Package", - "version": "[3.0.9, )" + "version": "[1.1.3, )" }, - "RethinkDb.Driver.Linq": { + "MessagePack": { "target": "Package", - "version": "[2.3.150, )" + "version": "[2.1.90, )" + }, + "System.Reactive.Linq": { + "target": "Package", + "version": "[4.3.2, )" } }, "imports": [ diff --git a/Economy.Shared.Unity.csproj b/Economy.Shared.Unity.csproj index b69eca409..d05b613e4 100644 --- a/Economy.Shared.Unity.csproj +++ b/Economy.Shared.Unity.csproj @@ -60,6 +60,7 @@ + @@ -67,8 +68,6 @@ - - @@ -80,8 +79,7 @@ - - + @@ -94,8 +92,350 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -361,12 +701,6 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.dll - - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.Linq.dll - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Newtonsoft.Json.dll @@ -736,10 +1070,6 @@ {21EF11C5-27DC-3D88-B027-9A4B6F36BAE4} MessagePack - - {7A90811F-E771-FAB4-C8B5-EA6DF36C4D19} - MagicOnion.Abstractions - + + + + + + diff --git a/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.assets.cache b/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.assets.cache index 01006f10f4d70a864c92173ec158e2b521e7437b..8c8834f5377222ce15aa3ff0605a1e9cd4d312d4 100644 GIT binary patch literal 26223 zcmdU2YnvR!b%uas3q^pCKnNj_1iBg2yDMo0k^{E1D~Sb3h}D9LGrr93^sX9adX}CU zNo$;h*x2zUwiCy3V#i5*%RRp5>U$E$m(TeH{s;N&FUkA%)agE5UER|=nk87zQ|$Dq zQ&sOETb{O|vq`0rnQ`M~=1ul}g<@`pct`Q=x3UTfVldHfeY z|9SVLTQ}X@dlE|K-vs_XJ9VP=Y{!o}wdm>Y87wb!Yr`Ga29em(( z?XWlD9UreXgZWzMcRSsB*r-R1!`^u9d|&G#w7f>Mxz4n3BmVvh(oIM=BT>E{iSjof zQQlew0jqHtRStHwkXCk9qkX;*yELe!zo%Ukan_p;p_0CGT z5QJSnTC6Xi=O(;y^i1S0<~l1Wb_&H#ve-;gOoQZr668iCcHgfe5hUdVNqGp67o+x4 zRB!D%6Ex9oqus^m)H;n9YZrQF{qC81vpJ7}In!=7{HWGST3_f~u1CwYqu!A`PJpkS zPc)}4QBySBp&c#;OT8!_=Gr8C@z8SQ zUkUuHu)o9O6NksWqfR4C@SaXwCIjO4F+_nI_=C&2j*&*ghJ6M?6mmYXZTPqe1;r__VQ>Z zwWs^_=ux=eLcPnNrd&{ed^p=#j)GRu4X$9Ryxw{1Vp5gHzT3jS$6%*iu)kx_(ir+z zyI2kBT)fa}hqVbTgWeH)*_(jqLaO;BG&Pb343Y=&muuW!B(4LL6A9&)SL;ATeyh!K z_nJZY61*__f0j!~?_pNd&OuFs+J{EDIPFIwr~^m@ML9uH{`NuL(^=_s{gyZ1TU?~` zdel3b_hAU^QeW>>Ur)n0h-L`mO-O|C5E5ZfP8gKWSA?<9ZZ`XC2cbCKsUreqD%I6+ z9!7J7BM#Led?p;q35W9dHC>gnXSzw@^TKwx_Q$!syLN=&nahIZV7cEUiTT%f&B71~Nz$JWq`dSN$c`GbKO z{n@_0hV^C()~^{@lnboIim;ZN?fH5$cu#*bSYVP#Z=KcJ8q#AHq{j^;$_3K9hn%N^ zc2Q>~wl?#$2J;pR%v%i@$_30^#r}!c;DT;BCZ=w$z$YyLrwjnf1weBZ06hO1Ht3yr z`(D%+Sum&50=j3WEMU_H807+t{z{d1jXmSN)bpd2`h1i2Jnl`{Q!)J%GZn{u^o*!$ zP^S&3Gx*Et_bd{pFv71VK4L zP+oP&!d{EZf5*E5pQT;Fd%7S6p6eITz@9?G1SW3OIeaEC$_b3}2)#4R{NA4Dj=XgF zPhS0}W8K`^e;&>2_2&Yf36FBZqg%xnzlufSD9?C#MMj>y@Uw}k?yINKmk<-SQBGKtzgpElvT%7pGxj!R{$3r( znRBtv85h=w=YWVEDTtrNXCkIt5WjC&#LZyoa`&pw|E{`M&!uHG-sgZz<9(aKOS$0v zAn^|KmgpW&&OM7PG@0+TJtU z7|fIl=BiuE0gh1ms^=Y`ng!z>1_tE<<8zhG)6~C!{SD6dBV5*832?vQ^}1wX`z&7x_PL#%AiGe2Z;mfEw-apy^HO|;C;UIGJ024a3-lhck?_DYbFbLCKJln zh{@pBE?HXLOx$l^!(!qaCX@@4s=j|0mg3=LzTMzaZ-JAWpq!)jX``(>chQ2hWFS#4 zkltC*hP#&|zg`WFXlf{zEhvG3Lb*Vx>Hs8Ayl%bo;$VB6O90JLU&DIAg7u<-MY+Iw zrRscT;lkcPZuT&QP1H(A^jsV6tMi4KT{38>@~kfgv^83-G-|IwIw#io}I9ZS*y)Wee6z1{UQ43m-H8 zxE0-~F7=tYO+9<+sET>pb>8_)r+PuN;l*~w+@0x7vg5{^8n>q!{kvug_oPB)37HFB zs*Md+^YrBi%N(pwrhg4d?E_A2$5j}WC#x#wK;7#sY3_GewHvkT0*Kn~>dajW74CPo zm(J_d*^%m8I6XJjj(qQ8v)<)8*kS(meEwWLLIg>iy9H$~nJ^LWTreNiqZO9A&APLo zY*XgKfRbCy*4!N4Q*=jiaGD&rQ@k@T_R<4uYTW10xP;@vcxm>zI^A$*qM{E5nX}uO zW4{Bt+*;ZGe88=gIelc4cN@Lj`5!aylFaNG9J98XtjtLmGwyd~cXSA9e7coydK6?bioK2=w|2%{esmDH&V4fI< zItrk8v#BKAJy0rrm`XkFi3WMz4JH%h%dxr*Z|VCcyPl4|!l)RHx^Kq1?iVp$3h z4JJEysZyuii?~6U_4}XB*F!{bMQlo5DdW;nv`^p}hqqu?K-KM*Y8F7!qo$%K5FUnj zBo>snPdv#u+^M}R8xN}Nx9To(n+NM=`%YenjC;sR#ELT+)(auHW1U%lsn@JWmhs+h za3{VC>z1xagy~u+bBUE@H7sV%WnH@)x^ipDXBPJmy9T+kR2*C7Sp&=PA5ZhvCS>r9 zasBkhm4P5sBUk#vzQt^G@K^JnzCYc~V}+^S6=z`VVasmfL_< zv%DM6WJ!4$%U6*9%N+73{I`RL=6?^K$)EBv{=b9#A%pNtP+`G2aP>fG*+#0xVFyrY zHuvJ0Y$z{d^FHJc`ED9EuT6-gjM`4%)jaRRGkH>8#`FEiA9B>zAaqjL+z(Wm%`QBX z4drEQUPb=vEu>O7?FKf@X%C*siSjZ|A3*-vhFS{32hb7`K8VD%doL0ZQci@FyVmXx zLjIbCU<%lMXp~_0BN6NYB!Z=!U@3Qj{awhb-k)VdGc6xa#X6|aOo4Y0%@7`U8-({E zB*LSd@F;h|`!M8d6C-KCr;BR#eL9>oJ#x}6wg*&XBmU|~@R@8VCmYILY(5J4M~1x= z))Akb^qk9_BUhuN&c`&L-vchq=VN##AIi)4d>r{BjRh@Zp^xx1_;G;H;6H(9f~UL; z{O==wEn`G2F6#X#j}etu<}mP)*AXPXGJk+XUX+s;S|_>0HJ2~M|dVP%FCF28u?XkkQ&Z_ z&K&k+BAd=0CTqBFMzb33ALE&DDKCTjC&+*ApyQ}cKSDofdyD+~V*hD5`C`Su8LQ|N zS`+vTfM^1r#WM*|UPj$rK8Xf2u+QO{z$h;R_Giei8txYdLgphh z2Y^(^oVq8c(69#l=XfSy%F6)%1@f;eax(`vG2HC6fd+dTjS}n`Bu2*J%D5!{nV1V=f+QSJiwMaZiTeLF30SeICsdwzyw^iO+;hd6~uj74oajwNV=Gse&;r zsH&UQMUDhxidj5^W(ju|iDvQFNQ6r{;Zp80i@$+vr zGA4hA{1FCkRwttF?KBStX=)ySk7x3ryo|>`Ab)7rN?BAFSABkRVOX>tCO(L=t?VVC z=JXX{(=WwW@k~yXlT*>2M{H#p2?8%vN8M?@<+^Y74Djwp?d?+08-8HAMs3v zl$SC5C*%*kbME3@LrhqF*Si|8so;)SkJvv0m*(>?cqSjp%lP~&@`sI3%-LGvH>Eew z$|1dsrZmKV!!sdLUIy{o$p8Nj5tK!gp@3u|zEumK$%1mSDDthoL!F8nmTS10cZ3cW z_qTnQuPq})!@AqQi)R9+ysX>5hy1Ee3IQWoA%*35fmw$XO8+jSSq=C5cqUxR%i#XN zl>6+k$6A@M17<@@wt@*vf9IK1-4kHRg>0UZ=-k&A6z7YFn1x9UOzDv~t~d#DfvyUqR0^P|UIJ&?dn zqqn?FOf5S@At_YTF|}ugYe`qZX59g>iJmJ{>b{Qc1ZL3 z{tve7vueY6#h4ZROqSW;=XLRqsyvu0IzE<(k!C>&=rp%zm|E~f=e^d{f|G|av%yfe zZ4xf4Zmy^hgxy+Nsc}4F)y#Q5>C?OBAwIapq3pM6T}1g1R%sSbbrD`B<*b z#0GM~=&VR$U9J0rLnYPZZyF>@H{+N+R9r@5w12lMalJ zl~J>V;>OSVRD3{Dt%_>Iy0fR%cwh0e1SK|}RVUMIOgt*UcdG2ELRoM6QvyOHcgAZG zQH67=XkVrcb=+DqZ73~*&&T2)uv(w+lHr<7PgPM=>`X~{c8U(bcgk&RQyeUPqL5e1 z&eA8D_N!G=qb|nkD||2Dc$9Y}MLQ(^qALHm7H4uqx2 z)@9kZv(h1Z)bgd2-4qvM)iP=34sVLbHK&SdgeLRUnMw&wOOseOoa}V`E?4q5M15o5 zFx6gOIoDpOH*fAnJ^zkrAHOXX#y^*FsW;C(_HEWadWU{iei7?G>gc325WnDy1iJ@n z?6<1rSf+*2jqX;La9=7+M>D@)JyJnUZ%at`P=zw-e(_~~ zqy@L2RaJsEBTIWhrBr#itm2Hn4`o@AEGHj1B{P<#Y`w*M-J1(b>yaGFYP*sL-L+>8 z=0vXY#HX{c=e8xX;0@9{lxrecU#yJ?$K)P^+L0w+11t(7vX29lofH*ei{fII>Db4f z6JBofahm}yn-Tj=(=K9dI(F#dR$hsn<~JQ;r}-T5=+k|MjZsYmuKk2ybmbi^9%XA| zAq%V}w#`IgnYH|EWhRa++oVe>vbO_b(sr%3p6j&MjGtZ9+7l$svqi~LlcNe%8{fZl zUCmDl$$MK^hQ=!Hu9PGNkNqSf=^JxL%h%eHEAcA*-dbtN46V$t>h< zDmzb>H6N@U>-G$R0GMxTlQ=-WlUn<5p{6#u^B%5JH=@E&usF|Qf?p9{LdV&F$N6UUSk9K!|Skf3%+9kqf>#+xAjKdjJo AeE@=8}al+8wRO-ksUZ%-Rwm zfe;{E5^^IXr1F@myygd_@&i(-RDM7zue|e=$DD7r&&-*gp4nNIl(?#`?bD~bzterX z`}8?I^DkUHd)FrBHwnJ89oK5KT6d^kZl%9pqjVdk+bMy5CneCgPy)Tx z4@KK@keb2I&!zi%p5&aHpW7Y{XoLN-399K9iDo9{or;Y(^Db&;_?e+S2eN(u-QyxL%ve}Csf}ASgSEg}k?J%;q}haXauJ*o+AalcH~qz^?V$u{paUA{ zuk{->&$$_q1_8^p(D!O1q)1k7?na0-mvUYrPKjhM^@KsXhZ2z7O9@Co2NKX z3nQm(Eq7N|unxzq@%)frg)R2@&h_{tjQgk?z}QC#Fz%-W7@z|N=pWunI0l+5g{$tj zT261dS)T7T9nT5edeO{{G0aI(ZO->D_NqzL`w10L^E5s{zkwQbp2pR6gKl?x&+($R z-*8$*V3RSO^cDLo*d@pV1V(~M?l-v^1 zV;ZDG3KHlH>5X+RCf6^*l}zaLWeMi62IhzY13H80d*rL_r{#Lzvz*mVKqqK?=z#dn?KxbetSDd)E)AoZk8kvdwu_3nW*_cg&IHo{6L4UDZKS>Gu z9_Ro8dezbKx^3*np>>0{XurbgF~=3I^eRYT$Ejm^j66ko00SMsaEt`&)FFTQ8g*E@ z8z(F8a?G3CiY@A1ZpFit2RzVu@}T0S=B&~xvN+VC)>pL`5>`1@Cp0i43JmBBrs~d= zg0UPr00_~^QVT#JI#2u()~JF7D<8TwP6=ZKI$(kR9=80!1}Vm6xvlu{=bdUWkkd1< z2@qG7h$jdUW|a}2q~AacIwO8}y@*?G^J;X{!T$q~>P%W!;yp#UB;KbLUeFou2kSjl zg(eJO3Hd61x70{3~vEeCf>gLGa&0-YgM zJrbg;fnx)X71`nS{z|Zv@GpU1!n&Zrx~O1*&amF8y6QAsWSB+dG*Wh1xgn%OJfBpR zXrEVT**Kb3Xh8?sL5!o-cFV#rI>F7rExDE?Q~NSiScogU6jzYIE-7HVhrXbIfzHEN zb#?)aQp2y4HRj=HGI~KWxCq;n;+L>yG+46=7U&F%erEpRXx*Oi*P(b{fy)eK_lvUG z#dBS^)v#hkL*X{z+(Lez$Xmj@gtGmzEZ5R5-RpxY2U6nP`K8#yIN!1(?2uuv$;4H} z^fR|m8m>T<0-EFkSk?%RnI1muVEWGi)Yfa75U z$0A*k<1N~0faTtVMP7zcGGr{V(wz`YkC~Y=cWLn5ulS~1yXpC1gxkWDv)pZ>@IEfg zUUpG*k1EPsIZ^P4seo==yc2+DtKylyj2t&bw?w!Jdu1r#rZNSZoZD1WxYwc1K9QIA zJd|x$WxY$6nWd_&4kW~%V9{~tzk)5KHDfGJmET;vh_iNVn$fX?s3oi*}WPo&p;VHwVz<>hl zevLH?AQ@5B(DM{bARjU+^6FvRX4<3e+wZWA29~2*+ePM2f8Olav94y0c{IYhnkmrK zo^i)K3r@4!vIF6YKr_1(?<Gk%uB7rn~E-I)AT7>zEgXeuBxyQ6^3i6v2WT>USFi zG~IO;Yp#Dqu<{vnhEQ4mUkfo=*h%@G}&(LAMZQ(B<3NU5)bd_ z7$GJAzKas9SI}{4gKh%6MD$GxNino4At@8I7YW+`I8?=ucTm?D&ATaKG)yCn@_F=T|Q0GX}Hm*_VX0CYCnOpsru^34rxF~Ysn6A&VV zg+aZS5)gt8grJ)czC!e>zJzSZOB+IQR~I2KhNp+TUZrjUPlmiq@V-Mln-dDt;6nq{ z)?FM5V`=siDya@NB@O6h>hKzs#~zb`R5uFaFllisVR>HHR|R;aw{ecc>7%wbO!ydiYRD+3`y z3Aagkzy-Yw?o}#(tDmK&7PjkKD|n63Tjrf4Hr#h*7hS{Tc)J8d3UH0`5CHTt0j^W| zQbhp}^D6?Ijq`~;r$rq|U~S3+80cldJn#$v%n*#sX+jpHxB|ASD3f`ijv6 z9is`l2{7)P8yD2nunQwVI2j~ti@KLe0EYr#gI=ZtT`I4-eFbR*Q^XfFsA8Cf+koSX ztQLqP0`3?kjPeaifD1a{f^Hh+n?&EpxMOwj(g`C69!^jx$tvX`3Fu{#zV&;d6vk&e)GA4+%jpo3VGPe1jz%z}_)SXttow5mG7Pk0}ocK`)c=Jt|-K z6)mEbMIo%%kC=Z0m7BW6>?rU*${Bl~a7lSSpgiOOy-c2;Q2FZ>&7~w-ShOu97IW(O z6c*iw)Rlzz5#<39^fHJaQ~CctqRB_*^MnRcuq8E3zaa(akOFkm;{Sx`RV}GibEGq; zAjx>^eqyN^m#AYo>_4SE0E1pO>_4OOswN2lQ_>=!<#-9RjDYg^&QP}!?x&OoT+qwl z{#@1j{d!++WL|D&BjIs4w|72-wXWx`>fZzi!!Q$H6K;JuCBINu*R{n3-*gdCqP-JJfI0Xi*^jj`(90%h0-r zuInGG$l&@GveEH@$w5;S*$+&LV(`Y^MO6{5hm^U1{2lRAg`;Hu$q}LtHik{!Zav6; zXYV76BN~2M48vMD9-VXSQF(u3NLYae12SO1O2Nuie0tlX#MeA zQwbc+fkgsw#8oRv?Tu5FTTAO;q&NVrHJtI8ozAsAkqVu0g=VUud5%tMZmp+sEhfXL zaiS59t7f*lCySfN@S%b9Nx@LARw7F89Xdxtb5Fr@6;JXQ}vwjKYHL~+8mVb zq%Xa>|D3-<>t85uj+Od1yiYi$wIEbib1>vzF+85Dn+)4R>LH+hdA;$y>RunI$dCYG}T~i;8E0>|RyUx^}}ZeP%JHHH$4!>4A_nyG(gQQ`ZiC zD;u%W`A~OD60zcQiH&uFNmu>G&ARi9KmtMww3(0rrHK1MC?CLOYYyGg6c4JY$n zqh!O$@Sy=-2I<`-e)6U-03p4`iAMTA-*{R(4aJ=4?WON$&@}HdIa|JXdUC8nOq2-| zyF^Tl6IiyM4MQiw$+0EqDcaUazq2;u*X`ErQP6evOgZ%Q%!{A@FLswB8 zp`G&OAoX}a<~6hBs5YdSB9nb`kBPX~V2T{p8WeLRtPb9<1!-KXD3qnx)L@+{=HPcm zl0$@IC#v--YG4j|Gc9NoEXT_l&KMEI%&)&RtAt8U<(f%0PmMXdqz@%lTBffo)9GB} z$+oIBo-=fKXX?lIRIZCM%jW@w+F%s%o3f(7+sWdNimG6m*d8q7km-PN@_ppjf>@GvXi)RQ`xcN5!4JO-tINBKGy<^IOsV} z!gFmX()F^WA>GVjz0_OP`JT~)E$KqDbrLHhH3VakG&a7$2q0KQ>A93&*~#K7tOJeZ zm0ikorbN8{*3A=21=&QwA}{#x=UJ^Ia*8L$o$9E}DgLC^QyFi*t7I!-pxNr#&91zw zEH57#1DOEDPc09W8MG^HWF|4*_&;OdrDbO;V?Xg!#N#H6r-pC^uI4_XHB_5{GIRG rquh9*J94+ux9J9blH#toPH;PLOmf9x^7E||)DX8(EASQGM)dyz#k*kJ diff --git a/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.csprojAssemblyReference.cache b/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.csprojAssemblyReference.cache index 8dd12a8ced0cc0e5e003f20210cecc01390d7e49..24ada5a65afb4fe4ca10b037a0d0ac8a4bb66644 100644 GIT binary patch literal 14799 zcmeHO33L;68qcInn`wcTV+FBjsel3{G-=a|RxIUGXu$@MBTy#EBn-{fnQ5_dlxyWu zij?Z2qCvpr5DMz9=R#5NcyE2WuE4S!yL71**8}9ag6DqUOq$Gufs{7yf$w$R`+u3^ zH{bvJzW?ukPgI0TrTP^P{Kcb_8pNz3#>#p)kDb?zs9>Bn-6V=D<8*}{mQGEcLbDv> zap&ueI=wDUmzJ7bSmER=SUTTLSMV(5Oii9xVR16nadg!rPZ{mbx1^=pjrJ_NUT-s| zQR$QhGwZ9IhpCF=X_twocp6cpopI8_RaBDr2&`~AX)6yVaJsP+H;1PzP8zKyqd-KX zxF$3P0CD3zlx;L+GvX)T}nlrm-j)N1tHXEQs(hccmCu1?YX`bUL zw~brO2$fax(YW(+3BkocCBEQ_%&j~i5g8U8Yc@H1R4GnLTMwAZ4E0ab!g z-NC3mZ8J*N=0&!6BL56ZSXrgC#f2ug+M{tgVC7OoF-uwE-v zZI;$iUIuzg0~E1R*EI%lIQ-KUco|fmh{GCeNXT1I^hD7M#jPlMqqq%45{f=3Zbxwk ziewahQKX=_6GcA|8dNnn?67d~=$0WNj*grIrl#D{Q1`hQ4u_1KhUF`1R&95~ z=u538RHQaFRI_OgjP-1~0*<3y7H3s4<)Q=Q5gbnvC{%3Xsr04Cw8CJtKU~Mf#SFlo z$_yN8rKRh0R0O(@#;bljbbI-q{ouP06&G_i{z$!1*Hho=`B-TL8~^?ot3eTm;`6 z3dU+6fR`Und*0$N?g9}!A_Uy25N;F)Mj+Cu8B()#GqbEL%4jua>T}XF=(Ow{4Kn2nmH6#P#o=s3Z(XyMS08kD5!fHyOVNou~u&d#aibertm(sm5GIuIR#D!2@qlK z#A~fEYO=u8C$@~P@=^?|p*R!I#xk4<>tr0h>8&ULB_!i=RS5GvElay7ua~x|h}c-1 z@~NVtu$n_{C)DaL{;2q;c3Lf=H3kAD87;TeeFnxeEzQ7K(L4{!@N-;wt$oX%ljsm* zVVn$KMG(X*L_k4s(mIBA(=1~ZCa)%%pRJ!U<9eE=)Z|cfWM}6yXCkqL1~6tMoW)Bf zj^rq~L5@Z-1_Z_%526}G^lPw;(6%t6p4dv9WtWz!a9*m4eif9pFZwc_m;*G%_rp)I z#Gl}522Pw?S7kD&wDimzV}{Y5M(HgyXe7sh&|rK2+paq5o2lxE1RM`Ry*tSFK>y6? z6o%ns5f(-?HOAp^%~QKtQ zLc3@`9Sy<3i0H-)IO|!YyvRYC;UPH_#VinVH#SS%@X6hv06qOGN`r0)Yc8!Ri7boV zXff&yc70}6rrwGrL0Uj)aG2Cld!b*BOvfkIUMmDOMX_GVrY)omi$Q2f?QkY1$3`hR z{vam@186$D{vc1R&L&cf!6{M)Vk5Ck>pT9uuw0tERmiuoYqK@!ECF=l0K7ry%5OQkFky67Ur^Zu&wuDh0DR$u2M+ZA1%#Noas6!PCP_}j= z?|Ghqm&i>ho&_Oi3ngXCY&lyt1Dd_g%p%1e+zabqPlVa?JOovFRYlGo@q+( zD7Jx+^Jcn~H`C<2*$!xDD|jPj6CuVB1(2(_oFbaeZl3LXdHn$eT$9`}TgR7)) zU1BQGtD@0ZLNzdZ!>7%=2b=2mZ#{S4H_-H2Tzsd9~!>D^v<(WKVMdUvP*XVrq_=(*8dvC zp3f_C{JQY`i65t)-2LCgk;^-uDLJszd%F7Yh{-QDfAjHxgVwHRQOVuEG>Z#K=CV4K&Z5EppVi+ zgPUc)&3#eaXKwjiSSxJx;3^p;l~(7Mym;r?)rWf# z7f#m2?O)etOVOZbhwVJkqj%5u7F|3{pPJRA8Ta@{);II!zBZiQm0N!TMT(Nm+AAK1hnYFuJ_^~1(7mmYs3c2&}*6@xx`GXXc+1g7kMy()X) zsXem^+;u~?Xdp?C1l+{(K?>{C4W~cuw8`jC;Iyhi%ZSOwsqu#D*HHljqPdi6_ZJO63zUR{qr_5F@823W@3*Xy)FXs$uyhVHK(f-Ge zAD!NP96R*W&$6mAs*b*YtlzrJ8&hh(Hq{z57WJs6(hpB8_$+58`#~YS)v&nctqTWg zzO5b9&01c%=DlGr&3Gcy)AiA*jYZqO-T$AIJ2yNw|8N5C#tE*@|L#xSE;y(L0=MSS zRV2FfAS`forK>i$>w^^5)f-M#8myF46*rm`saggPe2{K_r*IcU?i6l`C_05};XX)V zor?Y24-X#NbNu`k-SV9Ydw%YGuKDM=U)HSnF{;wJZ2ZRcx4$&(^QVp!cVp*G7}#v+vi=LrmuH*%Hf;N*`GUAw4)li#JH2ss>1YEEeoZ36Qw7Tn&xLg8P z@6jpjbEI`J0oQPS!p(ly?o)3#{cxdKUQ)Q~tXNWu;eij*&0kVWz)E>ZErmOZPOX3k zK1gAmy5S|Y60DS$6fWT@I)#fiK1eseQ@FAucM6x86rIB51|OuG-zi)ZkvoM8B#KVq ztk?(X=64FG?sBJa9f|YWow!s}mr*QJ-gA~@Op$|T}Bh~X^^KGA! zHHFb5-dx+Qaz)DN_)h!w&8nMW*xbE@@6z;K>V`vWPp<8`FtNl`w)))%-a3=i^v~S8 zeyXd#cyjjrOnCusx;!>-{;Xw=DMwx^KTy*z>X%+_eH}HnA%F466(8A#KH5;8Q+&=b z!5z~2T+Xr5x>Pk{K>$Is(Q5GdpeSLqxKQmL1clOwVc1fNnY`4@fgFh~NVfAfrHl zu^vdUe4Okn;KTCa|NsA!C&<`MzAYdkDhL!0MmJ>g8D5jgxzfT+{5+Ed%`_$p7&Qum ej0CxrX@h-yz2H?YD;B=VsyeoUEI=`2zzqP5uUz~9 diff --git a/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll b/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll index 7b675e3a3..4e1a0ed16 100644 --- a/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll +++ b/Economy.Shared/obj/Debug/netstandard2.0/Economy.Shared.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8ca1d4c0c68f6b21705d37d36cb7dbb4003901104da6fc4d587423f0f2f441b4 -size 5632 +oid sha256:78cb437704c4ec85ac5169a5b6d265f04a3da0b9acd8120c2c29f107e929f9ca +size 1002496 diff --git a/Economy.Shared/obj/Economy.Shared.csproj.nuget.cache b/Economy.Shared/obj/Economy.Shared.csproj.nuget.cache index c10b0763c..f0b91eaae 100644 --- a/Economy.Shared/obj/Economy.Shared.csproj.nuget.cache +++ b/Economy.Shared/obj/Economy.Shared.csproj.nuget.cache @@ -1,5 +1,5 @@ { "version": 1, - "dgSpecHash": "gOZvMY/rXKRimS5OPipJWHFewAeV+biJNPpd6+iIECbS5UBPxqHfsIqIlbdw1EQczXFk8cGfpQ6zen4Zj+hDhg==", + "dgSpecHash": "Kg3SIMORPjLsPm+fgiKkmZ9mt5ieSXFo/TEePNnMj5RaICb3tWA1QgpJ9KqFTgVvdrx3jtxkHtjpxWX1kzdQLQ==", "success": true } \ No newline at end of file diff --git a/Economy.Shared/obj/Economy.Shared.csproj.nuget.dgspec.json b/Economy.Shared/obj/Economy.Shared.csproj.nuget.dgspec.json index 12bf60841..426bb44eb 100644 --- a/Economy.Shared/obj/Economy.Shared.csproj.nuget.dgspec.json +++ b/Economy.Shared/obj/Economy.Shared.csproj.nuget.dgspec.json @@ -39,20 +39,19 @@ "frameworks": { "netstandard2.0": { "dependencies": { - "MagicOnion.Abstractions": { + "MessagePack": { "target": "Package", - "version": "[3.0.0, )" - }, - "MagicOnion.MSBuild.Tasks": { - "suppressParent": "All", - "target": "Package", - "version": "[3.0.0, )" + "version": "[2.1.90, )" }, "MessagePack.MSBuild.Tasks": { "suppressParent": "All", "target": "Package", "version": "[2.0.323, )" }, + "Microsoft.Extensions.Logging": { + "target": "Package", + "version": "[5.0.0-preview.1.20120.4, )" + }, "NETStandard.Library": { "suppressParent": "All", "target": "Package", @@ -62,6 +61,10 @@ "Newtonsoft.Json": { "target": "Package", "version": "[10.0.3, )" + }, + "Remotion.Linq": { + "target": "Package", + "version": "[2.2.0, )" } }, "imports": [ diff --git a/Economy.Shared/obj/Economy.Shared.csproj.nuget.g.props b/Economy.Shared/obj/Economy.Shared.csproj.nuget.g.props index 6cd42f3a2..beccea3f8 100644 --- a/Economy.Shared/obj/Economy.Shared.csproj.nuget.g.props +++ b/Economy.Shared/obj/Economy.Shared.csproj.nuget.g.props @@ -14,7 +14,6 @@ - C:\Users\rwvens\.nuget\packages\newtonsoft.json\10.0.3 diff --git a/Economy.Shared/obj/project.assets.json b/Economy.Shared/obj/project.assets.json index 23032ec8d..be80f16ee 100644 --- a/Economy.Shared/obj/project.assets.json +++ b/Economy.Shared/obj/project.assets.json @@ -2,46 +2,15 @@ "version": 3, "targets": { ".NETStandard,Version=v2.0": { - "Grpc.Core.Api/2.25.0": { + "MessagePack/2.1.90": { "type": "package", "dependencies": { - "System.Memory": "4.5.3" - }, - "compile": { - "lib/netstandard2.0/Grpc.Core.Api.dll": {} - }, - "runtime": { - "lib/netstandard2.0/Grpc.Core.Api.dll": {} - } - }, - "MagicOnion.Abstractions/3.0.0": { - "type": "package", - "dependencies": { - "Grpc.Core.Api": "2.25.0", - "MessagePack": "2.0.323" - }, - "compile": { - "lib/netstandard2.0/MagicOnion.Abstractions.dll": {} - }, - "runtime": { - "lib/netstandard2.0/MagicOnion.Abstractions.dll": {} - } - }, - "MagicOnion.MSBuild.Tasks/3.0.0": { - "type": "package", - "build": { - "build/MagicOnion.MSBuild.Tasks.props": {} - } - }, - "MessagePack/2.0.323": { - "type": "package", - "dependencies": { - "MessagePack.Annotations": "2.0.323", + "MessagePack.Annotations": "2.1.90", + "Microsoft.Bcl.AsyncInterfaces": "1.0.0", "System.Memory": "4.5.3", "System.Reflection.Emit": "4.6.0", "System.Reflection.Emit.Lightweight": "4.6.0", "System.Runtime.CompilerServices.Unsafe": "4.5.2", - "System.Runtime.Serialization.Primitives": "4.3.0", "System.Threading.Tasks.Extensions": "4.5.3" }, "compile": { @@ -51,7 +20,7 @@ "lib/netstandard2.0/MessagePack.dll": {} } }, - "MessagePack.Annotations/2.0.323": { + "MessagePack.Annotations/2.1.90": { "type": "package", "compile": { "lib/netstandard2.0/MessagePack.Annotations.dll": {} @@ -66,6 +35,18 @@ "build/MessagePack.MSBuild.Tasks.props": {} } }, + "Microsoft.Bcl.AsyncInterfaces/1.0.0": { + "type": "package", + "dependencies": { + "System.Threading.Tasks.Extensions": "4.5.2" + }, + "compile": { + "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll": {} + } + }, "Microsoft.CSharp/4.3.0": { "type": "package", "dependencies": { @@ -93,6 +74,115 @@ "lib/netstandard1.3/Microsoft.CSharp.dll": {} } }, + "Microsoft.Extensions.Configuration/5.0.0-preview.1.20120.4": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "5.0.0-preview.1.20120.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/5.0.0-preview.1.20120.4": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "5.0.0-preview.1.20120.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/5.0.0-preview.1.20120.4": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "5.0.0-preview.1.20120.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection/5.0.0-preview.1.20120.4": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "1.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0-preview.1.20120.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0-preview.1.20120.4": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Logging/5.0.0-preview.1.20120.4": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Binder": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.DependencyInjection": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.Logging.Abstractions": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.Options": "5.0.0-preview.1.20120.4" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/5.0.0-preview.1.20120.4": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll": {} + } + }, + "Microsoft.Extensions.Options/5.0.0-preview.1.20120.4": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "5.0.0-preview.1.20120.4", + "Microsoft.Extensions.Primitives": "5.0.0-preview.1.20120.4", + "System.ComponentModel.Annotations": "5.0.0-preview.1.20120.5" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Options.dll": {} + } + }, + "Microsoft.Extensions.Primitives/5.0.0-preview.1.20120.4": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.2", + "System.Runtime.CompilerServices.Unsafe": "5.0.0-preview.1.20120.5" + }, + "compile": { + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll": {} + } + }, "Microsoft.NETCore.Platforms/1.1.0": { "type": "package", "compile": { @@ -143,6 +233,28 @@ "lib/netstandard1.3/Newtonsoft.Json.dll": {} } }, + "Remotion.Linq/2.2.0": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Linq.Queryable": "4.0.1", + "System.ObjectModel": "4.0.12", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Runtime": "4.1.0", + "System.Runtime.Extensions": "4.1.0", + "System.Threading": "4.0.11" + }, + "compile": { + "lib/netstandard1.0/Remotion.Linq.dll": {} + }, + "runtime": { + "lib/netstandard1.0/Remotion.Linq.dll": {} + } + }, "System.Buffers/4.4.0": { "type": "package", "compile": { @@ -160,7 +272,7 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.3/_._": {} + "ref/netstandard1.3/System.Collections.dll": {} } }, "System.Collections.NonGeneric/4.3.0": { @@ -210,6 +322,15 @@ "lib/netstandard1.3/System.ComponentModel.dll": {} } }, + "System.ComponentModel.Annotations/5.0.0-preview.1.20120.5": { + "type": "package", + "compile": { + "ref/netstandard2.0/System.ComponentModel.Annotations.dll": {} + }, + "runtime": { + "lib/netstandard2.0/System.ComponentModel.Annotations.dll": {} + } + }, "System.ComponentModel.Primitives/4.3.0": { "type": "package", "dependencies": { @@ -258,7 +379,7 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.3/_._": {} + "ref/netstandard1.3/System.Diagnostics.Debug.dll": {} } }, "System.Dynamic.Runtime/4.3.0": { @@ -372,7 +493,7 @@ "System.Runtime.Extensions": "4.3.0" }, "compile": { - "ref/netstandard1.6/_._": {} + "ref/netstandard1.6/System.Linq.dll": {} }, "runtime": { "lib/netstandard1.6/System.Linq.dll": {} @@ -406,6 +527,25 @@ "lib/netstandard1.6/System.Linq.Expressions.dll": {} } }, + "System.Linq.Queryable/4.0.1": { + "type": "package", + "dependencies": { + "System.Collections": "4.0.11", + "System.Diagnostics.Debug": "4.0.11", + "System.Linq": "4.1.0", + "System.Linq.Expressions": "4.1.0", + "System.Reflection": "4.1.0", + "System.Reflection.Extensions": "4.0.1", + "System.Resources.ResourceManager": "4.0.1", + "System.Runtime": "4.1.0" + }, + "compile": { + "ref/netstandard1.0/System.Linq.Queryable.dll": {} + }, + "runtime": { + "lib/netstandard1.3/System.Linq.Queryable.dll": {} + } + }, "System.Memory/4.5.3": { "type": "package", "dependencies": { @@ -500,7 +640,7 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.0/_._": {} + "ref/netstandard1.0/System.Reflection.Extensions.dll": {} } }, "System.Reflection.Primitives/4.3.0": { @@ -550,7 +690,7 @@ "ref/netstandard1.5/System.Runtime.dll": {} } }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { + "System.Runtime.CompilerServices.Unsafe/5.0.0-preview.1.20120.5": { "type": "package", "compile": { "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll": {} @@ -567,7 +707,7 @@ "System.Runtime": "4.3.0" }, "compile": { - "ref/netstandard1.5/_._": {} + "ref/netstandard1.5/System.Runtime.Extensions.dll": {} } }, "System.Runtime.Handles/4.3.0": { @@ -671,7 +811,7 @@ "System.Threading.Tasks": "4.3.0" }, "compile": { - "ref/netstandard1.3/_._": {} + "ref/netstandard1.3/System.Threading.dll": {} }, "runtime": { "lib/netstandard1.3/System.Threading.dll": {} @@ -750,141 +890,10 @@ } }, "libraries": { - "Grpc.Core.Api/2.25.0": { - "sha512": "ax4qg0k4ZTlWf8PtZoU/hfbwWkgtCRIucVqqgXrRd9HYyieuilZtX6h55SwoFeW8sdNQs950gEkR5XHGStR0lQ==", + "MessagePack/2.1.90": { + "sha512": "frdAkIQyILYjAhH8Q107N77eccLjnkYr8/L+3vHeCezI0rvfCB2xiZjin936QFtskLBmgW1D9y6bKs45zddVLQ==", "type": "package", - "path": "grpc.core.api/2.25.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "grpc.core.api.2.25.0.nupkg.sha512", - "grpc.core.api.nuspec", - "lib/net45/Grpc.Core.Api.dll", - "lib/net45/Grpc.Core.Api.pdb", - "lib/net45/Grpc.Core.Api.xml", - "lib/netstandard1.5/Grpc.Core.Api.dll", - "lib/netstandard1.5/Grpc.Core.Api.pdb", - "lib/netstandard1.5/Grpc.Core.Api.xml", - "lib/netstandard2.0/Grpc.Core.Api.dll", - "lib/netstandard2.0/Grpc.Core.Api.pdb", - "lib/netstandard2.0/Grpc.Core.Api.xml" - ] - }, - "MagicOnion.Abstractions/3.0.0": { - "sha512": "dEsm+KFbH5qLqBS3BC9xELSMpqdcIQB/9jLkz82M37VRtjAR3I0wkglbsz5xrvD/kqWttB6YINz/4VVslbIOLA==", - "type": "package", - "path": "magiconion.abstractions/3.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "lib/netstandard2.0/MagicOnion.Abstractions.dll", - "lib/netstandard2.0/MagicOnion.Abstractions.xml", - "magiconion.abstractions.3.0.0.nupkg.sha512", - "magiconion.abstractions.nuspec" - ] - }, - "MagicOnion.MSBuild.Tasks/3.0.0": { - "sha512": "Mxb4ZkiLTeSXk5lYyqs4PvRNLrqJ98Aw3mL0+gsai+mqglPM28kLyTphjTgmQyOGN8cJiU40rAGL51BAu5PgUA==", - "type": "package", - "path": "magiconion.msbuild.tasks/3.0.0", - "files": [ - ".nupkg.metadata", - ".signature.p7s", - "build/MagicOnion.MSBuild.Tasks.props", - "magiconion.msbuild.tasks.3.0.0.nupkg.sha512", - "magiconion.msbuild.tasks.nuspec", - "tasks/netstandard2.0/MagicOnion.GeneratorCore.dll", - "tasks/netstandard2.0/MagicOnion.MSBuild.Tasks.dll", - "tasks/netstandard2.0/MagicOnion.MSBuild.Tasks.xml", - "tasks/netstandard2.0/Microsoft.Build.Framework.dll", - "tasks/netstandard2.0/Microsoft.Build.Utilities.Core.dll", - "tasks/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", - "tasks/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", - "tasks/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll", - "tasks/netstandard2.0/Microsoft.CodeAnalysis.dll", - "tasks/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", - "tasks/netstandard2.0/System.Buffers.dll", - "tasks/netstandard2.0/System.CodeDom.dll", - "tasks/netstandard2.0/System.Collections.Immutable.dll", - "tasks/netstandard2.0/System.Composition.AttributedModel.dll", - "tasks/netstandard2.0/System.Composition.Convention.dll", - "tasks/netstandard2.0/System.Composition.Hosting.dll", - "tasks/netstandard2.0/System.Composition.Runtime.dll", - "tasks/netstandard2.0/System.Composition.TypedParts.dll", - "tasks/netstandard2.0/System.Linq.Expressions.dll", - "tasks/netstandard2.0/System.Linq.dll", - "tasks/netstandard2.0/System.Memory.dll", - "tasks/netstandard2.0/System.Numerics.Vectors.dll", - "tasks/netstandard2.0/System.ObjectModel.dll", - "tasks/netstandard2.0/System.Reflection.Emit.ILGeneration.dll", - "tasks/netstandard2.0/System.Reflection.Emit.Lightweight.dll", - "tasks/netstandard2.0/System.Reflection.Emit.dll", - "tasks/netstandard2.0/System.Reflection.Metadata.dll", - "tasks/netstandard2.0/System.Reflection.TypeExtensions.dll", - "tasks/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", - "tasks/netstandard2.0/System.Runtime.Serialization.Primitives.dll", - "tasks/netstandard2.0/System.Text.Encoding.CodePages.dll", - "tasks/netstandard2.0/System.Threading.Tasks.Extensions.dll", - "tasks/netstandard2.0/System.Threading.Thread.dll", - "tasks/netstandard2.0/System.Threading.dll", - "tasks/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", - "tasks/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", - "tasks/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", - "tasks/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", - "tasks/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll" - ] - }, - "MessagePack/2.0.323": { - "sha512": "pGKZRAfjnHeIHk/isMQ9A42YjhXt4RrGjuwM4j6FwZOKZmISMZltk4WFdJDU7bQ3y5CEQXTjxJ/O3tdSrg+eEA==", - "type": "package", - "path": "messagepack/2.0.323", + "path": "messagepack/2.1.90", "files": [ ".nupkg.metadata", ".signature.p7s", @@ -893,21 +902,21 @@ "lib/netcoreapp2.1/MessagePack.xml", "lib/netstandard2.0/MessagePack.dll", "lib/netstandard2.0/MessagePack.xml", - "messagepack.2.0.323.nupkg.sha512", + "messagepack.2.1.90.nupkg.sha512", "messagepack.nuspec" ] }, - "MessagePack.Annotations/2.0.323": { - "sha512": "b4fN2g9kbtC6ywNOBtx3pAmZQst6Dow7sQEGZYzaf45EVXU1WYiektoKdC9o4OIkyo1FejQ5JdiQo3C9CSufzg==", + "MessagePack.Annotations/2.1.90": { + "sha512": "YnS4qdOMFJuC8TDvXK8ECjWn+hI/B6apwMSgQsiynVXxsvFiiSyun7OXgVT7KxkR8qLinFuASzoG/5zv3kemwQ==", "type": "package", - "path": "messagepack.annotations/2.0.323", + "path": "messagepack.annotations/2.1.90", "files": [ ".nupkg.metadata", ".signature.p7s", "LICENSE", "lib/netstandard2.0/MessagePack.Annotations.dll", "lib/netstandard2.0/MessagePack.Annotations.xml", - "messagepack.annotations.2.0.323.nupkg.sha512", + "messagepack.annotations.2.1.90.nupkg.sha512", "messagepack.annotations.nuspec" ] }, @@ -1010,6 +1019,30 @@ "tasks/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll" ] }, + "Microsoft.Bcl.AsyncInterfaces/1.0.0": { + "sha512": "K63Y4hORbBcKLWH5wnKgzyn7TOfYzevIEwIedQHBIkmkEBA9SCqgvom+XTuE+fAFGvINGkhFItaZ2dvMGdT5iw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/1.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.1.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "ref/net461/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "ref/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "Microsoft.CSharp/4.3.0": { "sha512": "P+MBhIM0YX+JqROuf7i306ZLJEjQYA9uUyRDE+OqwUI5sh41e2ZbPQV3LfAPh+29cmceE1pUffXsGfR4eMY3KA==", "type": "package", @@ -1068,6 +1101,150 @@ "ref/xamarinwatchos10/_._" ] }, + "Microsoft.Extensions.Configuration/5.0.0-preview.1.20120.4": { + "sha512": "sxiJYEYRm1XEdndAyXdOTwSnT3cV7XDtyJlfs7bEVC4BZABrblopCmwVbLjE6/ZjaDxmuaPr8cVyYAnDM55iIg==", + "type": "package", + "path": "microsoft.extensions.configuration/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.configuration.nuspec" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/5.0.0-preview.1.20120.4": { + "sha512": "52otpppSgAezHQ8v1TEfkNckX/qXJQAYShl97A03GG8kHTWkqS8Bv3zSLXJZ3084qj822eNcylKz/lMZkf/9CA==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Configuration.Binder/5.0.0-preview.1.20120.4": { + "sha512": "5gC3Rr0gj1r/olVBDMAqE5uL/2SBXoEU2iO3yqvT/uct94TwHBlvw9R96HQeDNBGlPn+DhBaX9XSSXb3ojzzsw==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec" + ] + }, + "Microsoft.Extensions.DependencyInjection/5.0.0-preview.1.20120.4": { + "sha512": "CEmbKkrUhfIIDV9m2dhPrKfPqW+WmB3aAEZhWLqcVkX0On7f2R0FTWCSvWqgZkrY0g5+xaGdXw6CofIWmIyXng==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net461/Microsoft.Extensions.DependencyInjection.dll", + "lib/net461/Microsoft.Extensions.DependencyInjection.xml", + "lib/netcoreapp5.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/5.0.0-preview.1.20120.4": { + "sha512": "nR8JGs9F4uKUJHA3rXZYVpU4kzQ7G38h3rYq7KgPr3vEWGuCFBL88ZMQMRNRXnBi5kogs9ZQtXZ6D8lo+ccv7A==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Logging/5.0.0-preview.1.20120.4": { + "sha512": "v/+7h5o7u980DKyx8sVP618InuzV5nsZa14NiN22sFs3J0WsuJUlBNi/2q3BymPGUKhW5a51J5Bqa/CWHJ0TYQ==", + "type": "package", + "path": "microsoft.extensions.logging/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Logging.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.logging.nuspec" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/5.0.0-preview.1.20120.4": { + "sha512": "ChPPvivkV7B0nKuTKmhjA7R+4BfOPp8a/J3BzbHpSJRkCX6If9CGenP/5liLN9KuzTE+yCdK8H3n/JgLvpYS1w==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec" + ] + }, + "Microsoft.Extensions.Options/5.0.0-preview.1.20120.4": { + "sha512": "xL0TKJZ9DTWSZWyhtux5gjxrXkBOlLr0Ga0MaprkBJFe4HBGNBz1qR5uiCqOQvmTCTeuajDCh51YHyLgby44lQ==", + "type": "package", + "path": "microsoft.extensions.options/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Options.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.options.nuspec" + ] + }, + "Microsoft.Extensions.Primitives/5.0.0-preview.1.20120.4": { + "sha512": "TXN/iw+ZLtReje7mljcf7wUr3iiOx5ffCEYLu2T7st8N5hclsswbhFovw4pIUjrpj+NIdUhr6SCvTSGFhZvewA==", + "type": "package", + "path": "microsoft.extensions.primitives/5.0.0-preview.1.20120.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/netcoreapp5.0/Microsoft.Extensions.Primitives.dll", + "lib/netcoreapp5.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.5.0.0-preview.1.20120.4.nupkg.sha512", + "microsoft.extensions.primitives.nuspec" + ] + }, "Microsoft.NETCore.Platforms/1.1.0": { "sha512": "kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", "type": "package", @@ -1255,6 +1432,27 @@ "tools/install.ps1" ] }, + "Remotion.Linq/2.2.0": { + "sha512": "fK/76UmpC0FXBlGDFVPLJHQlDLYnGC+XY3eoDgCgbtrhi0vzbXDQ3n/IYHhqSKqXQfGw/u04A1drWs7rFVkRjw==", + "type": "package", + "path": "remotion.linq/2.2.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/Remotion.Linq.XML", + "lib/net35/Remotion.Linq.dll", + "lib/net40/Remotion.Linq.XML", + "lib/net40/Remotion.Linq.dll", + "lib/net45/Remotion.Linq.XML", + "lib/net45/Remotion.Linq.dll", + "lib/netstandard1.0/Remotion.Linq.dll", + "lib/netstandard1.0/Remotion.Linq.xml", + "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.dll", + "lib/portable-net45+win+wpa81+wp80/Remotion.Linq.xml", + "remotion.linq.2.2.0.nupkg.sha512", + "remotion.linq.nuspec" + ] + }, "System.Buffers/4.4.0": { "sha512": "AwarXzzoDwX6BgrhjoJsk6tUezZEozOT5Y9QKF94Gl4JK91I4PIIBkBco9068Y9/Dra8Dkbie99kXB8+1BaYKw==", "type": "package", @@ -1482,6 +1680,96 @@ "system.componentmodel.nuspec" ] }, + "System.ComponentModel.Annotations/5.0.0-preview.1.20120.5": { + "sha512": "GeaNNeis4umcr8dJH3nyeQH/lq7KsdOJjSegDaurBRJukOpW8fj1vervj1zix9ZJNT6UzphgpeDjS0BLA1OLqg==", + "type": "package", + "path": "system.componentmodel.annotations/5.0.0-preview.1.20120.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net45/_._", + "lib/net461/System.ComponentModel.Annotations.dll", + "lib/netcore50/System.ComponentModel.Annotations.dll", + "lib/netstandard1.4/System.ComponentModel.Annotations.dll", + "lib/netstandard2.0/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.dll", + "lib/netstandard2.1/System.ComponentModel.Annotations.xml", + "lib/portable-net45+win8/_._", + "lib/win8/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net45/_._", + "ref/net461/System.ComponentModel.Annotations.dll", + "ref/net461/System.ComponentModel.Annotations.xml", + "ref/netcore50/System.ComponentModel.Annotations.dll", + "ref/netcore50/System.ComponentModel.Annotations.xml", + "ref/netcore50/de/System.ComponentModel.Annotations.xml", + "ref/netcore50/es/System.ComponentModel.Annotations.xml", + "ref/netcore50/fr/System.ComponentModel.Annotations.xml", + "ref/netcore50/it/System.ComponentModel.Annotations.xml", + "ref/netcore50/ja/System.ComponentModel.Annotations.xml", + "ref/netcore50/ko/System.ComponentModel.Annotations.xml", + "ref/netcore50/ru/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netcore50/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/System.ComponentModel.Annotations.dll", + "ref/netstandard1.1/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.1/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/System.ComponentModel.Annotations.dll", + "ref/netstandard1.3/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.3/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/System.ComponentModel.Annotations.dll", + "ref/netstandard1.4/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/de/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/es/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/fr/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/it/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ja/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ko/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/ru/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hans/System.ComponentModel.Annotations.xml", + "ref/netstandard1.4/zh-hant/System.ComponentModel.Annotations.xml", + "ref/netstandard2.0/System.ComponentModel.Annotations.dll", + "ref/netstandard2.0/System.ComponentModel.Annotations.xml", + "ref/netstandard2.1/System.ComponentModel.Annotations.dll", + "ref/netstandard2.1/System.ComponentModel.Annotations.xml", + "ref/portable-net45+win8/_._", + "ref/win8/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.componentmodel.annotations.5.0.0-preview.1.20120.5.nupkg.sha512", + "system.componentmodel.annotations.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, "System.ComponentModel.Primitives/4.3.0": { "sha512": "j8GUkCpM8V4d4vhLIIoBLGey2Z5bCkMVNjEZseyAlm4n5arcsJOeI3zkUP+zvZgzsbLTYh4lYeP/ZD/gdIAPrw==", "type": "package", @@ -2131,6 +2419,65 @@ "system.linq.expressions.nuspec" ] }, + "System.Linq.Queryable/4.0.1": { + "sha512": "Yn/WfYe9RoRfmSLvUt2JerP0BTGGykCZkQPgojaxgzF2N0oPo+/AhB8TXOpdCcNlrG3VRtsamtK2uzsp3cqRVw==", + "type": "package", + "path": "system.linq.queryable/4.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ThirdPartyNotices.txt", + "dotnet_library_license.txt", + "lib/monoandroid10/_._", + "lib/monotouch10/_._", + "lib/net45/_._", + "lib/netcore50/System.Linq.Queryable.dll", + "lib/netstandard1.3/System.Linq.Queryable.dll", + "lib/portable-net45+win8+wp8+wpa81/_._", + "lib/win8/_._", + "lib/wp80/_._", + "lib/wpa81/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/monoandroid10/_._", + "ref/monotouch10/_._", + "ref/net45/_._", + "ref/netcore50/System.Linq.Queryable.dll", + "ref/netcore50/System.Linq.Queryable.xml", + "ref/netcore50/de/System.Linq.Queryable.xml", + "ref/netcore50/es/System.Linq.Queryable.xml", + "ref/netcore50/fr/System.Linq.Queryable.xml", + "ref/netcore50/it/System.Linq.Queryable.xml", + "ref/netcore50/ja/System.Linq.Queryable.xml", + "ref/netcore50/ko/System.Linq.Queryable.xml", + "ref/netcore50/ru/System.Linq.Queryable.xml", + "ref/netcore50/zh-hans/System.Linq.Queryable.xml", + "ref/netcore50/zh-hant/System.Linq.Queryable.xml", + "ref/netstandard1.0/System.Linq.Queryable.dll", + "ref/netstandard1.0/System.Linq.Queryable.xml", + "ref/netstandard1.0/de/System.Linq.Queryable.xml", + "ref/netstandard1.0/es/System.Linq.Queryable.xml", + "ref/netstandard1.0/fr/System.Linq.Queryable.xml", + "ref/netstandard1.0/it/System.Linq.Queryable.xml", + "ref/netstandard1.0/ja/System.Linq.Queryable.xml", + "ref/netstandard1.0/ko/System.Linq.Queryable.xml", + "ref/netstandard1.0/ru/System.Linq.Queryable.xml", + "ref/netstandard1.0/zh-hans/System.Linq.Queryable.xml", + "ref/netstandard1.0/zh-hant/System.Linq.Queryable.xml", + "ref/portable-net45+win8+wp8+wpa81/_._", + "ref/win8/_._", + "ref/wp80/_._", + "ref/wpa81/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.linq.queryable.4.0.1.nupkg.sha512", + "system.linq.queryable.nuspec" + ] + }, "System.Memory/4.5.3": { "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", "type": "package", @@ -2819,15 +3166,18 @@ "system.runtime.nuspec" ] }, - "System.Runtime.CompilerServices.Unsafe/4.5.2": { - "sha512": "wprSFgext8cwqymChhrBLu62LMg/1u92bU+VOwyfBimSPVFXtsNqEWC92Pf9ofzJFlk4IHmJA75EDJn1b2goAQ==", + "System.Runtime.CompilerServices.Unsafe/5.0.0-preview.1.20120.5": { + "sha512": "vAVVRGUm4plmUFqwuXZ9OzfmYU6CEOlD7W4PlOs1wPyWj3JDi00rb9KK9cS/jwsoSmZEzzE6PG74JyYa88w4kg==", "type": "package", - "path": "system.runtime.compilerservices.unsafe/4.5.2", + "path": "system.runtime.compilerservices.unsafe/5.0.0-preview.1.20120.5", "files": [ ".nupkg.metadata", ".signature.p7s", + "Icon.png", "LICENSE.TXT", "THIRD-PARTY-NOTICES.TXT", + "lib/net45/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net45/System.Runtime.CompilerServices.Unsafe.xml", "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.dll", "lib/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.xml", "lib/netstandard1.0/System.Runtime.CompilerServices.Unsafe.dll", @@ -2838,7 +3188,9 @@ "ref/netstandard1.0/System.Runtime.CompilerServices.Unsafe.xml", "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", "ref/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", - "system.runtime.compilerservices.unsafe.4.5.2.nupkg.sha512", + "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.dll", + "ref/netstandard2.1/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.5.0.0-preview.1.20120.5.nupkg.sha512", "system.runtime.compilerservices.unsafe.nuspec", "useSharedDesignerContext.txt", "version.txt" @@ -3661,11 +4013,12 @@ }, "projectFileDependencyGroups": { ".NETStandard,Version=v2.0": [ - "MagicOnion.Abstractions >= 3.0.0", - "MagicOnion.MSBuild.Tasks >= 3.0.0", + "MessagePack >= 2.1.90", "MessagePack.MSBuild.Tasks >= 2.0.323", + "Microsoft.Extensions.Logging >= 5.0.0-preview.1.20120.4", "NETStandard.Library >= 2.0.3", - "Newtonsoft.Json >= 10.0.3" + "Newtonsoft.Json >= 10.0.3", + "Remotion.Linq >= 2.2.0" ] }, "packageFolders": { @@ -3707,20 +4060,19 @@ "frameworks": { "netstandard2.0": { "dependencies": { - "MagicOnion.Abstractions": { + "MessagePack": { "target": "Package", - "version": "[3.0.0, )" - }, - "MagicOnion.MSBuild.Tasks": { - "suppressParent": "All", - "target": "Package", - "version": "[3.0.0, )" + "version": "[2.1.90, )" }, "MessagePack.MSBuild.Tasks": { "suppressParent": "All", "target": "Package", "version": "[2.0.323, )" }, + "Microsoft.Extensions.Logging": { + "target": "Package", + "version": "[5.0.0-preview.1.20120.4, )" + }, "NETStandard.Library": { "suppressParent": "All", "target": "Package", @@ -3730,6 +4082,10 @@ "Newtonsoft.Json": { "target": "Package", "version": "[10.0.3, )" + }, + "Remotion.Linq": { + "target": "Package", + "version": "[2.2.0, )" } }, "imports": [ diff --git a/Economy.Shared/obj/project.packagespec.json b/Economy.Shared/obj/project.packagespec.json index 37187f2a1..c4a598407 100644 --- a/Economy.Shared/obj/project.packagespec.json +++ b/Economy.Shared/obj/project.packagespec.json @@ -29,20 +29,19 @@ "frameworks": { "netstandard2.0": { "dependencies": { - "MagicOnion.Abstractions": { + "MessagePack": { "target": "Package", - "version": "[3.0.0, )" - }, - "MagicOnion.MSBuild.Tasks": { - "suppressParent": "All", - "target": "Package", - "version": "[3.0.0, )" + "version": "[2.1.90, )" }, "MessagePack.MSBuild.Tasks": { "suppressParent": "All", "target": "Package", "version": "[2.0.323, )" }, + "Microsoft.Extensions.Logging": { + "target": "Package", + "version": "[5.0.0-preview.1.20120.4, )" + }, "NETStandard.Library": { "suppressParent": "All", "target": "Package", @@ -52,6 +51,10 @@ "Newtonsoft.Json": { "target": "Package", "version": "[10.0.3, )" + }, + "Remotion.Linq": { + "target": "Package", + "version": "[2.2.0, )" } }, "imports": [ diff --git a/MessagePack.csproj b/MessagePack.csproj index 4f52b0786..7395a0113 100644 --- a/MessagePack.csproj +++ b/MessagePack.csproj @@ -414,12 +414,6 @@ C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Grpc.Core.Api/lib/net45/Grpc.Core.Api.dll - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.dll - - - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/RethinkDb.Driver.Linq.dll - C:/Users/rwvens/Documents/GitHub/Aetheria-Economy/Assets/Plugins/Newtonsoft.Json.dll diff --git a/README.md b/README.md index e5df44e1d..190593645 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Once we have built a persistent universe with a dynamic economy, we will begin r ## Architecture -There are two solutions in this repository. One is a Unity project containing the desktop client for Aetheria, and the other is a .NET Core server application intended to run on Linux cloud servers. There is some code shared between them, located at [Assets/Scripts/ServerShared](Assets/Scripts/ServerShared), defining a common protocol and data serialization format. Client-Server communication is implemented using [MagicOnion](https://github.com/Cysharp/MagicOnion), an RPC framework that transmits [MessagePack](https://github.com/neuecc/MessagePack-CSharp) over the wire. +There are two solutions in this repository. One is a Unity project containing the desktop client for Aetheria, and the other is a .NET Core server application intended to run on Linux cloud servers. There is some code shared between them, located at [Assets/Scripts/ServerShared](Assets/Scripts/ServerShared), defining a common protocol and data serialization format. Client-Server communication is implemented using [LiteNetLib](https://github.com/RevenantX/LiteNetLib), a reliable UDP transport library which we use to transmit [MessagePack](https://github.com/neuecc/MessagePack-CSharp) over the wire. Aetheria uses [RethinkDB](https://rethinkdb.com/) for data persistence. To make this possible, all persistent data is marked with attributes for both MessagePack and [JSON.Net](https://www.newtonsoft.com/json) serialization. During operation, the client does not communicate with the database server directly, only the game server does that; the game server caches data relevant to the game and sends it to the clients.