Zoadian 11 rokov pred
rodič
commit
3ab62101f8

+ 94 - 89
source/derelict/nanomsg/nanomsg.d

@@ -1,90 +1,95 @@
-/*
-
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license ( the "Software" ) to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
-
-*/
-module derelict.nanomsg.nanomsg;
-
-public {
-    import derelict.nanomsg.types;
-    import derelict.nanomsg.functions;
-}
-
-private {
-    import derelict.util.loader;
-    import derelict.util.system;
-
-    static if( Derelict_OS_Windows )
-        enum libNames = "nanomsg.dll";
-    else
-        static assert( 0, "Need to implement Nanomsg2 libNames for this operating system." );
-}
-
-/*
-This function is not part of the public interface,  but Nanomsg expects it to be called before any subsystems have been intiailized.
-Normally, this happens via linking with libNanomsgmain, but since that doesn't happen when using Derelict, then the loader must
-load this function and call it before the load method returns. Otherwise, bad things can happen.
-*/
-private extern( C ) nothrow alias da_Nanomsg_SetMainReady = void function();
-
-class DerelictNanomsgLoader : SharedLibLoader {
-      public this() {
-            super( libNames );
-      }
-
-      protected override void loadSymbols() {
-            bindFunc(cast(void**)&nanomsgErrno, "nn_errno");
-            bindFunc(cast(void**)&nanomsgStrerror, "nn_strerror");
-            bindFunc(cast(void**)&nanomsgSymbol, "nn_symbol");
-            bindFunc(cast(void**)&nanomsgSymbolInfo, "nn_symbol_info");
-            bindFunc(cast(void**)&nanomsgTerm, "nn_term");
-            bindFunc(cast(void**)&nanomsgAllocmsg, "nn_allocmsg");
-            bindFunc(cast(void**)&nanomsgFreemsg, "nn_freemsg");
-            bindFunc(cast(void**)&nanomsgSocket, "nn_socket");
-            bindFunc(cast(void**)&nanomsgClose, "nn_close");
-            bindFunc(cast(void**)&nanomsgSetsockopt, "nn_setsockopt");
-            bindFunc(cast(void**)&nanomsgGetsockopt, "nn_getsockopt");
-            bindFunc(cast(void**)&nanomsgBind, "nn_bind");
-            bindFunc(cast(void**)&nanomsgConnect, "nn_connect");
-            bindFunc(cast(void**)&nanomsgShutdown, "nn_shutown");
-            bindFunc(cast(void**)&nanomsgSend, "nn_send");
-            bindFunc(cast(void**)&nanomsgRecv, "nn_recv");
-            bindFunc(cast(void**)&nanomsgSendmsg, "nn_sendmsg");
-            bindFunc(cast(void**)&nanomsgRecvMsg, "nn_recvmsg");
-            bindFunc(cast(void**)&nanomsgPoll, "nn_poll");
-            bindFunc(cast(void**)&nanomsgDevice, "nn_device");
-      }
-}
-
-__gshared DerelictNanomsgLoader DerelictNanomsg;
-
-shared static this() {
-    DerelictNanomsg = new DerelictNanomsgLoader();
-}
-
-shared static ~this()
-{
-    DerelictNanomsg.unload();
+/*
+
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license ( the "Software" ) to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+*/
+module derelict.nanomsg.nanomsg;
+
+public {
+    import derelict.nanomsg.types;
+    import derelict.nanomsg.functions;
+}
+
+private {
+    import derelict.util.loader;
+    import derelict.util.system;
+
+    static if( Derelict_OS_Windows )
+        enum libNames = "nanomsg.dll";
+    else
+        static assert( 0, "Need to implement Nanomsg2 libNames for this operating system." );
+}
+
+/*
+This function is not part of the public interface,  but Nanomsg expects it to be called before any subsystems have been intiailized.
+Normally, this happens via linking with libNanomsgmain, but since that doesn't happen when using Derelict, then the loader must
+load this function and call it before the load method returns. Otherwise, bad things can happen.
+*/
+private extern( C ) nothrow alias da_Nanomsg_SetMainReady = void function();
+
+class DerelictNanomsgLoader : SharedLibLoader {
+      public this() {
+            super( libNames );
+      }
+
+      protected override void loadSymbols() {
+            bindFunc(cast(void**)&nanomsgErrno, "nn_errno");
+            bindFunc(cast(void**)&nanomsgStrerror, "nn_strerror");
+            bindFunc(cast(void**)&nanomsgSymbol, "nn_symbol");
+            bindFunc(cast(void**)&nanomsgSymbolInfo, "nn_symbol_info");
+            bindFunc(cast(void**)&nanomsgTerm, "nn_term");
+            bindFunc(cast(void**)&nanomsgAllocmsg, "nn_allocmsg");
+            bindFunc(cast(void**)&nanomsgFreemsg, "nn_freemsg");
+
+			version(none) {
+				//...
+			}
+
+            bindFunc(cast(void**)&nanomsgSocket, "nn_socket");
+            bindFunc(cast(void**)&nanomsgClose, "nn_close");
+            bindFunc(cast(void**)&nanomsgSetsockopt, "nn_setsockopt");
+            bindFunc(cast(void**)&nanomsgGetsockopt, "nn_getsockopt");
+            bindFunc(cast(void**)&nanomsgBind, "nn_bind");
+            bindFunc(cast(void**)&nanomsgConnect, "nn_connect");
+            bindFunc(cast(void**)&nanomsgShutdown, "nn_shutown");
+            bindFunc(cast(void**)&nanomsgSend, "nn_send");
+            bindFunc(cast(void**)&nanomsgRecv, "nn_recv");
+            bindFunc(cast(void**)&nanomsgSendmsg, "nn_sendmsg");
+            bindFunc(cast(void**)&nanomsgRecvMsg, "nn_recvmsg");
+            bindFunc(cast(void**)&nanomsgPoll, "nn_poll");
+            bindFunc(cast(void**)&nanomsgDevice, "nn_device");
+      }
+}
+
+__gshared DerelictNanomsgLoader DerelictNanomsg;
+
+shared static this() {
+    DerelictNanomsg = new DerelictNanomsgLoader();
+}
+
+shared static ~this()
+{
+    DerelictNanomsg.unload();
 }

+ 69 - 0
source/derelict/nanomsg/types.d

@@ -215,3 +215,72 @@ struct nn_pollfd {
     short events;
     short revents;
 };
+
+
+
+
+
+/*****************/
+/* Pair          */
+/*****************/
+enum NN_PROTO_PAIR = 1;
+enum NN_PAIR = (NN_PROTO_PAIR * 16 + 0);
+
+/*****************/
+/* Pubsub        */
+/*****************/
+enum NN_PROTO_PUBSUB = 2;
+enum NN_PUB = (NN_PROTO_PUBSUB * 16 + 0);
+enum NN_SUB = (NN_PROTO_PUBSUB * 16 + 1);
+enum NN_SUB_SUBSCRIBE = 1;
+enum NN_SUB_UNSUBSCRIBE = 2;
+
+/*****************/
+/* ReqRep        */
+/*****************/
+enum NN_PROTO_REQREP = 3;
+enum NN_REQ = (NN_PROTO_REQREP * 16 + 0);
+enum NN_REP = (NN_PROTO_REQREP * 16 + 1);
+enum NN_REQ_RESEND_IVL = 1;
+
+/*****************/
+/* Pipeline      */
+/*****************/
+enum NN_PROTO_PIPELINE = 5;
+enum NN_PUSH = (NN_PROTO_PIPELINE * 16 + 0);
+enum NN_PULL= (NN_PROTO_PIPELINE * 16 + 1);
+
+/*****************/
+/* Survey        */
+/*****************/
+enum NN_PROTO_SURVEY = 6;
+enum NN_SURVEYOR = (NN_PROTO_SURVEY * 16 + 0);
+enum NN_RESPONDENT = (NN_PROTO_SURVEY * 16 + 1);
+enum NN_SURVEYOR_DEADLINE = 1;
+
+/*****************/
+/* Bus           */
+/*****************/
+enum NN_PROTO_BUS = 7;
+enum NN_BUS = (NN_PROTO_BUS * 16 + 0);
+
+
+
+
+
+
+/*****************/
+/* Inproc        */
+/*****************/
+enum NN_INPROC = -1;
+
+/*****************/
+/* Ipc           */
+/*****************/
+enum NN_IPC = -2;
+
+/*****************/
+/* Tcp           */
+/*****************/
+enum NN_TCP = -3;
+enum NN_TCP_NODELAY = 1;