Page MenuHomePhabricator (Chris)

No OneTemporary

Authored By
Unknown
Size
937 KB
Referenced Files
None
Subscribers
None
This file is larger than 256 KB, so syntax highlighting was skipped.
diff --git a/util/network/zeromq/AUTHORS b/util/network/zeromq/AUTHORS
deleted file mode 100644
index dd4e69a3..00000000
--- a/util/network/zeromq/AUTHORS
+++ /dev/null
@@ -1,61 +0,0 @@
-Contributors
-============
-
-Alexej Lotz <alexej.lotz@arcor.de>
-Asko Kauppi <askok@dnainternet.net>
-Barak Amar <barak.amar@gmail.com>
-Bernd Prager <bernd@prager.ws>
-Brian Buchanan <bwb@holo.org>
-Chris Wong <chris@chriswongstudio.com>
-Conrad D. Steenberg <conrad.steenberg@caltech.edu>
-Dhruva Krishnamurthy <dhruva@ymail.com>
-Dirk O. Kaar <dok@dok-net.net>
-Erich Heine <sophacles@gmail.com>
-Erik Rigtorp <erik@rigtorp.com>
-Frank Denis <zeromq@pureftpd.org>
-George Neill <georgen@neillnet.com>
-Gonzalo Diethelm <gdiethelm@dcv.cl>
-Joe Thornber <joe.thornber@gmail.com>
-Jon Dyte <jon@totient.co.uk>
-Kamil Shakirov <kamils80@gmail.com>
-Martin Hurton <hurtonm@gmail.com>
-Martin Lucina <mato@kotelna.sk>
-Martin Sustrik <sustrik@250bpm.com>
-Matus Hamorsky <mhamorsky@gmail.com>
-McClain Looney <m@loonsoft.com>
-Pavel Gushcha <pavimus@gmail.com>
-Pavol Malosek <malosek@fastmq.com>
-Pieter Hintjens <ph@imatix.com>
-Piotr Trojanek <piotr.trojanek@gmail.com>
-Steven McCoy <steven.mccoy@miru.hk>
-Tamara Kustarova <kustarova.tamara@gmail.com>
-Tero Marttila <terom@fixme.fi>
-Terry Wilson <terry@logivox.net>
-Vitaly Mayatskikh <v.mayatskih@gmail.com>
-
-Credits
-=======
-
-Aamir Mohammad <aamirjvm@gmail.com>
-Adrian von Bidder <avbidder@fortytwo.ch>
-Aleksey Yeschenko <aleksey@yeschenko.com>
-Alessio Spadaro <alessio.spadaro@finservice.com>
-Alexander Majorov <alexander.majorov@intel.com>
-Bernd Schumacher <bernd.schumacher@hp.com>
-Brett Cameron <Brett.Cameron@hp.com>
-Brian Granger <ellisonbg.net@gmail.com>
-Carsten Dinkelmann <din@foobar-cpa.de>
-David Bahi <dbahi@novell.com>
-Dirk Eddelbuettel <edd@debian.org>
-Evgueny Khartchenko <Evgueny.Khartchenko@intel.com>
-Frank Vanden Berghen <frank@applied-mathematics.net>
-John Apps <john.apps@hp.com>
-Markus Fischer <markus.fischer@hpc-solutions.com>
-Matt Muggeridge <Matt.Muggeridge@hp.com>
-Michael Santy <Michael.Santy@dynetics.com>
-Paulo Henrique Silva <ph.silva@gmail.com>
-Peter Busser <busserpeter@gmail.com>
-Peter Lemenkov <lemenkov@gmail.com>
-Robert Zhang <robert@scout-trading.com>
-Toralf Wittner <toralf.wittner@gmail.com>
-
diff --git a/util/network/zeromq/COPYING b/util/network/zeromq/COPYING
deleted file mode 100644
index b6f3fd5d..00000000
--- a/util/network/zeromq/COPYING
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/util/network/zeromq/COPYING.LESSER b/util/network/zeromq/COPYING.LESSER
deleted file mode 100644
index 3d13ddb8..00000000
--- a/util/network/zeromq/COPYING.LESSER
+++ /dev/null
@@ -1,206 +0,0 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
-
---------------------------------------------------------------------------------
-
- SPECIAL EXCEPTION GRANTED BY IMATIX
-
-As a special exception, iMatix gives you permission to link this library with
-independent modules to produce an executable, regardless of the license terms
-of these independent modules, and to copy and distribute the resulting
-executable under terms of your choice, provided that you also meet, for each
-linked independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from or based on
-this library. If you modify this library, you must extend this exception to your
-version of the library.
-
---------------------------------------------------------------------------------
-
-Parts of the software are licensed under the MIT (X11) license as follows:
-
-Copyright (c) 2007-2010 Contributors as listed in AUTHORS
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the "Software"), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- 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 AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
-
diff --git a/util/network/zeromq/ChangeLog b/util/network/zeromq/ChangeLog
deleted file mode 100644
index 6af813d5..00000000
--- a/util/network/zeromq/ChangeLog
+++ /dev/null
@@ -1,2724 +0,0 @@
-0MQ version 2.0.8 (Stable) was released on 2010/08/25.
-
-Changes since v2.0.7:
-
-commit c9076c5d8b9b69f4e1bf797127735a563b712eb9
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Aug 25 12:50:16 2010 +0200
-
- Basic documentation for XREQ/XREP socket types
-
- Add some basic documentation for XREQ/XREP socket types, including
- a brief description of the most common use case (REQ -> XREP) and (XREQ ->
- REP).
-
-commit 6d275a8788ad06dda451845402877010f114d6d4
-Merge: 98bea86 d788c1f
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 25 12:09:55 2010 +0200
-
- Updated NEWS for stable 2.0.8 release
-
-commit 98bea86240c3e2cb0c1c9832f5660994a0a11f34
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 25 11:43:52 2010 +0200
-
- Updated NEWS for stable 2.0.8 release
-
-commit d788c1f7e49305976f3e1d0540c5671c47348880
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 25 11:43:52 2010 +0200
-
- Updated NEWS for stable 2.0.8 release
-
-commit c06a3cc5101a36bf70c593937374371cafbacfc3
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Aug 25 11:24:24 2010 +0200
-
- Update version number to 2.0.8
-
-commit b66dd7afd20b82668a3d7756900c91680bd1d91e
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Aug 25 09:50:45 2010 +0200
-
- zmq_stopwatch_stop: Don't return EFAULT
-
- Function returning unsigned long int cannot return (-1)
-
-commit 2b2accb8bf574bfb7d85893696f477d5bc6ca272
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Sat Aug 21 15:47:10 2010 +0200
-
- Added calls to zmq_msg_close in examples
-
-commit c52d1f2d47ac93e391ff707b50245aa33d7e8323
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Sat Aug 21 13:46:03 2010 +0200
-
- Fixed example for multipart zmq_recv()
-
-commit 87612be91d4ff5252613196f061bd89d3bce25ec
-Merge: de0035b 5be54b9
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Fri Aug 20 01:06:34 2010 +0200
-
- Merge branch '46_device_robustness'
-
-commit de0035b6d9fc1c5423d10fbac468b0e17188510f
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Thu Aug 19 14:31:04 2010 +0200
-
- Fixed git URL in README
-
-commit 7aba2d10338727b030c3a9ff4ec34f7086ea5023
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Aug 18 12:00:26 2010 +0200
-
- documentation leftover from v2.0.6 cleaned in zmq(7)
-
-commit de0173754cc82f6c08875a892892f043a804554c
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 11 21:12:10 2010 +0200
-
- Removed wip zmq_deviced from master
-
-commit 5be54b912029381736ee8b8798f95cc9a2544a70
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 11 17:05:19 2010 +0200
-
- 46 - Devices vulnerable to invalid messages
-
- http://github.com/zeromq/zeromq2/issues#issue/46
- Invalid messages are now discarded silently, instead of causing an assertion
- failure.
-
-commit e74d350068e8a7d2becbd791f19e2c1ef20afae5
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 11 17:00:12 2010 +0200
-
- Fixed (un)signed type errors in get/setsockopt manual
-
-commit a12f446c4c160e6fb969c35ff01578e5f0965ecc
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Tue Aug 10 12:36:56 2010 +0200
-
- Modified zmq_tcp(7) to emphasize wildcard interfaces
-
-commit b6cdd369e328ceca2c46758d92ad8ea6a1f59cd7
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Sun Aug 8 11:43:32 2010 +0200
-
- Added error checking (EFAULT) for null arguments
-
- * Fixed zmq_term, zmq_socket, zmq_close, zmq_setsockopt,
- * zmq_getsockopt, zmq_bind, zmq_connect, zmq_send,
- * zmq_recv, zmq_poll, zmq_device, zmq_stopwatch_stop
- * Updated Reference Manual for these methods
-
-commit 677b3d906acc97c26855bdc31126492878ad6292
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Sat Aug 7 20:55:07 2010 +0200
-
- Added not-null assertions on pointer arguments in C API functions
- * zmq_term
- * zmq_socket
- * zmq_close
- * zmq_setsockopt
- * zmq_getsockopt
- * zmq_bind
- * zmq_connect
- * zmq_send
- * zmq_recv
- * zmq_poll
- * zmq_device
- * zmq_stopwatch_stop
-
-commit b579aa9510fe6897735ba2aae5db399ef89ad573
-Merge: 6d35e82 2100a91
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Aug 6 12:01:40 2010 +0200
-
- Merge branch 'master' of github.com:zeromq/zeromq2
-
-commit 6d35e82db4178b936b33c2eaa6a9f4a2b597e2f3
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Aug 6 12:00:57 2010 +0200
-
- Fix uninitialized use of nbytes in signaler fix
-
-commit 2100a9133312f7feecd22c4f809c8f3912c93274
-Merge: 78e9ee8 16b43e6
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Fri Aug 6 11:09:29 2010 +0200
-
- Merge branch 'master' of github.com:zeromq/zeromq2
-
-commit 16b43e657b44902b3b45fbb01228c813cf27ad39
-Merge: 9ac2ff4 96bcc9e
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Aug 5 23:41:49 2010 +0200
-
- Merge branch 'master' of github.com:zeromq/zeromq2
-
-commit 9ac2ff449ccfb71cb1f3c9d7b2cf67c440539228
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Aug 5 23:40:30 2010 +0200
-
- zmq::signaler_t: Restart syscalls on EINTR
-
- This patch restarts the send() or recv() inside zmq::signaler_t if the call fails
- due to EINTR.
-
-commit 78e9ee84bf0e89eeb7134771b1f501ea0f9ccd9d
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Thu Aug 5 18:49:49 2010 +0200
-
- Fixed MSVC project for PULL/PUSH
-
-commit 96bcc9e6cf73781c31042278eb960c0363a78805
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 17:06:38 2010 +0200
-
- Small improvements to zmq_device(3) page
-
- * Clarified broker model and proxy model
- * Added example of proxy model
-
-commit 13f3481e127a6b2390e847af6b01ee88f1b4ae61
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 16:05:25 2010 +0200
-
- Further cleanups on reference manual
-
- - fixed unwrapped text in new man pages
- - fixed over-long lines in older pages, where possible
- - removed reference to old standalong devices from index page
- - added refernce to new zmq_device[3] documented from index page
- - some minor spelling corrections
-
-commit 6ff193999d96487f7aa7e578980ab5554e61d8dc
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 15:07:15 2010 +0200
-
- Removed empty man pages for old standalone devices
-
-commit c51de31f2fd31f782e419bfac2fb8d40d689f3e3
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 14:56:58 2010 +0200
-
- Reverting 'clean' change to Makefile
-
-commit 77a3c36ff1f11215229a4efdb821a3cb83a9d6fc
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 14:43:33 2010 +0200
-
- Various changes to documentation project:
-
- * Added documentation for zmq_deviced, which we're developing
- * Created consistent page footer in documentation template
- * Page footer notes doc authors and copyright statement
-
-commit 6cd90304476c1c6873d67068009def63e520b848
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 14:42:21 2010 +0200
-
- Added clean target that deletes generated man pages
-
-commit f575f252c99c99d3622f313d6bbad6635197a1e4
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 14:41:43 2010 +0200
-
- Added man page for the zmq_device method
-
-commit 11a410b65827a3958fb5f417c29e95c1953a0b42
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Wed Aug 4 14:38:56 2010 +0200
-
- Renamed ZMQ_UPSTREAM to ZMQ_PULL, and ZMQ_DOWNSTREAM to ZMQ_PUSH. Left the old
- definitions as aliases, to be removed in release 3.0. Also renamed the source
- files implementing these two socket types. This change does not break existing
- applications nor bindings, but allows us to fix the documentation and user guide
- now, rather than keeping the old (confusing) names.
-
-commit 544b36da68729daffefa8f40d2efed5945851a01
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jul 30 16:49:06 2010 +0200
-
- XREQ: Correct behaviour on hitting ZMQ_HWM
-
- This reverts part of commit 84e0c7991a9b316ed571533abc628cc1175750a3 to get
- correct ZMQ_HWM semantics with XREQ sockets:
-
- When sending a message to an XREQ socket, the underlying pipe is selected in
- a round-robin fashion. If an underlying pipe is full it is skipped. If there
- are no underlying pipes, or all underlying pipes are full then zmq_send()
- shall block or return EAGAIN, depending on whether or not the call is blocking.
- Messages are never dropped.
-
-commit 66470b2c55d74fb137211f4264bbfc5e3f454534
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Mon Jul 26 12:24:00 2010 +0200
-
- perf: fix typo
-
-commit 10533a560b4af1d3dae63c87c737e25bbdb78998
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Jul 14 18:31:17 2010 +0200
-
- pipe: check_read() should check for message delimiter
-
-commit e1c596b37eef2c2c72c605d7bf4a5c97050add6b
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Sat Jul 24 16:57:13 2010 +0200
-
- Make sure lwm > 0 when hwm > 0
-
-commit 5b1a6a4bea1cebe860769f82702410f6c1d0ab1b
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Jul 21 17:33:40 2010 +0200
-
- Issue 42 - getaddrinfo() fails
-
-commit aedf3f808befd8cf32a16e34b907c60c79eabfd7
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Jul 19 08:38:24 2010 +0200
-
- EHOSTUNREACH is a valid return value from recv()
-
-commit 269904361b565efa54a106e3eda96091320439bd
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Jul 13 11:46:56 2010 +0200
-
- minor comment clarification
-
-commit da49e5a4dd4602bf893193a5e6e64af54695b51c
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Jul 13 07:57:29 2010 +0200
-
- devices exit in case of context termination
-
-commit ca057c7db8dcb2384e2498c938f3d83f64b78a7d
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Sat Jul 10 22:57:47 2010 +0200
-
- Fix identity generation for transient inproc connections
-
-commit 1f61c87ac527e2a75cabbce4ea4c5f916f4532e7
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Jul 7 17:15:32 2010 +0200
-
- issue 40 - nbytes != -1 (tcp_socket.cpp:216)
-
-commit fd707fedc59124ed627780efed081acf33f455d2
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Tue Jul 6 22:47:07 2010 +0200
-
- issue 38 - Assertion failed: fetched (xrep.cpp:196)
-
-commit 805af8241d7450fe1e60174739a78325677897f6
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Jun 30 16:23:07 2010 +0200
-
- asciidoc.conf was missing from distribution tarball
-
-commit 0ab65324195ad70205514d465b03d851a6de051c
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Tue Jun 29 21:08:41 2010 +0200
-
- Prevent socket reuse by second bind, on win32
-
-commit 79a3d07c8587e840548791efc314b0184c584881
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Jun 29 07:45:11 2010 +0200
-
- MSVC build fixed
-
-commit ba91644fdb48cec97edc6965c4ca7ab564a3513f
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Jun 26 20:11:40 2010 +0200
-
- msg_store added to MSVC build
-
-commit 1dda8a2aaabd3b7705b0ecd67d6d9737d1978946
-Author: Pieter Hintjens <ph@imatix.com>
-Date: Fri Jun 25 18:35:42 2010 +0200
-
- Used more expressive variable names
-
-commit fca2e8e8cc30bcd134839f6d0f5f9963323dad2b
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Mon Jun 21 15:06:51 2010 +0200
-
- Add SWAP support
-
-commit 10c28c1fc2f06c93e12a7c60f79a315cec7c5a52
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Sat Jun 19 20:46:16 2010 +0200
-
- Revive reader on pipe termination
-
-commit 2c3913bb19fa95e7decaa7967e2469dc428e46b0
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Sat Jun 19 19:46:35 2010 +0200
-
- fix double free error in PAIR socket
-
-commit cff7ba2315c0f62fa3679afa24ecea88da38a365
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Jun 17 17:09:51 2010 +0200
-
- Windows build fixed
-
-commit 7f01e9970d211235fc8057de6dc41ba8ceafe795
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Jun 17 16:51:53 2010 +0200
-
- stopwatch returned to libzmq
-
-commit 4777fe4010572d381a2ad8eb63df2fc5fb7e6642
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Thu Jun 17 12:45:14 2010 +0200
-
- pipe: fix bug in rollback() method
-
- The msgs_written variable keeps track how many complete
- messages have been written so far. The rollback operation drops all
- fragments of the last incomplete message so it shouldn't
- change this variable at all.
-
-commit 9151de38959a21829d4ab60324d6750d2e1a4357
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Jun 17 11:01:18 2010 +0200
-
- generate identity for transient inproc connections
-
-commit 341e8a267309179bbb8249845e7efb14faf93d4d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Jun 15 14:01:44 2010 +0200
-
- test commit
-
-commit 9858447fad3260cb16b1f2e56a14cfe3db737a36
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Jun 15 08:01:43 2010 +0200
-
- getsockopt documentation fixed
-
-commit ac90b7e0ba497bfec09d7a69a2e01dc6d94a9c9a
-Author: Brian Buchanan <bwb@holo.org>
-Date: Fri Jun 11 08:03:34 2010 +0200
-
- issue 35 - ZMQ_RCVMORE sometimes erroneously returns false
-
-commit 5ee355d1880bc7391c199ea29adc620ceb0d96f1
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Jun 11 07:02:36 2010 +0200
-
- if connect asserts, exact error is reported
-
-commit 27877d73ea7dd972a773c7e960706130daaf5925
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Jun 11 06:55:30 2010 +0200
-
- EHOSTUNREACH is acceptable outcome from connect
-
-commit c818b14bbd261aa836400e9dfb4848117dd2edb6
-Author: Piotr Trojanek <piotr.trojanek@gmail.com>
-Date: Thu Jun 10 12:57:42 2010 +0200
-
- clearing thread info structure
-
-commit 74a3907be285891d90b82e2d315d03141a398752
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Jun 10 12:36:27 2010 +0200
-
- couple of ICC warnings fixed
-
-commit 8782b4d696da7b1527f69e819d75d691bc3df105
-Author: Piotr Trojanek <piotr.trojanek@gmail.com>
-Date: Thu Jun 10 07:34:11 2010 +0200
-
- -lcrypto added to linking flags for QNX
-
-commit 76e0153d4f3ef1d5fef1a9b926e0e8e3ab2d9685
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Jun 10 07:21:05 2010 +0200
-
- issue 33 - missing virtual destructors
-
-commit d329c55da9c503e82831e940b0fc8dc9e5479975
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Jun 10 07:12:00 2010 +0200
-
- issue 31 - Assertion failed: err == ECONNREFUSED || err == ETIMEDOUT (tcp_connecter.cpp:296)
-
-commit 604f7475ec1d19df416156879db3ddd3c90d5a13
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Jun 9 17:49:08 2010 +0200
-
- issue 32 - poll_t poller broken
-
-commit 7a29e8594fb539e37b9d08982b1f491b0794b7d2
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Jun 9 17:07:45 2010 +0200
-
- Piotr Trojanek added to AUTHORS file
-
-commit 751b60a18d028d9859394c7abe960cb1c42e605e
-Author: Piotr Trojanek <piotr.trojanek@gmail.com>
-Date: Wed Jun 9 17:06:32 2010 +0200
-
- extra ';' inside a struct or union -- clang warnings fixed
-
-commit 240fc33f65c6cd9f1ed0a511daf4ad00ff37f163
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Jun 7 20:23:48 2010 +0200
-
- minor comment clarification
-
-commit 784e73a7c84f2c0a454f4a9ef69586755482a9d5
-Merge: ce53d02 8f51a10
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Jun 7 09:03:56 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit ce53d02e0580755055245cc1050f1dd3a26a3f22
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Jun 7 09:03:40 2010 +0200
-
- C++ docs for zmq::poll function improved
-
--------------------------------------------------------------------------------
-
-0MQ version 2.0.7 (Beta) was released on 2010/06/04.
-
-Changes since 2.0.6:
-
-commit 5c97ff9a2eb3e55007fd90b5c3a1c433de7bc60c
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 19:27:55 2010 +0200
-
- More NEWS for 2.0.7
-
-commit e8a9614aaeb45fc619eed2983f93edb744b4cef4
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 19:20:37 2010 +0200
-
- Update NEWS for 2.0.7 release
-
-commit 9b8f902d72438752b00d4c1bb3887c40423777e0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Jun 4 18:49:55 2010 +0200
-
- initial version of 2.0.7 NEWS
-
-commit baf659fde5136c20f879ef713ec3effc34854ba6
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 17:12:51 2010 +0200
-
- Move news from ChangeLog into NEWS
-
-commit 94dfe1368ac1cd4a456c86b8fc800d7c3911cfd3
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 17:02:16 2010 +0200
-
- Fix MINGW build
-
- Mingw seems to define NOMINMAX, so don't redefine it if already defined
-
-commit cf048bb1f8a665370d9e39aee2a7363327911b08
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Jun 4 16:29:36 2010 +0200
-
- platform.hpp for MSVC contains only very basic stuff
-
-commit 927993863eda325c66fc678810eeadd0c744cdf2
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Jun 4 15:47:22 2010 +0200
-
- MSVC build fixed
-
-commit 621d7415b3cdee1f79787e2961f113b00d237615
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 15:35:14 2010 +0200
-
- Fix Solaris/NetBSD breakage in atomic_ptr.hpp
-
-commit 67ca7dcbe6b072b74a112ce4df4529cda82c0f13
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Jun 4 15:24:06 2010 +0200
-
- obsolete API elements removed - this commit breaks backward compatibility
-
-commit d844a90690af357988b1c5ba027c740d4182d753
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 15:00:31 2010 +0200
-
- zmqd: Removing for now, not ready for 2.0.7
-
-commit 606c77368cccd2a277437b5de8764772295fdf89
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 14:48:49 2010 +0200
-
- Move perf helper functions to perf/helpers.cpp
-
-commit 05b4a7ae787760d5c24e048612b786fa0283854a
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 13:58:49 2010 +0200
-
- Remove PGM examples from build
-
-commit 4d65d7a5a98cbb95430a5b02706ab87d3fa0f56c
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Jun 4 13:53:40 2010 +0200
-
- Documentation: zmq_tcp(7) update for 2.0.7
-
- Document MORE bit in flags field
-
-commit 7fc15c21a17cfa58e60e4a513360cb12b542a570
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Jun 3 14:36:44 2010 +0200
-
- Documentation: zmq_cpp(7) update for 2.0.7
-
-commit 10f4bf3f35ab3da05fe5ca8a28cd131e3781249f
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Jun 3 14:15:05 2010 +0200
-
- Documentation: Cosmetic changes
-
-commit 8076fd1a3abece7dc91c2b2309dd0ecba57e882f
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Jun 3 14:08:36 2010 +0200
-
- Documentation: zmq_errno(3)
-
-commit 7c9b09bc511236c8cc5f6cea7623a8b98fedf302
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Jun 2 18:36:34 2010 +0200
-
- Documentation: Flow control, zmq_socket(3)
-
- Mostly Flow control and additions to zmq_socket(3)
- Removed/changed lots of text regarding message queues
- More fixes for 2.0.7 changes
-
-commit 9d00d300b0d6b45d2954792540cc95a0c3fb6a01
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Jun 1 22:22:50 2010 +0200
-
- Documentation: zmq_init() API changes for 2.0.7
-
-commit 8ba1d3c8ed32b39bb1133330d496587d96020e7e
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Jun 1 22:22:29 2010 +0200
-
- Documentation: zmq_term() and ETERM for 2.0.7
-
-commit 74a03dfd7dbb762be5d50eca4df214f8825ad44a
-Merge: 99e6179 8a77135
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Jun 1 21:49:50 2010 +0200
-
- Merge branch 'master' of github.com:sustrik/zeromq2
-
-commit 8a771350795dc4f9aae6a89534f1391d7b63b10c
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Jun 1 10:42:55 2010 +0200
-
- Pieter Hintjens added to 'authors' section
-
-commit 0b0716661e99a2b55151650ec94cd5fd268d0334
-Author: Pieter Hintjens <ph@itmatix.com>
-Date: Tue Jun 1 10:40:12 2010 +0200
-
- multiple vulnerabilities in xml paerser fixed
-
-commit 99e6179edd9e3552fcdb7f4fce3306cd174f3359
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 17:24:50 2010 +0200
-
- Documentation updates
-
- The option_value parameter for zmq_getsockopt is in and out.
-
-commit b4f3e0acd72de97bc5ef46ea74d9cd7ed7f9efc2
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 17:21:51 2010 +0200
-
- Documentation updates
-
- Clarify multi-part messages
-
-commit 7bbe754cb4987669d4273ec37f5f50d29b9931df
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 17:21:12 2010 +0200
-
- Documentation updates
-
- Clarify pipeline and exclusive pair patterns
-
-commit 8a4df431de872623c761fdeb291748d3d153b8d1
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 14:18:51 2010 +0200
-
- Documentation updates
-
- Add getsockopt to Makefile.am
-
-commit dfbaf4f9668f0493649d6ba1328cced64e5340b0
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 14:18:37 2010 +0200
-
- Documentation updates
-
- Multi-part messages
-
-commit 0fa73b039462c1754d407de85306904e9b0c73be
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 14:13:41 2010 +0200
-
- Documentation updates
-
- Add getsockopt to index
-
-commit eb9ff1e77977c6199c0a0439f4dd35fa39f3bd3c
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 14:12:27 2010 +0200
-
- Documentation updates
-
- Multi-part messages
-
-commit 8becacf82c950af951f477e3dc3f7ac79e110fc1
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 31 12:53:40 2010 +0200
-
- Documentation updates
-
- Add zmq_getsockopt(3), clean up zmq_setsockopt(3).
-
-commit be6019abd1ac6fe11c9c51dbadf9c72b37349c2a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon May 31 09:28:36 2010 +0200
-
- issue 28. - SNDMORE/ RCVMORE is dropping every other message
-
-commit 2e9be56a4059cf230f6aa92eb1c71db5f1200b8e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon May 31 06:17:58 2010 +0200
-
- memory leak in REQ socket fixed
-
-commit 3bb60da0d085b1089ddec4617fcd40f2cda88567
-Merge: 04fcd4d da37c45
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon May 31 06:11:42 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 04fcd4d55b3b01e75d1d0d547987841811a2d610
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon May 31 06:11:20 2010 +0200
-
- memory leak in REP socket fixed
-
-commit da37c45b0c7200eea96118952e671972b71df4ce
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri May 28 01:38:43 2010 +0200
-
- Clarify zmq_bind/zmq_connect
-
- Use the term 'endpoint' correctly, and drop the nonsense about local/remote addresses which doesn't clearly explain what is going on
-
-commit 74f1a4a579d3b09b3420092d9f076827be31c4e7
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri May 28 00:55:04 2010 +0200
-
- RPM packaging cleanups
-
- - ditch -utils package
- - add descriptions from Debian packaging
-
-commit b4cc7b97ecaf743f3259f9df7d687558892b8a72
-Author: Mikko Koppanen <mkoppanen@gameboy.config>
-Date: Fri Apr 16 10:26:22 2010 +0100
-
- dist-hook for copying zeromq.spec to top-level
-
-commit 8bd3f743f50a61355b6cf18046d59c7d0289836b
-Author: Mikko Koppanen <mkoppanen@gameboy.config>
-Date: Fri Apr 16 00:01:13 2010 +0100
-
- Import redhat packaging
-
-commit 5219e4ce8f9aa082c5f91e248a9f66639c69727d
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri May 28 00:49:13 2010 +0200
-
- Clarify socket types in documentation, reinstate ZMQ_PAIR
-
-commit 8408ae066dce123fc93e4f53dbadb1f60b7f2e8a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue May 25 15:03:57 2010 +0200
-
- LWM is computed rather than explicitly specified by user
-
-commit f34a468a263c7b4013a267297ee7f121e12dfb9d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue May 25 10:57:54 2010 +0200
-
- coding style fixed in zmqd
-
-commit 7773fdddfb357145cb15faaa5228fb3b2d0f6f78
-Merge: 091e92a 89783c3
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu May 20 18:02:34 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 091e92a11dec353e674cbacbf2455a48bdb4e01d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu May 20 18:01:58 2010 +0200
-
- Pieter Hintjens added to AUTHORS file
-
-commit 89783c37d2b8a7b5519eab7922b460449aa0bf3f
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed May 19 06:31:57 2010 +0200
-
- incomplete messages can be stored in ypipe
-
-commit f40ce4e500d32b4240395e09e0ce3359734f0189
-Author: Jon Dyte <jon@totient.co.uk>
-Date: Sat May 15 12:37:45 2010 +0200
-
- single 0MQ daemon (zmqd) - initial version
-
-commit 6705a3d5807542ee2ed8a1ef6e3d9f769e5d5a93
-Author: Steven McCoy <steven.mccoy@miru.hk>
-Date: Thu May 13 12:43:58 2010 +0200
-
- some more sanity checks in pgm_socket
-
-commit ff9d3985556aa58a5d120a3eb72867c7ebea924d
-Merge: 56262d7 f6c1c97
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu May 13 12:41:39 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 56262d7ba79a9ba19fc1b89fdc07bca3894062f2
-Author: Steven McCoy <steven.mccoy@miru.hk>
-Date: Thu May 13 12:41:20 2010 +0200
-
- some more sanity checks in pgm_socket
-
-commit f6c1c972428f15356af09d6922910ef44d1f6cb3
-Merge: 52ef3f3 127cb89
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed May 12 16:49:49 2010 +0200
-
- Merge branch 'master' of github.com:sustrik/zeromq2
-
-commit 52ef3f3f2c6f3ba1717b2e729556df713c022636
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed May 12 16:46:59 2010 +0200
-
- Revert commit 7cb076e, atomic ops cleanup
-
- Reverted to using atomic.h on NetBSD
- Removed GNU builtins (see http://lists.zeromq.org/pipermail/zeromq-dev/2010-May/003485.html)
- Removed SPARC native atomic ops as they are untested and have been commented out for years
- Add "memory" to asm clobber for X86 atomic_counter::sub()
-
-commit 127cb89ac1271bf85798294d450509b7c23019bd
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed May 12 16:46:07 2010 +0200
-
- MAINTAINERS file added
-
-commit 8e5ac100c95e02ef60aa827b4199002f324617ed
-Merge: 714a8d5 9fbb914
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed May 12 12:45:38 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 714a8d50a03e773320a02247847c58020c96e867
-Author: Brett Cameron <Brett.Cameron@hp.com>
-Date: Wed May 12 12:45:12 2010 +0200
-
- fixes for OpenVMS
-
-commit 9fbb9141a8895ac83e8051ac568223a9e57a278d
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 10 16:39:09 2010 +0200
-
- Update historic include paths
-
-commit 9d16a415cbfd33f89d2f5afd96ed7cd34a21a634
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 10 16:32:10 2010 +0200
-
- OpenPGM build flags cleanup
-
- Removed various exotic -Wxxx flags in the OpenPGM build to get us to what is actually
- required and reasonable; added in -fno-strict-aliasing since OpenPGM generates lots
- of warnings about dereferencing typed-punned pointers; removed the OpenPGM extra flags
- from libzmq_la_CXXFLAGS and left them only in libzmq_la_CFLAGS so that our code
- is not built with the OpenPGM extra flags.
-
-commit 2cf9f04a460473ea10e901e68e66596583d0d286
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon May 10 16:24:53 2010 +0200
-
- Update OpenPGM to version 2.1.26
-
-commit a25414e55caa975185ac6534c40bb601e5c38a9a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun May 9 16:59:15 2010 +0200
-
- Fix in zmq_poll (Windows version)
-
-commit 4d33c43913dd640853cec75ce21080c2b33d8526
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri May 7 21:53:55 2010 +0200
-
- caution about zmq_msg_init_* functions added to the docs
-
-commit 4a3b857c4cf35261751d562ad7e4acc5ecf58be0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri May 7 11:08:50 2010 +0200
-
- commands not processed immediatelly in some scenarios; fixed
-
-commit 36b044a0d5a9918841839edf12767b31bfec36a0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri May 7 09:21:15 2010 +0200
-
- ZMQ_PAIR socket removed from the documentation as it is unfinished yet
-
-commit f60d891b2309cdc6f2cc1507a238cec85e4aa9e7
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu May 6 10:33:01 2010 +0200
-
- Issue 23. zmq_init() crashes on illegal numbers
-
-commit 64c58662b7f491f2a3c8cb684f27ea1d5c549552
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed May 5 14:33:02 2010 +0200
-
- MSVC build fixed
-
-commit 835e893e54598ff474067cc68b787440baf6b05c
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed May 5 14:24:54 2010 +0200
-
- dispatcher_t class renamed to ctx_t
-
-commit 10f5334f2891b187ce57f38186cf977406097ab0
-Merge: 44dd005 3f5465a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed May 5 13:03:56 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 44dd005ff05431b05a8e04858a23784b252da870
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed May 5 13:03:26 2010 +0200
-
- number of application threads to use 0MQ sockets is unlimited; app_threads parameter in zmq_init is unused and obsolete
-
-commit 3f5465ada1b465ac0e360d0416b8f42b0fddfab0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue May 4 10:37:10 2010 +0200
-
- Windows port fixed
-
-commit 235ed3a3dcffb7c658cbc9253eae9de54db24533
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue May 4 10:22:16 2010 +0200
-
- signaler transports commands per se rather than one-bit signals
-
-commit 8b9bd05726c3df56d7f437889abccba3cbbffdee
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon May 3 16:21:36 2010 +0200
-
- thread ID and dispatcher made private in object_t
-
-commit 84e0c7991a9b316ed571533abc628cc1175750a3
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun May 2 20:59:07 2010 +0200
-
- queue device fixed
-
-commit 4a6bac1deaedb3c111c7e28b2933ed98367cb193
-Merge: acfd0f8 beb4da3
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Apr 30 04:54:10 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit acfd0f8ca2d15111f35ae0034ed3ce130c96b910
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Apr 30 04:53:41 2010 +0200
-
- prefix in XREP recv'd message misses MORE flag
-
-commit beb4da3c28cff501a33de34cec95ca110cd3084e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 29 20:53:46 2010 +0200
-
- windows port fixed
-
-commit ae93ed318a450d6d763a5f629d478467f7362b07
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 29 20:34:48 2010 +0200
-
- signaler rewritten in such a way that any number (>64) of threads can be used
-
-commit 1ffc6dd41f2e2ce45c67f3fe08780c5a09cf667d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 29 18:03:54 2010 +0200
-
- eventfd-style signaling removed
-
-commit 37128b7b1aeed9ad2bf6816560b85b5f94dd5bec
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 29 17:31:57 2010 +0200
-
- fd_signaler_t renamed to signaler_t
-
-commit c193fd146661b39027c5e3fa0776dcdf8c6af5e2
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 29 17:20:23 2010 +0200
-
- lock-free polling removed; ZMQ_POLL flag removed
-
-commit 7cb076e56a18cb76c49f17bd34bc73c11e01b705
-Author: Steven McCoy <steven.mccoy@miru.hk>
-Date: Thu Apr 29 11:36:13 2010 +0200
-
- Defer NetBSD atomic ops to GCC builtins. Revert Sun atomic ops #define.
-
-commit ad6fa9d0d4f1cf29ce63998d7efe337b1a784ef6
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Apr 27 17:36:00 2010 +0200
-
- initial version of multi-hop REQ/REP
-
-commit 1ad6ade0ed465030716ce720077f3aa31e6cd136
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Apr 26 16:58:49 2010 +0200
-
- MSVC build fixed
-
-commit beffee92a8ec9e14cca21e5901970c4d03967c3d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Apr 26 16:51:05 2010 +0200
-
- P2P renamed to PAIR
-
-commit 7d9603d722c9c2752dccd0c51f470e68d0e0c48c
-Author: Jon Dyte <jon@totient.co.uk>
-Date: Sun Apr 25 15:04:23 2010 +0200
-
- Bug in zmq_queue fixed
-
-commit d524c4e15d3cfa21f265d2c21e8a76ac97bfee2d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Apr 16 09:53:09 2010 +0200
-
- fix of documentation typo
-
-commit 1c33941be9d564733c15fe0466906fdf0bbd46b8
-Merge: ea18d30 370cde0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 15 07:32:49 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit ea18d30c209cb4e3f0dd0bc5e4380345e81b6fb6
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 15 07:32:25 2010 +0200
-
- atomic_ptr fix of Win64
-
-commit 370cde09226d8a1b87eeac306fe97d64b4ea63a3
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Apr 12 17:00:11 2010 +0200
-
- win build fixed
-
-commit 0024d290765f53428ff78eddc5a4bc675a13c6a7
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Apr 12 16:49:13 2010 +0200
-
- Build fixes for cross compiling and Win32
-
-commit 34964769399825e45b3efd02e642af97355707ef
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Apr 12 10:05:24 2010 +0200
-
- MSVC perf build fixed
-
-commit 7668e7976dc6c3e18a314d991381f29f5cbcc6ef
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Apr 12 09:57:34 2010 +0200
-
- zmq_poll returns ETERM in case of context termination
-
-commit 3236cb1a54316206d14a0f925dfa79d5b35f70fc
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Apr 12 09:25:04 2010 +0200
-
- ETERM is accounted for in the documentation
-
-commit fba28c7c0cddd7c54fe45b38fc38ac6fe5a48438
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Apr 11 16:36:27 2010 +0200
-
- issue 1 - Change zmq_term semantics
-
-commit dff79d778db46bebe1e3b0cbd28b328972b9adb8
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Apr 11 14:20:00 2010 +0200
-
- version number bumped to 2.0.7 for MSVC build
-
-commit 6cf076510a39c8eb60b1ec2f28aa895b9fb6eaae
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Apr 11 14:00:40 2010 +0200
-
- C-style comments in zmq.h
-
-commit 00cf3ceb8da8cb58b343cb75798a042588f09752
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Apr 11 10:26:47 2010 +0200
-
- multi-part message functionality available via ZMQ_SNDMORE and ZMQ_RCVMORE
-
-commit 6fea42258348c8489d2cd64ca0e92981148134f8
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Apr 11 07:59:03 2010 +0200
-
- getsockopt added to c++ binding
-
-commit b668387d917cd80c5d4b9631bc0008b6a014c083
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Sat Apr 10 17:04:33 2010 +0200
-
- Remove -Wxxx gcc-isms from subdir Makefiles
-
-commit f6fa41dd7b3677d0f7441db83cbd6c8a0283a499
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Sat Apr 10 16:51:22 2010 +0200
-
- Compile perf tests with the C++ compiler
-
- This lets us build the binaries in a portable fashion w/o having to worry
- about how to link with the C++ runtime.
-
-commit c214a24f06bb41885dfbd73e42acb6e043df05ef
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Apr 10 16:27:07 2010 +0200
-
- fix for Sun C++ 5.8
-
-commit 770aedbd09fb1e11a4e4880da2603a517856c16c
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Sat Apr 10 16:18:34 2010 +0200
-
- Build fixes for Solaris and non-GNU compilers
-
- Compiling C++ code with -D_POSIX_SOURCE on Solaris is unsupported, so remove it.
- Isolate GCC-isms inside checks that we are actually using GCC/G++.
- Only check for -lstdc++ when on GCC and doing static linking.
-
-commit 1dc0380e29fecd70f6299243d81f67db850db616
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Sat Apr 10 13:28:45 2010 +0200
-
- Debian packaging fixes suitable for 0MQ git
-
- Removed README.source, TODO.source since these are irrelevant to a generic
- git package.
- Fixed spelling in debian/copyright.
- Removed RFC check in debian/rules, again irrelevant to a generic git package.
-
-commit 8aa2acd0f8906b95232e765da805e3fab947b76b
-Author: Adrian von Bidder <avbidder@fortytwo.ch>
-Date: Sat Apr 10 13:23:09 2010 +0200
-
- Debian packaging update from Adrian von Bidder
-
-commit 1d28dc9059d0014314ad22d98ddb7c6f21c151e7
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Apr 9 19:15:40 2010 +0200
-
- Fix for Issue #14
-
- Don't fail hard if an unreleased tarball is being built and asciidoc is
- not installed; instead just print a big fat warning
-
-commit 6ea76e95736152e83f977ad860f40a231cedb1ef
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Apr 9 16:24:21 2010 +0200
-
- version bumped to 2.0.7
-
-commit 716f4ac8714d33d21f9853f58482e35c1e3ad934
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Apr 9 13:04:15 2010 +0200
-
- zmq_getsockopt function added
-
-commit 027bb1d2a7c83c7c719f6bdc3100eb639019d2f0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 8 19:20:42 2010 +0200
-
- issue 10 - zmq_strerror problem on Windows
-
-commit 5cd9f74a70e2c8503c29aaca881c193a936b7b44
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 8 19:04:32 2010 +0200
-
- few fixed related to multi-part messages in REP socket
-
-commit 77cbd18e9c0480a6c26fd29de5d70569762108be
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 8 11:07:22 2010 +0200
-
- issue 11 - Assertion failed: it != peers.end () (pgm_receiver.cpp:161)
-
-commit 38e9103e0c82bcbb61a9c23ed3a4ace1c7420f95
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Apr 8 08:33:38 2010 +0200
-
- issue 13 (Assertion failed: load.get () == 0 (epoll.cpp:49)) fixed
-
-commit 0f7aab5212ef66f7e292fe4ca891660859972ec4
-Merge: 745db9c b0250cc
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Apr 7 11:54:34 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 745db9c574153160214470563bea3b53ab4c292a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Apr 7 11:54:09 2010 +0200
-
- unitialised member in seesion_t class - fixed
-
-commit b0250cc89df8d6c3d3fff7c8edc17a09ceaaa107
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Apr 7 10:41:11 2010 +0200
-
- Win32 build fixed
-
-commit 065e4d00ff628097ce693ac7d9056fbcaf23d0bc
-Merge: edfd05d a7973a2
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Apr 7 08:20:24 2010 +0200
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit edfd05df8ef58afc498795cb74906c07ee396f76
-Author: Jon Dyte <jon@totient.co.uk>
-Date: Wed Apr 7 08:20:01 2010 +0200
-
- devices can be created via API
-
-commit a7973a2c4997e2ff79126eb073dc675c574de917
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Apr 6 15:23:13 2010 +0200
-
- Documentation fixes
-
-commit 0777567e8911382ac42859f907730df023ebec26
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Apr 6 07:33:52 2010 +0200
-
- ENODEV from zmq_bind error described
-
-commit 37fd1a77a6927ae351e10fe8d5b68d0b0d525d22
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Mar 31 15:15:16 2010 +0200
-
- Handle full-pipe for REP sockets more gracefully
-
-commit 2f219d7c287cd518bc77b576e507d7a17c9535e9
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 27 21:25:40 2010 +0100
-
- ZMQ_TBC renamed to ZMQ_MORE
-
-commit 842b4dd2e492459cbc0cc79ffdb34ddab8f0b528
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 27 14:57:56 2010 +0100
-
- muti-part message functionality available via API
-
-commit 8d8e0857be3d2ab941de443e436061ef82752c17
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 27 14:50:35 2010 +0100
-
- as advertised, zmq_flush and ZMQ_NOFLUSH were removed
-
-commit 06538fc11790a0cf895c43d137a33febf97f3a28
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 27 14:24:57 2010 +0100
-
- multi-part messages work with REQ/REP sockets
-
-commit bbfac783f91f6692b7f9c0aa5392ac955f7b49bf
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 27 09:43:49 2010 +0100
-
- multi-part message work with UPSTREAM/DOWNSTREAM
-
-commit ed291b02516ac5c9fe01f328d505305d36fe6319
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 27 09:24:38 2010 +0100
-
- multi-part messages work with PUB/SUB
-
-commit 0b9897b141ae03ccd00132a638d030a2521cf5b3
-Merge: 0a53ff7 783463a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Mar 26 12:15:47 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 783463ac49aeb2d1be57dc9b3669d508187415a8
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Mar 25 17:31:18 2010 +0100
-
- Clarify use of poll() with C++ API, fix typo
-
-commit c802a72a0b4aae06cd65158af3c65e65e0dfc2e0
-Author: Vitaly Mayatskikh <v.mayatskih@gmail.com>
-Date: Mon Mar 22 22:31:37 2010 +0100
-
- configure does not mention xmlto when missing
-
-commit 0a53ff7b9f8a212793c540535c322bfaa93d3430
-Merge: f031677 93bdb79
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 20 19:51:29 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 93bdb792a92b9bd235c7be47a13febf429568301
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 20 19:50:36 2010 +0100
-
- PUB socket was blocking occassionally - fixed
-
-commit f031677100b41347e09932fc973040097a2187e4
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 20 15:04:30 2010 +0100
-
- rollback of half-processed messages in case of disconnection
-
-commit dfdaff5eba1e6980adb3326c119d2070d0ad42bb
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 20 10:58:59 2010 +0100
-
- XREP-style prefixing/trimming messages removed
-
-commit cbaf10978a8ffa98d98161aeec8d020c517b127b
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Mar 19 09:14:26 2010 +0100
-
- fixes for building with Sun CC
-
--------------------------------------------------------------------------------
-
-0MQ version 2.0.6 (Beta) was released on 2010/03/16.
-
-Changes since 2.0-beta2:
-
-commit 38c942ae648115ac10320968eb4b5e235ef15674
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 16 17:07:17 2010 +0100
-
- Add Git location to README
-
-commit 6d5a9e96400025044af8172887ef99589c0d1eb1
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 16 16:20:23 2010 +0100
-
- Update README
-
-commit ad75d0213483f3c585ce144386623e64e65eca0d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 16 15:48:16 2010 +0100
-
- Add MSVC build files to distribution
-
-commit a9e0c3cd7e0c54f872749f387cf3d69b216bc613
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 16 15:37:47 2010 +0100
-
- Removing leftover MSVC builds
-
-commit 5472861179ff232c55e7a7021a93da5c680f2017
-Merge: 8a3f974 8fcf6ff
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 16 15:24:57 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 8a3f97400a2b3ef2ec088a00868087b85cfd81b6
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 16 15:23:55 2010 +0100
-
- Clarify zmq_poll restrictions
-
-commit 1705ec224745b935e13d8f18ef81bcbef45ff143
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Mar 16 15:19:38 2010 +0100
-
- C++ interface documentation updates
-
-commit 8fcf6ffb67aba2ff9f78f4ba327d29755f03535a
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Mar 15 15:47:17 2010 +0100
-
- Cleanups to autogen.sh
-
-commit fceba036279a0e9bb39aebd862b70ad1bb5b3f40
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Mar 15 15:45:38 2010 +0100
-
- Cleanups to autogen.sh
-
- Use POSIX "command -v" construct to test for prerequisite commands
- Clarify error messages on failure
-
-commit 61ad236e9543a569fe066872a5fda4fa40ea7591
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 13 14:40:10 2010 +0100
-
- ZMQ_NOFLUSH and zmq_flush obsoleted
-
-commit c42343d3f027248514344aec9e3814dfe1047d59
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 13 12:34:55 2010 +0100
-
- pipe_t::rollback removes only unfinished message from the pipe rather than all unflushed messages
-
-commit dcb983699e52bf2e075baaeef250bcd3c82e4846
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 13 08:59:46 2010 +0100
-
- zmq_queue implementation added
-
-commit 22db38bf3d9c96a840af50300632d44fd01ed3a8
-Author: unknown <bundra@.(none)>
-Date: Fri Mar 12 20:20:25 2010 +0100
-
- MSVC build: C++ perf tests removed; all executables go into bin directory
-
-commit c08a7f8896e8fdae8379d2fce552b360daaeadc8
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Mar 12 20:02:19 2010 +0100
-
- C perf tests are built non-optionally; C++ perf tests removed
-
-commit 1fbeba2fe3c3bd6046eea4d6432791194d4238f2
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Mar 12 19:05:56 2010 +0100
-
- simplify configuration summary
-
-commit 66b67fbdf2b047ef7adb8ec018a6fe89dd9cbfca
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Mar 12 18:58:29 2010 +0100
-
- devices are built unconditionally
-
-commit 430aa533347dcbca57857d318a6898f480967cba
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Mar 12 18:42:38 2010 +0100
-
- text concerning language bindings removed from configure
-
-commit 54df388aced3ae059009eec3df66c7dea717747b
-Author: unknown <bundra@.(none)>
-Date: Fri Mar 12 18:05:38 2010 +0100
-
- Java binding removed from MSVC build
-
-commit 6badd204d5686de8b2a6e8ee88da78260c0ff949
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Mar 3 17:25:46 2010 +0100
-
- Implement flow control for ZMQ_REP sockets
-
-commit 923609b0922c3bf07f16c8c99aba4fe98f08ef60
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Tue Mar 2 22:23:34 2010 +0100
-
- Implement flow control for ZMQ_REQ sockets
-
-commit 42e575cb6b62fe1e5d12d2e4fb5c6874d47eb57e
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Tue Mar 2 12:41:33 2010 +0100
-
- Implement flow control fox ZMQ_XREP sockets
-
-commit e34184acc327ae4b085a1a50ff6502e2dc148522
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Tue Mar 2 11:15:50 2010 +0100
-
- Implement flow control for ZMQ_XREQ sockets
-
-commit 06d7a447378c8e9f0805c219deaf8e7e7ef1eeb0
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Tue Mar 2 10:48:30 2010 +0100
-
- Implement flow control for ZMQ_PUB sockets
-
-commit f9c84a1a689f4f64cfa45cb22d4f02ec246c7f93
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Mon Mar 1 17:21:23 2010 +0100
-
- Implement flow control for ZMQ_DOWNSTREAM sockets
-
-commit 5d4f6b18cd57897cc0e77e474118e104a0d5cfc3
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Mon Mar 1 16:55:13 2010 +0100
-
- Implement flow control for ZMQ_P2P sockets
-
-commit f9521c6b6a35103c03b742a311a34d7b04da0b84
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Tue Mar 2 09:02:40 2010 +0100
-
- PGM: implement flow control
-
-commit 61ee6fae536a8000be87b5aaf271f6519a3b7d3f
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Mon Mar 1 10:13:26 2010 +0100
-
- Implement flow control
-
- This commit introduces the necessary changes necessary
- for implementing flow control. None of the socket types
- implements the flow control yet. The code will crash when
- the flow control is enabled and the thw lwm is reached.
-
- The following commits will add flow-control support for
- individual socket types.
-
-commit 31d36104aa7caead6f299f0c5cb58a9fde7cf9b0
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Mar 12 10:34:11 2010 +0100
-
- devices/ build fixed
-
-commit 10bbe6af9900b4609cfcadc031dcf4dcb8ebfb3b
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Mar 11 20:43:51 2010 +0100
-
- Cleanup .gitignore
-
-commit 27e2d08449ea52649e2e42b263f76fbd5d8382c5
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Mar 11 20:33:27 2010 +0100
-
- Restructure language bindings
-
- C and C++ headers moved from bindings/ to include/, bindings/ removed
- --with-c and --with-cpp options to configure removed, C and C++ now built
- and installed by default
-
-commit 90944759b66771bbe399922eecedc5095fa2a509
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Mar 11 20:12:55 2010 +0100
-
- Removed Java binding from core distribution
-
-commit 9fda070e4d66d538e3c709c6cb8934cbf4442c29
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Mar 10 23:20:43 2010 +0100
-
- Typeset literal correctly
-
-commit 0a1e0beaa2849a51ea659eba0f142ce340d2cc6d
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Mar 10 23:18:08 2010 +0100
-
- Fixes to PGM wire format description
-
-commit 5fef480aeb28424769d97c92f331d87f87b87c85
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Mar 10 13:52:41 2010 +0100
-
- Fixes to TCP wire format specification
-
-commit 8f90ae8dfdf5efbb6c8429897dc95cad621af00b
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Mar 10 12:40:13 2010 +0100
-
- wire formats in docs clarified
-
-commit 98801ebcaea1117ae596a3bae0653c3720a94359
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Mar 10 12:19:39 2010 +0100
-
- Documentation fixes
-
-commit bc468b34513a0fd76e69e03f3f978abd7d8c3871
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Mar 9 19:29:41 2010 +0100
-
- Add missing section with zmq_version()
-
-commit edebff902a9785ecdb3a27f6a78ac7cc68b38a56
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Mar 9 18:58:59 2010 +0100
-
- Add dependency for zmq_epgm.7
-
-commit ca70b40383fd12ce866054dd87cecb3d732c8d9f
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Mar 9 18:53:42 2010 +0100
-
- Hack, zmq_epgm.7 needs to be copied from zmq_pgm.7
-
-commit 1aee86408d575d6572b071d7564da7f006d1757e
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Mar 9 18:47:31 2010 +0100
-
- Documentation rewrite
-
-commit d790940fd06060c8a2c624b0e41e470ad31ae0d8
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 9 18:14:49 2010 +0100
-
- udp transport renamed to epgm
-
-commit 5a776f5597cac632ca507e2d80ca0de064bba1d6
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 9 17:34:28 2010 +0100
-
- PGM late joiners would start receiving a complete message rather than a message part
-
-commit 0f891e091cc46775226ee1fe28784876395a7b92
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 9 17:24:42 2010 +0100
-
- message flags from the wire are written to zmq_msg_t and vice versa
-
-commit 531c6af0d4df606ddef15da821dad20399b9480a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 9 16:56:53 2010 +0100
-
- message flags added to zmq_msg_t strcuture
-
-commit 96ccc1c5fceb56bd7ffc2e6bef9ddab5347d722b
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 9 15:10:44 2010 +0100
-
- 'flags' fields added to the wire format
-
-commit e04e2cdbbaf351eb04164bdcd293fcb8fa22a9a4
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Mar 9 08:43:20 2010 +0100
-
- rollback functionality added to pipe
-
-commit 9481c69b0f60068f12aa26699588fed6a8faceec
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Mar 6 16:32:19 2010 +0100
-
- problem with NIC name resolution on OSX fixed
-
-commit 26b0aea24f9add0a1811e23f709d96b44b459571
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Mar 3 17:01:08 2010 +0100
-
- Win32 build fixes
-
-commit 352da8ae8775f057a7ec67a7bd3f2270ac1c4d0f
-Author: unknown <bundra@.(none)>
-Date: Wed Mar 3 15:47:21 2010 +0100
-
- type mismatch in tcp_listener (win version) fixed
-
-commit 14054ecce7d367d8e3d47f84f72d2fc748aec8e4
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Mar 3 09:41:57 2010 +0100
-
- Fix typo: zmq_close -> zmq_msg_close
-
-commit 708298d798693a19ace9a4811a3760d8de0a5c1d
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Mar 3 00:08:11 2010 +0100
-
- Fix possible lockups when reading from ZMQ_REP sockets
-
-commit 157a66fc42d46c79edc01f6feed8f482fb5d53f1
-Author: unknown <bundra@.(none)>
-Date: Mon Mar 1 18:33:16 2010 +0100
-
- polling on POSIX sockets returns POLLERR (win32)
-
-commit 4e7158b67dcbbc307e76616a85aa34cc83ad6606
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Mar 1 17:40:39 2010 +0100
-
- return POLLERR from polling on POSIX sockets (linux version)
-
-commit 7442f53956e5d32d9c6a3543f8bef1664a773926
-Merge: ea0a44c 83f85ea
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 27 14:18:21 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit ea0a44c8a964cad4276ec216319d32e95e4a4bc0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 27 14:18:02 2010 +0100
-
- Ruby binding removed
-
-commit 83f85ea51dee1fb2fcee22543a90361b860d6cb8
-Author: unknown <bundra@.(none)>
-Date: Sat Feb 27 13:49:53 2010 +0100
-
- ruby binding removed from msvc build
-
-commit 696ada883331359bee76b1ea996d8ac846624bea
-Author: unknown <bundra@.(none)>
-Date: Sat Feb 27 13:36:52 2010 +0100
-
- python binding removed from nsvc build
-
-commit 45414b5444db0a1f7e325c7dce92fbe84667d093
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 27 12:23:22 2010 +0100
-
- python binding removed
-
-commit efefa069b2ce407a7da4328ab024c47920a76960
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Feb 26 20:03:58 2010 +0100
-
- Cygwin support
-
-commit deda7ca54a3c8f1ba735e8654ca87f8808606122
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 26 17:28:09 2010 +0100
-
- Java Poller patch
-
-commit 4a1a83887d6faf36cb01f1c69142e6aafafe5eba
-Author: unknown <bundra@.(none)>
-Date: Fri Feb 26 16:42:52 2010 +0100
-
- Win32 build of Java binding fixed
-
-commit 4440b13c359dab2c1ba55e31c604ac093172d68e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 26 15:55:36 2010 +0100
-
- Poller object implemented in Java binding
-
-commit 1c4daf79ce12da75acb8010c99b3c1d509a7a950
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 26 14:28:20 2010 +0100
-
- MIT license text added
-
-commit 57e057c825156b6effd15c07ee302f4ccdd2561c
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 25 16:29:17 2010 +0100
-
- 1st version of Java poll added
-
-commit ed8fe68383ca94ca33a9919bc2ed5b5a5d62cab0
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 24 17:27:31 2010 +0100
-
- handle invalid PGM connection string decently
-
-commit be51cfa419bb6c75eb24d241769a7c5543c432a7
-Merge: 0b4172b b7f01f9
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 24 16:19:53 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 0b4172b8689b60ce254c6823d69962bbdbd031d4
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 24 16:19:14 2010 +0100
-
- minor cast issues on cygwin fixed
-
-commit b7f01f9071c26292c30517bac18dae92efaf3ffb
-Author: unknown <bundra@.(none)>
-Date: Wed Feb 24 15:33:03 2010 +0100
-
- chat example removed from win build; missing fd_signaler_t::poll on win added
-
-commit 476ebde6280a428e2dd8fee7c70670aa449831c9
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 24 13:02:29 2010 +0100
-
- use binary UUIDs instead of string representation to save some bytes
-
-commit cc5c30f5dc2d6490c0199709ceb2d86e3cc3895d
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Feb 24 12:09:24 2010 +0100
-
- Fix: OpenPGM is now distributed as .tar.gz
-
-commit bba36e6ee6ecdee5f3ded30b9f11e7684393bfd2
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Feb 24 12:07:24 2010 +0100
-
- Disable IPv6 support
-
- The current IPv6 support is half-assed and breaks for too many people.
- Revert back to IPv4 only for now.
-
-commit 39b89619742cf4aed25a5b3ccc5ff6d23d9d15cf
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Feb 24 09:41:10 2010 +0100
-
- Update OpenPGM to 2.0.24 (stable)
-
-commit ccd47f1ee8c9268b99478c6cce3d8b1aada62566
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 24 09:17:05 2010 +0100
-
- chat example moved to separate repo
-
-commit 8980a985828579d03f031b18a1bebcd65eded417
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 24 08:29:29 2010 +0100
-
- zmq_error used from ruby binding
-
-commit 551fa104ffdb8c417b7d75ce70c463992e7d4652
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 23 23:43:31 2010 +0100
-
- zmq_errno used in C++ binding
-
-commit 95329719cda2b941e422d06daad3a7ba4c4a8829
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 23 23:37:05 2010 +0100
-
- zmq_errno is exported from the DLL
-
-commit 2441ef11a22170499d7ae12865dc98a61230f7ed
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 23 23:28:25 2010 +0100
-
- zmq_errno helper function added
-
-commit 2dd55605ea3956413cb25cab705ffdbdb2e00da5
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 23 22:13:56 2010 +0100
-
- recv fails after polling for IN on REQ socket
-
-commit 025c9e173c58971993858ea66fb2eeaf08de195d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 23 17:22:52 2010 +0100
-
- execution disabled on certain source files; some comments on java binding; MSVC temp files added to .gitignore
-
-commit 71b4947f951f0120e4aadccb42f2452bb95dba06
-Author: unknown <bundra@.(none)>
-Date: Tue Feb 23 12:02:55 2010 +0100
-
- Win32 build fixed
-
-commit 7c0df6ee02eb792c6afea7f047539840addb2f02
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 23 11:52:33 2010 +0100
-
- Java binding beautified, inline documentation added
-
-commit ef1b5974891a30b15299464859023a531c2328f8
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 23 10:01:54 2010 +0100
-
- minor fix in zmq_socket(3) man page
-
-commit b9a612ff3f74a3add607b054213d0f52e85cc426
-Merge: f249555 61f0ef5
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 22 18:19:51 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit f24955519ac0d3b0da5dd87fbb7bfc8cc1e24295
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 22 18:19:26 2010 +0100
-
- zmq_poll doesn't exit when infinite timeout is set and interrupt occurs
-
-commit 61f0ef569b2f879b6b4e1f247253ceec08e774c7
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 22 18:16:40 2010 +0100
-
- NetBSD: Check for and use atomic_ops(3) if available
-
-commit 3a69cca386a895313729f418ee44443794feed0f
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 22 16:42:13 2010 +0100
-
- Fix $build_doc/$install_man check yet again
-
-commit 1294c1d33a1c73218eb94bf18ceb9ae873d08891
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Feb 21 16:58:53 2010 +0100
-
- typo in zmq_ipc(7) fixed
-
-commit ff99d753ae30a7b5fef730fdcf1643e2928d9993
-Author: malosek <malosek@fastmq.com>
-Date: Sat Feb 20 21:03:12 2010 +0100
-
- Minor buid system tunning
-
-commit 740e531fbb47ad324737c075251c674e9dced6f1
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 20 09:11:30 2010 +0100
-
- Aleksey Yeschenko added to the credit section of AUTHORS file
-
-commit 57148b1fdeec0080b77ecfa837add9557226261c
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Fri Feb 19 18:23:54 2010 +0100
-
- Add missing check for install_man=yes
-
- Fixes git builds w/o asciidoc, bug introduced in 46824abe
-
-commit 8b86dcf81cc7b80267f334f4f26dfd319532ad25
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 19 17:50:47 2010 +0100
-
- build on cygwin enabled
-
-commit 727054547f32680f7db098497c2d7b1a0b20e2d8
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 19 17:02:07 2010 +0100
-
- don't check for identity, if the connection is anonymous
-
-commit aff1f6621ae13083c7f15f7f1f808560254a2dcb
-Merge: 75f571c 2a79a94
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 19 15:25:05 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 75f571c8844231f4172f131e1dd6ba2348eb54e5
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 19 15:24:43 2010 +0100
-
- Multi-hop REQ/REP, part XII., generate unique identities for anonymous connections
-
-commit 2a79a943de417679c562cd4a917e1d1bc19b0d25
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 18 19:38:15 2010 +0100
-
- Add NetBSD support
-
-commit 776b12633981fd95050e138daeeba00a65d9532b
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 18 19:27:35 2010 +0100
-
- Fix typo
-
-commit ab27f84b14a317d78a9dd145ef5c82e0ef88f583
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 18 19:27:15 2010 +0100
-
- libstdc++ depends on libm on some platforms
-
-commit 495f0d105f809a265c34aa9a0eb20af0dcdcf283
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 18 17:29:14 2010 +0100
-
- Fix detection of libstdc++
-
- We only care about libstdc++ when using GNU C++.
- Further, libstdc++ depends on libm on some platforms, fix this.
-
-commit 46824abeb2b016c51f406401d965816f71189aed
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 18 17:25:49 2010 +0100
-
- Never build docs from tarball releases
-
- This fixes the build_doc logic to work as advertised and never
- try to (re)build documentation when working with a tarball release.
-
-commit 8be491b7bdb8525eb37cebf355697c566a482e2d
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 18 13:46:00 2010 +0100
-
- Use feature test macros more conservatively
-
- It turns out that feature test macros are a complete mess, and defining
- _GNU_SOURCE and _POSIX_C_SOURCE together breaks some systems. So we try
- and define the appropriate "make everything visible" combination specific
- to each system instead. This may still break something, so people should
- test their platforms and speak up if so.
-
-commit d008637bc42da3fca50e423c2df0736be2745ac7
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 17 21:16:59 2010 +0100
-
- one more attempt to fix the previous win32 problem
-
-commit f97da5e6449b183ad3ebb9b0ba8c37ff3dc17387
-Merge: e385319 41354bf
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 17 20:33:46 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit e385319e5aaff6deafddfb216b24f026b461caa6
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 17 20:33:00 2010 +0100
-
- recv returning -1 while errno=0 fixed
-
-commit 41354bfa9820eb4495cf98342177d036df2a7dc7
-Author: unknown <bundra@.(none)>
-Date: Wed Feb 17 20:16:19 2010 +0100
-
- zmq_version fixed on Win32 platform
-
-commit f745c96a9bcf930d10fe31de5f7b3e772cccfa83
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Feb 17 15:40:26 2010 +0100
-
- Add POSIX and GNU Feature Test Macros
-
- This should fix more exotic POSIX platforms such as HPUX which insist on
- having _POSIX_C_SOURCE defined to get proper threading behaviour. We also
- define _GNU_SOURCE so that we get any extensions on systems with glibc, e.g.
- eventfd.
-
-commit 9d8623b28f09f5a6db94c7d69ae264984ef1fbe3
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 17 08:30:27 2010 +0100
-
- ZMQII-76: Bug in how replies are handled when the REQ endpoint goes away
-
-commit 33cb20a747a2ca2c7b0487b023cfd6548ffe11e8
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 16 23:31:17 2010 +0100
-
- ZMQII-77: Put librbzmq symbols into ZMQ module
-
-commit 1e7878489dc5d3013b5e5858fe404ab6b4a6947a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 16 23:02:59 2010 +0100
-
- exconf.rb checks for libzmq.so installation
-
-commit 8214d386c3f10dcc7f034a1159e82aa2d470829f
-Merge: 4190f64 96b2690
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 16 22:20:09 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 4190f64d8cfc3950bc456ea7793db72130d05feb
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 16 22:19:33 2010 +0100
-
- Special exception clause added to LGPL license
-
-commit 96b2690716a811a4c782de0eccfb9affa398cfe4
-Merge: 60ce5cc a2f9899
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Feb 16 19:59:32 2010 +0100
-
- Merge branch 'master' of github.com:sustrik/zeromq2
-
-commit 60ce5cc82a48d5881cb493a5b6b3afba19bd0863
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Feb 16 19:58:55 2010 +0100
-
- PGM tarball should be removed on 'distclean', not 'clean'
-
-commit b9caa319e279cd8cd367e0a64308b9e80c4ead3d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 16 18:30:38 2010 +0100
-
- Multi-hop REQ/REP, part XI., finalise the XREQ/XREP functionality
-
-commit 2ddce205350f11dacd8d8550f7d4e6e088c7fbcd
-Merge: 43620b3 a2f9899
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 16 18:03:41 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit a2f9899f6a1fad3f9c73fc7599445bdde0b95ec4
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 16 17:50:36 2010 +0100
-
- missing COPYING file added
-
-commit afb526f31a82b8697b5f7e73e50b14705a3a74b2
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Tue Feb 16 00:11:38 2010 +0100
-
- Fix 'make dist' to work with no special magic
-
-commit 8e9b78af271ae54882abf3010260d1e80ddd70f2
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 23:59:35 2010 +0100
-
- Correct path for pgm distclean
-
-commit df0c18ca17aa0dcd0e9f3737666a794b943f0982
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 23:54:49 2010 +0100
-
- Missed one instance of pgm2
-
-commit b09eeeb2fac380da1e3455cdf97278850842e1c8
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 23:52:08 2010 +0100
-
- Update gitignore
-
-commit 80c820d758aa65d71fbf4a24fd59d11de1f72fa5
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 23:51:05 2010 +0100
-
- Cleaning up more PGM cruft
-
-commit 635e314643885ce8508ee64632bed7d6228fe8b6
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 23:09:57 2010 +0100
-
- Clarify python.h messages
-
-commit 55800cea8c63ea84bd99e4c660ef1fd17a353e32
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 23:02:24 2010 +0100
-
- Fix typo
-
-commit 5687661ba4a1ecf70e130047dc288cb6cff6f21a
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 22:58:45 2010 +0100
-
- Cleanup messages from configure.in
-
-commit 48a90cfb347bc983362ce2bc021591d513d6a5ec
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 22:25:01 2010 +0100
-
- Replace check for sparc with host_cpu
-
-commit 0ded6c1973596436d7e5c54cfb89ada4d6c7473d
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Mon Feb 15 22:17:18 2010 +0100
-
- Multiple fixes to --with-pgm
-
- Disallow build --with-pgm on non-x86/AMB64 CPUs
- Check correctly for all dependencies required by --with-pgm
- Don't assume tar has -j
- Reorder --with-pgm checks
-
-commit 94c74d5c18183b49507d633c7b06713841cfcb03
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 15 21:04:34 2010 +0100
-
- Brian Granger added to credits list
-
-commit f96f53c9687b5a032ef45ce42154a7f944492eec
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 15 21:03:11 2010 +0100
-
- ZMQ_POLLERR placeholder added to zmq.h
-
-commit 5041b0bc0bce43e5b6d8b6c6264141d33f3c2a7c
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 15 20:35:00 2010 +0100
-
- fixing the previous commit :(
-
-commit 7778010d76e6da534307ca3f0a3506d3d7f0ec5d
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 15 19:58:47 2010 +0100
-
- care taken of the fact that AI_NUMERICSERV is not defined on OSX 10.5
-
-commit 817c89a78ea7b773046b010ca129fd1206e1c8f0
-Author: malosek <malosek@fastmq.com>
-Date: Mon Feb 15 19:42:05 2010 +0100
-
- removed first dummy run of PKG_CHECK_EXISTS
-
-commit 43620b3d35e3f3a6e49046fdc0426651bf58dedb
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Feb 14 13:34:48 2010 +0100
-
- Multi-hop REQ/REP, part X., optional delayed creation of pipes during connect
-
-commit 4405250d93a2ad6eb3940c4bc4fe8ea32bd52f9e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 13 15:30:03 2010 +0100
-
- Multi-hop REQ/REP, part IX., pass the peer identity as far as socket_base_t
-
-commit f5ce81f2893ec0707c2f4346740878e68b51e13a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 13 14:07:30 2010 +0100
-
- Multi-hop REQ/REP, part VIII., new blob_t type used for holding identity
-
-commit cdc2efe9b5f0d1f45065b1c32e5eabd7e9f78a12
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 13 13:07:33 2010 +0100
-
- Multi-hop REQ/REP, part VII., identity-related algorithms rewritten
-
-commit 923eacd28a725a6b32de588fe7a54dbe252d84aa
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Feb 13 09:09:40 2010 +0100
-
- Multi-hop REQ/REP, part VI., session 'name' renamed to 'peer_identity'
-
-commit 2e78e48503375a415d95ee8df80df9c065172abc
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 12 20:49:00 2010 +0100
-
- Multi-hop REQ/REP, part V., peer identity is passed from init object to session
-
-commit d8430f4b9a43bf8c99854298edc9f1bc35c0e8ec
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 12 20:03:02 2010 +0100
-
- Multi-hop REQ/REP, part IV., add command deallocation mechanism
-
-commit 313b5dfadd8753b341197cc109bce40e08856cf6
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 12 19:42:35 2010 +0100
-
- Multi-hop REQ/REP, part III., change 'type' in options to simple 'traceroute' flag
-
-commit 96e0442332fcc680ddafdcaa8fcbdc6acd992c76
-Merge: 36a5763 dc8f4b1
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 12 15:58:22 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 36a576370ccfed3c104850b5b95a6ed3870edbea
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 12 15:57:54 2010 +0100
-
- Multi-hop REQ/REP, part I., tracerouting switched on on XREP socket
-
-commit dc8f4b1b761103784b422b7604bc8f36d429d3f4
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Fri Feb 12 15:08:57 2010 +0100
-
- Fix memory leak in bind()
-
-commit 7b4cf2a4d040057f6f378cac2cd125513a859c1b
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 12 13:33:50 2010 +0100
-
- Multi-hop REQ/REP, part I., socket type is known to all associated objects
-
-commit cd7300fd4f25754f844b17a77685ec837ebecbbb
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Fri Feb 12 12:12:49 2010 +0100
-
- Resolve command starvation in recv()
-
-commit 7f7ac843d58b3d8a77f681fa4c35bd21726b6f31
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 11 17:51:47 2010 +0100
-
- Next 0MQ release will be 2.0.6
-
- As decided on the mailing list, there have been five 2.x releases to
- date, so the upcoming release will be numbered 2.0.6.
-
-commit de41c9da31246314bb2b0c55dfe3b2884d48df3b
-Merge: 30b967e 92d0147
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 11 17:51:08 2010 +0100
-
- Merge branch 'master' of github.com:sustrik/zeromq2
-
-commit 30b967e2a439ce76b1141d34fa3c8ee9f87a88a8
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Thu Feb 11 17:49:40 2010 +0100
-
- Integrate version numbering into autoconf
-
- configure.in is now the master source for the package version number,
- this propagates to src/platform.hpp (for zmq_version) and doc/Makefile.am
- (for documentation generation) automagically.
-
-commit 92d0147b20f77cad5d20e257aec502f628e7889e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 11 16:50:40 2010 +0100
-
- python binding build with 2.4 version of python fixed
-
-commit 432fbd796bb4905fb19ceee802009b17e88e9256
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 11 10:43:59 2010 +0100
-
- ZMQII-72: Add zmq_version function (documentation)
-
-commit bd9213e71222df66634d59581264ffe67210222c
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 11 10:29:33 2010 +0100
-
- ZMQII-72: Add zmq_version function
-
-commit 7cab423fc20e46f54fa561e51b566cc8a63ca5c1
-Merge: bc9b7f1 354efc5
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Feb 10 17:14:21 2010 +0100
-
- Merge branch 'master' of github.com:sustrik/zeromq2
-
-commit bc9b7f1f54b9dcf754021f1f7eb766d71cc97f29
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Feb 10 12:48:04 2010 +0100
-
- lb: bugfix - never skip active pipe when sending msg
-
-commit 6b3c1798e7554dd1ce63b2ad137e327f3f32fcf1
-Author: Martin Hurton <hurtonm@gmail.com>
-Date: Wed Feb 10 12:47:34 2010 +0100
-
- fq: bugfix - don't read msg from inactive pipe
-
-commit 354efc513fdb4096f8830e6c2e3e8f1311303e61
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Feb 10 16:18:46 2010 +0100
-
- Convert documentation to AsciiDoc
-
-commit 2d44bf3644c8e12aa86c48e9da4df19bfa9ea703
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 10 11:04:28 2010 +0100
-
- ZMQII-69: Make 0MQ build on HP-UX
-
-commit 8c25bab31d63bf5e2c4eec6d9084cf7d1c1e5dd3
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 10 10:42:54 2010 +0100
-
- ZMQII-70: zmq_poll on win32 fails with EINVAL
-
-commit 8f86cac2f6721eec4b600383eb113f7fedf41ce1
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 9 19:23:15 2010 +0100
-
- ZMQII-69: Make 0MQ build on HP-UX
-
-commit fd673ae231119682a242967551cfa034fa32791a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 9 15:21:26 2010 +0100
-
- couple of typos in the documentation fixed
-
-commit 6b2ca4e158c3394f5aba8f0f01ff1734423683f9
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 9 15:15:44 2010 +0100
-
- ZMQII-67: Build checks for python even if it's not needed
-
-commit 4c870ede7fdecaf1f952b01096e09cc03a7c7aef
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 9 09:08:37 2010 +0100
-
- ZMQII-57: Shutdown OpenPGM library
-
-commit 396e41a2a4b31f91ef4c4458d53be9e3a9b4bb92
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 8 18:55:51 2010 +0100
-
- minor change to README
-
-commit 01533a5aefb49e23be95cab9cfa5ca32cd438d25
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 8 18:37:48 2010 +0100
-
- ZMQII-65: Two OS threads are mapped to the same app_thread_t
-
-commit 7593d815ac57f2877480c5056b2f1aa65460f5c3
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Mon Feb 8 10:34:12 2010 +0100
-
- ZMQII-64: First message stuck in 0MQ in case of immediate disconnection
-
-commit 427bc3276aa236c8691fee7e634717d0579a3055
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Feb 7 16:24:14 2010 +0100
-
- minor code cleanup
-
-commit b0ee6b0c8ab8a5052a5e111dda24308dd00c0d62
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Feb 7 11:31:05 2010 +0100
-
- ZMQII-62: zmq_close after sending message via P2P socket fails
-
-commit bbaa494fb569d94c356ddecca7dbf249ffc217cf
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Feb 7 09:14:43 2010 +0100
-
- ZMQII-59: TCP server crashes sometimes when message is send and socket is closed immediately
-
-commit d21bf21a362cf6d20d8d060bb91ee2fdca1dd88b
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Fri Feb 5 13:00:49 2010 +0100
-
- allow async connect on Win32 return WSAECONNABORTED
-
-commit 0888fcd06f1c66ec3dfab744bfc24d1486737c7e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 4 23:58:41 2010 +0100
-
- yqueue_t uses malloc/free instead of new/delete
-
-commit 30076c4f7a5b0c70ef0c5a6574cac531bc996f5e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 4 17:46:47 2010 +0100
-
- ZMQII-58: TCP connecting asserts on Win32 (same fix for POSIX)
-
-commit c46b7ed1978ead346022577ff015b092f3257c84
-Author: unknown <bundra@.(none)>
-Date: Thu Feb 4 17:40:04 2010 +0100
-
- ZMQII-58: TCP connecting asserts on Win32
-
-commit b86483acbe109566f4e0fb43266fdd98e7648d55
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 4 14:50:59 2010 +0100
-
- ZMQII-50: Document Ruby Bindings
-
-commit bc90231227a84f4b7dffe432a8efa70b75c19031
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Thu Feb 4 09:39:57 2010 +0100
-
- contrain interface name resolving in OpenPGM to IPv4 interfaces
-
-commit 0f697fe2b460dfbec7481f6d535b95f6b4cc2eac
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 3 20:04:44 2010 +0100
-
- ZMQII-56: Avoid allocation of chunk in yqueue.hpp by keeping a spare one
-
-commit 72bbc92b70a67fab1dbba6fbd53f574944bdd8e4
-Merge: 6502c16 4172fdd
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Feb 3 15:54:39 2010 +0100
-
- Merge branch 'master' of github.com:sustrik/zeromq2
-
-commit 6502c16a7fd878e61f0672a47e2cdb4d56ab0eb2
-Author: Martin Lucina <mato@kotelna.sk>
-Date: Wed Feb 3 15:52:11 2010 +0100
-
- Update OpenPGM to 2.0.23rc8
-
-commit 4172fdd6970d4b42443442bf6633f9a9bd4c6f2b
-Author: unknown <bundra@.(none)>
-Date: Wed Feb 3 14:55:46 2010 +0100
-
- Win32 build fixed
-
-commit 7c25feb51bdbc9563cc65ff4829f761ef7231483
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Wed Feb 3 13:06:34 2010 +0100
-
- ZMQII-55: At most one PGM/UDP transport can be opened
-
-commit 9cee8f9c3e22f1e880988271ab1c31c92827efde
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 2 15:11:25 2010 +0100
-
- problem with PGM messages larger than 1 MTU fixed
-
-commit 27e47bdcc0358b84a57378e19359556e2dbcb50e
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 2 13:29:31 2010 +0100
-
- ZMQII-54: Affinity isn't honoured
-
-commit 5d16070ffcd426e81ea27520f6847d68e5e5af80
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 2 08:46:35 2010 +0100
-
- ZMQII-53: Memory leak when using invalid socket type
-
-commit a1e70f29575994798df1d57314193782f6d9cdcb
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 2 08:27:38 2010 +0100
-
- ZMQII-52: Asserion during reconnection
-
-commit 528610ff55ef283b99cbcda007200a6b4092be59
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Tue Feb 2 08:14:23 2010 +0100
-
- typo in zmq_socket(3) man page fixed
-
-commit 00b9a5dedeb47efd78aea59b579a4b5befba743a
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sun Jan 31 20:14:30 2010 +0100
-
- ZMQII-51: Implement O(1) topic matching
-
-commit 70ea8e9d4b88a1ecb1c076eccc2e9bd872c2230c
-Author: Martin Sustrik <sustrik@250bpm.com>
-Date: Sat Jan 30 13:40:50 2010 +0100
-
- ZMQII-48: Implement P2P socket type
-
-commit eb47c1b064ec2f433d3889b7fd4a297a965166bb
-Merge: 2784f90 4d5e643
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Fri Jan 29 08:39:36 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 2784f90d595a253e071244d440f78e667f6a957c
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Fri Jan 29 08:39:19 2010 +0100
-
- moving debian directory to the root of the project
-
-commit 4d5e643299e22b53120173319490957b98c0199e
-Author: malosek <malosek@fastmq.com>
-Date: Thu Jan 28 19:19:25 2010 +0100
-
- patching libtool script moved at the end of configure
-
-commit 849095a042b8326f5789baa04d1dbb7ca36d4632
-Merge: f17f0fa e5ff617
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Thu Jan 28 12:45:37 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit f17f0fa67bc5a373f3fc7964aaad4f08aa1dc761
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Thu Jan 28 12:45:12 2010 +0100
-
- CL binding ripped out of the tree
-
-commit e5ff617c4e061d29c9a019efa2292fd09c87a71e
-Author: malosek <malosek@fastmq.com>
-Date: Wed Jan 27 20:58:40 2010 +0100
-
- fixed OpenPGM compilation on mingw32
-
-commit 8f57ff4634ae44cd998bc0b864a8987f241e2fce
-Author: malosek <malosek@fastmq.com>
-Date: Wed Jan 27 20:45:43 2010 +0100
-
- fixed OpenPGM compilation on mingw32
-
-commit 2056c888d2567ab96c3539fd60bfb652e19df335
-Author: malosek <malosek@fastmq.com>
-Date: Wed Jan 27 18:29:45 2010 +0100
-
- changed version of the master branch back to dev
-
-commit 0b97e7a4f23f7add763ac6e0fc945c9a342a7d32
-Author: malosek <malosek@fastmq.com>
-Date: Wed Jan 27 11:30:22 2010 +0100
-
- libpgm updated to 2.6.21rc6
-
-commit 943125bd12dbf181f4dfce7babddf1af7bcb7e18
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Wed Jan 27 08:47:01 2010 +0100
-
- Hard-wired constant on OpenVMS replaced by symbolic constant
-
-commit aa27034db5d47f4630f464da53f63a0e62c34daa
-Author: unknown <bundra@.(none)>
-Date: Sun Jan 24 08:38:18 2010 +0100
-
- IPv6 patch - part V. (win32)
-
-commit adc5d7693d9279134c0494210b9d2b885e95d950
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Sun Jan 24 08:19:02 2010 +0100
-
- IPv6 patch - part IV.
-
-commit fca9a2159a1fb963901d11dc6f734a622baa92d6
-Merge: 079d327 454f43a
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Sat Jan 23 11:14:53 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 079d327670d9137d93f4dbe9eb6cfa6d4165b903
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Sat Jan 23 11:14:30 2010 +0100
-
- IPv6 patch - part III.
-
-commit 454f43a45b2d453b53984387e8a8a50cad568f41
-Author: unknown <bundra@.(none)>
-Date: Sat Jan 23 09:08:31 2010 +0100
-
- IP address resolving on Win32 fixed
-
-commit df4548aa76617314cb1a47e6d408cc663640cd70
-Merge: 2634934 d762e1a
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Sat Jan 23 08:20:01 2010 +0100
-
- Merge branch 'master' of git@github.com:sustrik/zeromq2
-
-commit 2634934999408124837afceaf577b75ed58116d7
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Sat Jan 23 08:19:30 2010 +0100
-
- IPv6 patch part 2/2
-
-commit 6aaf095dd259dc42d78cc7bd8c5a7f867eb23166
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Fri Jan 22 16:32:48 2010 +0100
-
- IPv6 support -part II.
-
-commit d762e1a9c976680dde2d2f38dac9f5861bd82dad
-Author: unknown <bundra@.(none)>
-Date: Fri Jan 22 13:29:46 2010 +0100
-
- Win32 build fixed
-
-commit 34d65e22c557671c74d6c51026b2434912966319
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Fri Jan 22 13:13:52 2010 +0100
-
- Tero Marttila's Ipv6 patch - part I.
-
-commit 6edec4fe93c60693a5faee7e4e8821eac4f43d4d
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Fri Jan 22 11:38:17 2010 +0100
-
- zmq_udp(7) man page fixed
-
-commit 70601c243fa7e91f5cceaa80190d7b413940020b
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Fri Jan 22 11:21:28 2010 +0100
-
- zmq_pgm(7) man page fixed
-
-commit d1e09578b275aca93c50cde078322a0348342c60
-Author: unknown <bundra@.(none)>
-Date: Fri Jan 22 07:54:16 2010 +0100
-
- Hardcoded loopback address removed from fd_signaler
-
-commit f4832faf29df6470bf59f1f1866c07fa4278a75b
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Thu Jan 21 16:30:42 2010 +0100
-
- small fix to man pages to comply with lintian
-
-commit b1b66df37c0b05ba05d9636234bad0cc02a1bd03
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Thu Jan 21 12:07:42 2010 +0100
-
- PGM man page improved
-
-commit 66ef22993f22a0d47703c1203f57d95c4316bc70
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Thu Jan 21 10:38:40 2010 +0100
-
- zmq_close man page improved
-
-commit a008af6088ef1ad3baf1b9e6ae699cc07367efa3
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Thu Jan 21 10:01:05 2010 +0100
-
- Asko Kauppi added to the list of authors
-
-commit f0757c003eb232247a460631276b40e4fc02f3c9
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Thu Jan 21 09:58:49 2010 +0100
-
- ZMQII-43: Race condition when writing to pipe
-
-commit 6a46ca75e5970733cfe135ecf77074b69fdda34f
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Wed Jan 20 09:22:41 2010 +0100
-
- ZMQ-42: Building with ICC fails
-
-commit 111f0ff078372e8a0f5c0b98170d451d6561e85e
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Wed Jan 20 09:19:03 2010 +0100
-
- ZMQII-41: Poll function in C++ binding doesn't convert errors to exceptions
-
-commit 6b0457fcaad3fa9a2e632b3799119c40da8dd6ca
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Tue Jan 19 12:48:38 2010 +0100
-
- minor documentation patch
-
-commit 7094edd6baf0d69c3879da7f16c7222388952931
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Mon Jan 18 15:57:33 2010 +0100
-
- error handling in C perf tests improved
-
-commit 4ceb83935062bb84fd5da702679a126d12aed8be
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Mon Jan 18 13:16:14 2010 +0100
-
- typos in man pages fixed
-
-commit bddff50271b7c4c15c34d7a0aa1c04f3e3e3c107
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Mon Jan 18 11:01:41 2010 +0100
-
- ZMQII-40: wrong return code from recolve_ip_interface
-
-commit 55944729ed5527692b1ead17af553aa32c316781
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Mon Jan 18 10:53:46 2010 +0100
-
- ChangeLog modified for 2.0-beta2 version
-
-commit f40e3a6931fb6463c349ef765d99515edc569fd7
-Author: Martin Sustrik <sustrik@fastmq.commkdir>
-Date: Sun Jan 17 17:49:34 2010 +0100
-
- version number bumped
diff --git a/util/network/zeromq/NEWS b/util/network/zeromq/NEWS
deleted file mode 100644
index 476b9b14..00000000
--- a/util/network/zeromq/NEWS
+++ /dev/null
@@ -1,497 +0,0 @@
-0MQ version 2.0.8 (Stable), released on 2010/08/25
-==================================================
-
-New functionality
------------------
-
-* The ZMQ_SWAP functionality has now been implemented for all socket types.
-
-Bug fixes
----------
-
-* Many bug fixes (about 30), see the ChangeLog for details.
-
-
-Documentation
--------------
-
-* zmq_device(3) is now documented and describes the built-in devices.
-
-* The ZMQ_XREQ and ZMQ_XREP socket types are now documented in zmq_socket(3).
-
-
-Interface
----------
-
-* By popular demand, the zmq_stopwatch_start, zmq_stopwatch_stop and zmq_sleep
- functions have been added back into distribution. This API is now in a
- separate include file, zmq_utils.h.
-
-* The ZMQ_UPSTREAM and ZMQ_DOWNSTREAM socket types have been renamed to
- ZMQ_PULL and ZMQ_PUSH for clarity. The old names are still defined for
- compatibility reasons and will be removed in a future version.
-
-* API calls that expect non-null parameters now return -1 and set errno to
- EFAULT if null parameters are passed.
-
-
-Thanks to
----------
-
-Everyone.
-
-
-0MQ version 2.0.7 (Beta), released on 2010/06/04
-================================================
-
-
-Distribution
-------------
-
-* The core documentation has been updated with many clarifications, especially
- in the description of the functionality provided by the different socket
- types.
-
-* The version of OpenPGM bundled with 0MQ has been updated to the 2.1.26 release.
-
-
-Building
---------
-
-* GCC-isms have been removed from the code and build system across the board;
- 0MQ should now build with no issues when using compilers other than GCC.
-
-
-Interface
----------
-
-* The zmq_init() function now has only a single parameter; the number of 0MQ
- I/O threads to create in the context being initialised. The app_threads and
- flags parameters have been removed.
-
-* The ZMQ_P2P socket type has been renamed to ZMQ_PAIR.
-
-* The ZMQ_LWM socket option has been removed; the low water mark for a socket
- is now computed automatically by 0MQ.
-
-* A zmq_getsockopt() function has been added.
-
-
-New functionality
------------------
-
-* Multi-hop request/reply is fully supported. This feature allows the insertion
- of device(s) between ZMQ_REQ and ZMQ_REP sockets thus enabling scenarios
- such as multi-threaded server, shared service queue, and other interesting
- messaging topologies. The entire infrastructure is transparent to
- applications.
-
-* Multi-part messages. A 0MQ message may now be composed of 1 or more message
- parts; each message part is an independent zmq_msg_t in its own right. 0MQ
- ensures atomic delivery of messages; peers shall receive either all message
- parts of a message or none at all.
-
- This feature allows for seamless zero-copy message passing when data are
- scattered in memory, and is an important building block for multi-hop
- messaging topologies.
-
-* Context termination and ETERM. The zmq_term() function has been
- changed to interrupt any blocking operations on open sockets, causing them to
- return the newly defined ETERM error code. This allows for orderly
- application termination, especially when multiple application threads are
- involved.
-
-
-0MQ version 2.0.6 (Beta), released on 2010/03/16
-================================================
-
-
-Distribution
-------------
-
-* The 0MQ core distribution has been slimmed down to include only the core
- C library and C++ language binding. Pointers to other language bindings can
- be found on the website. Examples have also been removed from the
- core and can be found elsewhere. Performance tests specific to a language
- binding can be found bundled with that language binding.
-
-* The 0MQ reference manual supplied with the distribution has been
- extensively rewritten, and is now provided in HTML as well as UNIX
- manpage format.
-
-* Commencing with this release, a 0MQ version numbering scheme has been
- introduced. The numbering scheme used is MAJOR.MINOR.PATCH. The "Beta" or
- "Stable" label is informative only and does not constitute
- part of the library version number, therefore this release is numbered
- 2.0.6 as the sixth release of 2.0.
-
-* The version of OpenPGM bundled with 0MQ has been updated to the stable
- 2.0.24 release.
-
-
-Building
---------
-
-* Many portability fixes, including support for new platforms: FreeBSD,
- NetBSD, HP-UX and Cygwin.
-
-* Invocation of configure has been simplified, all functionality is now
- built by default with the exception of OpenPGM.
-
-
-Interface
----------
-
-* The udp transport has been renamed to epgm to avoid confusion with
- unreliable unicast.
-
-* A ZMQ_POLLERR constant has been added to allow for polling on errors on
- Berkeley sockets with zmq_poll().
-
-* The zmq_version() function has been introduced and returns the version
- number of the 0MQ library.
-
-* The zmq_flush() function and ZMQ_NOFLUSH flag of zmq_send() have been
- deprecated and will be removed in a future release.
-
-
-Wire format
------------
-
-* The 0MQ wire format has been changed. A flags field has been added to
- allow for future extensions.
-
-
-New functionality
------------------
-
-* The experimental ZMQ_P2P socket type has been implemented.
-
-* Flow control has been implemented for all socket types. For details see
- the ZMQ_HWM and ZMQ_LWM socket options.
-
-* Subscription filters are internally matched with O(1) complexity.
-
-
-Licensing
----------
-
-* iMatix corporation has granted the following exception regarding static
- linking with the 0MQ library:
-
- As a special exception, iMatix gives you permission to link this
- library with independent modules to produce an executable,
- regardless of the license terms of these independent modules, and
- to copy and distribute the resulting executable under terms of
- your choice, provided that you also meet, for each linked
- independent module, the terms and conditions of the license of
- that module. An independent module is a module which is not
- derived from or based on this library. If you modify this
- library, you must extend this exception to your version of the
- library.
-
-
-Thanks to
----------
-
-This release of 0MQ was made possible by many contributors from the community,
-including:
-
-* Adrian von Bidder <avbidder@fortytwo.ch>, for contributing Debian packages.
-
-* Aleksey Yeschenko <aleksey@yeschenko.com>, for contributing a Lua binding.
-
-* Alessio Spadaro <alessio.spadaro@finservice.com>, for help with porting to
- HP-UX.
-
-* Bernd Prager <bernd@prager.ws>, for help with porting to Cygwin.
-
-* Brian E. Granger <ellisonbg@gmail.com>, for maintaining the Python binding.
-
-* Martin Hurton <hurtonm@gmail.com>, for implementing flow control.
-
-* Martin Lucina <mato@kotelna.sk>, for rewriting the 0MQ reference manual and
- many portability fixes.
-
-* Michael Santy <Michael.Santy@dynetics.com>, for testing this release with
- Infiniband.
-
-* Steven McCoy <steven@miru.hk>, for help with OpenPGM.
-
-* Toralf Wittner <toralf.wittner@gmail.com>, for contributing a Haskell
- binding.
-
--------------------------------------------------------------------------------
-
-Version 2.0-beta2
-
-ZMQII-29 Add timeout to zmq_poll function
-ZMQII-30 Build fails on MacOS X
-ZMQII-31 memory leak in zmq_poll (on timeout)
-ZMQII-33 zmq_poll may exceed timeout if signal interrupts the waiting
-ZMQII-34 ensure that poll won't return POLLIN event when the message will be filtered out anyway
-ZMQII-36 Chat example & forwarder broken because of changes subscribe semantics
-ZMQII-37 SIGSEGV when polling on REQ socket
-ZMQII-38 Compiler complains about missing virtual constructors
-ZMQII-39 Implement IPC transport
-
-Version 2.0-beta1
-
-ZMQII-27 Allow setting SNDBUF and RCVBUF size from 0MQ API
-ZMQII-22 Deadlock on zmq_close
-ZMQII-25 Implement streamed request/reply
-ZMQII-24 SEGFAULT when anonymous session disconnects
-ZMQII-26 Use zero-copy for large messages
-ZMQII-19 add --disable-eventfd configure option
-
-Version 2.0-alpha3
-
-ZMQII-17 Allow multiple senders for sigle mcast group aka multicast bus.
-ZMQII-16 Change "struct zmq_msg_t" to "zmq_msg_t" in C binding.
-ZMQII-15 Implement REQ/REP sockets.
-ZMQII-14 Change default for ZMQ_MCAST_LOOP to true.
-
-Version 2.0-alpha2
-
-ZMQII-11 Implement forwarder device
-ZMQII-10 Make connections interrupted during the init phase be closed silently
-ZMQII-8 Failure during orphan pipe deallocation
-ZMQII-7 Pipe detach fails on shutdown
-ZMQII-6 connection refused in tcp_connecter::connect leads to assert
-ZMQII-5 Only one consumer in a process gets the message
-ZMQII-4 Failure in dev/poll poller
-ZMQII-3 Implement message filtering
-ZMQII-2 SIGSEGV in zmq_connecter_init_t::read
-ZMQII-1 Win32 - failure on shutdown
-
-Version 2.0-alpha1
-
-Large scale refactoring of the code and new socket-like API.
-
-Version 1.0.1
-
-ZMQ-289 Return -1 from bind when remote object is not registered in zmq_server
-ZMQ-288 Return -1 from create_exchange /queue when object can not be created
-ZMQ-287 Disabling receiving messages from queue
-ZMQ-286 create handle_t class with == and != operators
-ZMQ-285 multiple listeners listening on the same machine with UDP encap.
-ZMQ-284 mask function inaccessible via Java on Windows
-ZMQ-283 Lua binding for 0MQ
-ZMQ-282 Cannot send message containing zero byte via Ruby
-ZMQ-281 Publisher restart fails on PGM and Win/Linux
-ZMQ-280 Broken build using MSVC 2005
-ZMQ-278 Load-balancing exchange doesn't load balance
-ZMQ-277 TCL binding
-ZMQ-276 Check for pkg-config in autogen.sh script
-ZMQ-275 Check for eventfd by running test program during ./configure
-ZMQ-274 can not compile estimate_cpu_freq with PERF_CPU_FREQUENCY set
-ZMQ-273 gcc (GCC) 4.4.0 invalid conversion from const char* to char*
-ZMQ-272 make sure message content is created properly
-
-Version 1.0.0
-
-ZMQ-271 Build OpenPGM with 0MQ build system
-ZMQ-270 0MQ windows pgm support
-ZMQ-269 Constness is better for the zmq_send data_ argument
-ZMQ-267 assert in api_thread.cpp384 void zmqapi_thread_tprocess_command
-ZMQ-266 Memory coruption in api_thread_tcreate
-ZMQ-265 Missing librbzmq.vcproj file
-ZMQ-264 Java examples can not be run on OpenVMS
-ZMQ-263 Warning preventing compilation of chat example
-ZMQ-262 CLONE -QNX port -- working in 6.4.0?
-ZMQ-261 add --with-rubydir configure option
-ZMQ-260 syntax error caught by gcc 4.4
-ZMQ-253 Allow to establish arbitrary AMQP wiring on connection startup
-ZMQ-249 Handle EAGAIN and EWOULDBLOCK as the same error
-ZMQ-248 Call in/out events directly from I/O thread
-ZMQ-247 Move physical thread from poller to individual I/O threads
-ZMQ-240 Pack Java classes into a .jar
-ZMQ-239 make --with-clr imply --with-c
-ZMQ-237 Java extension not working with Win32 package
-ZMQ-235 JAVA build fails if PATH is not set to JDK/bin
-ZMQ-228 Make java documentation via JavaDoc
-ZMQ-226 Move Jzmq to org.zmq package
-ZMQ-204 Use non-blocking accept
-ZMQ-130 Optimise mux_t for large number of idle connections
-
-Version 0.6.1
-
-ZMQ-254 Race condition in pipe_twriter_terminated
-ZMQ-255 Python perf tests broken
-ZMQ-257 pgm build fails various declared errors
-ZMQ-259 Ruby extension for libzmq
-
-Version 0.6
-
-ZMQ-73 Redesign MT throughput test
-ZMQ-102 Move load-balancing functionality from 0.3.3 branch to the trunk
-ZMQ-136 Check I/O threads for rm_fd(x) followed by add_fd(x) behavior
-ZMQ-138 Avoid exporting 0MQ symbols from libs using 0MQ on Windows
-ZMQ-147 Python app hang-up, unresponsive to Ctrl+C
-ZMQ-164 Add reconnection functionality to PGM
-ZMQ-166 Slow down the reconnection process
-ZMQ-176 Update examples to reflect the auto-reconnect feature
-ZMQ-179 Implement OS-agnostic time measurement
-ZMQ-180 What happens if queue is full & disconnection occurs?
-ZMQ-183 Change OpenPGM to PGM in build options
-ZMQ-185 Move msg_store to the trunk
-ZMQ-186 Write an example to demonstrate load-balancing
-ZMQ-187 Declaring same object (exchange, queue) twice doesn't fail
-ZMQ-188 Schemas used by global object URIs don't conform to RFC3986
-ZMQ-190 Compile libdnzmq with /clr support (no old syntax)
-ZMQ-193 Reconnect on Solaris platform not working
-ZMQ-194 Let sender use RDTSC mechanism for command throttling in MSVC build
-ZMQ-195 Failure during fg
-ZMQ-196 System out of sockets after number of reconnections
-ZMQ-197 Offload signal handling from I/O threads
-ZMQ-198 Timers can never expire
-ZMQ-199 Make receive in libczmq zero-copy
-ZMQ-200 Virtualise global locator
-ZMQ-202 Check out SCTP support on QNX
-ZMQ-203 Add auto-reconnect to AMQP engine
-ZMQ-205 Check handling of async errors on a socket
-ZMQ-206 Make zmq_server not to drop the endpoint info on service disconnect
-ZMQ-207 zmq_server should be able to read endpoint info from XML file
-ZMQ-210 Switch perf tests to load-balancing mode
-ZMQ-211 Port Data Dam functionality to Win32
-ZMQ-212 Integrate add and inc in atomic_counter into a single function
-ZMQ-213 When 0MQ infrastructure is terminated, sockets are not closed correctly
-ZMQ-215 Java on Win32 platform not stopping in case of assertion
-ZMQ-217 zmq_server can be crashed by incorect input data
-ZMQ-218 C# integration not working anymore
-ZMQ-219 Change .NET extesnsion to use CamelCase
-ZMQ-220 Check whether individual APIs conforms to API guidelines document
-ZMQ-221 Allow to create global object w/o specifying the location
-ZMQ-222 SPARC code for atomic_counter broken
-ZMQ-223 Rename czmq/jzmq/dnzmq etc. to simple "zmq"
-ZMQ-225 Application fails when it's connected from telnet
-
-Version 0.5
-
-ZMQ-17 look at pgm_transport_set_recv_only and ...send_only
-ZMQ-26 Allow for "any" network interface
-ZMQ-31 Implement SCTP support
-ZMQ-45 Normalise API vs. I/O thread
-ZMQ-78 Make connection establishment asynchronous
-ZMQ-79 Refactor handling of broken connections
-ZMQ-100 Move flow control and queue limits from 0.3.3 branch to the trunk
-ZMQ-101 Move reconnection functionality from 0.3.3 branch to the trunk
-ZMQ-112 build via cmake (makefile generator)
-ZMQ-115 Identify SPARC V9 microarc and/or availability of CAS instruction
-ZMQ-116 Implement .NET extension
-ZMQ-129 Make engine_source part of the polling object
-ZMQ-139 /dev/poll introduces latency on Solaris
-ZMQ-144 Investigate latency impact of using eventfd instead of socketpair on Linux
-ZMQ-146 Check whether i386 and x86_64 in atomic_ptr can be unified
-ZMQ-148 Change watermarks from int to uint64_t
-ZMQ-149 Virtualise creation of 0MQ connections
-ZMQ-150 Negative numbers in unsigned type in atomic_counter
-ZMQ-151 Modify build system to build SCTP extension
-ZMQ-152 Merge BP/PGM functionality into the trunk
-ZMQ-153 compiler warnings on solaris
-ZMQ-155 Build libzmq with sctp support witch cmake
-ZMQ-160 Get rid of create functions in engines
-ZMQ-162 CMakeLists.txt files not updated with latest changes
-ZMQ-165 Implement reconnection notifications
-ZMQ-169 Return queue id from receive function in libpyzmq
-ZMQ-171 Add AMQP support to 0MQ
-ZMQ-173 Throughput test should accept 2 interface specifications
-ZMQ-174 When application is killed on Win32, zmq_server fails
-ZMQ-175 Chatroom example doesn't pass messages after reconnection
-ZMQ-177 Update language extensions to take advantage of auto-reconnect
-ZMQ-181 Rafactor the code to support multiple notification types
-
-Version 0.4
-
-ZMQ-21 Clean up the command passing code
-ZMQ-36 autogen/configure fails on Solaris
-ZMQ-39 Check whether using CAS for btsr and izte on x86 platform improves latency
-ZMQ-40 Check autogen on FreeBSD
-ZMQ-41 Check autogen on OS X
-ZMQ-43 Use +m instead of memory in atomic operations
-ZMQ-46 Get rid of administrative pseudo-thread
-ZMQ-63 -mcpu=v9 CPPFLAG should be used only at sparc achitecture
-ZMQ-64 gcc 3.4.3 on opensolaris complains about -mcpu flag
-ZMQ-65 No error report when host name resolving fails
-ZMQ-66 Several files use atoi without including stdlib.h
-ZMQ-69 Make stdint.hpp hand-written rather than generated
-ZMQ-71 Virtualise thread management
-ZMQ-72 Remove platform.hpp
-ZMQ-74 Implement win32 version of tcp_socket and tcp_listener
-ZMQ-75 Virtualise mutexes
-ZMQ-76 Implement win32 version of ysemaphore_t
-ZMQ-80 Virtualise polling mechanisms
-ZMQ-81 Implement 'select' polling mechanism
-ZMQ-82 Rename i_context to i_thread
-ZMQ-83 "Resource temporarily unavailable" when running on 266MHz box
-ZMQ-84 zmq_server stops to respond
-ZMQ-89 Make i_pollable derived from i_engine
-ZMQ-94 Report error when malloc fails
-ZMQ-95 Add /dev/poll method of polling
-ZMQ-96 Add support for kqueue method of polling
-ZMQ-97 OpenBSD port
-ZMQ-98 QNX port
-ZMQ-99 use pyexec_LTLIBRARIES primary for libpyzmq
-ZMQ-103 Use non blocking sockets
-ZMQ-106 memory leak when sending message from Java
-ZMQ-111 Get rid of speculative operations
-ZMQ-113 Windows compiler (_MSC_VER 1310) doesn't support strncpy_s function
-ZMQ-117 select_thread doesn't implement rm_fd function
-ZMQ-119 select thread fails on shudown
-ZMQ-121 Fix all I/O threads to handle rm_fd correctly
-ZMQ-124 include gaurd is wrong
-ZMQ-126 Refactor I/O threads implementation to avoid duplication of common functionality.
-ZMQ-131 select_thread fails on Windows
-ZMQ-132 Pointer to poller_t is used before it is fully initialised
-ZMQ-134 Thread management in constructors/destructors
-ZMQ-135 Move retired list to the polling strategy-specific object
-ZMQ-137 Assertion fails at bp_engine, line 132, error_handler is not set
-
-Version 0.3.2
-
-ZMQ-54 Test programs are compiled with --rpath
-
-Version 0.3.1
-
-ZMQ-25 Allow to use network interface name instead of IP address
-ZMQ-29 Implement speculative write to socket
-ZMQ-33 Assign ports to global objects automatically
-ZMQ-34 Message size of zero causes application to hang up
-ZMQ-42 Change locators to deal with a single object type
-ZMQ-44 Some of the objects have non-functional auto-generated copy constructors
-ZMQ-47 Camera example is broken
-ZMQ-48 Sender fails when receiver disconnects
-ZMQ-50 Warning in chat example
-ZMQ-51 Make it possible to use single include (zmq.hpp) for client apps
-ZMQ-53 Segmentation fault when binding to non-existent queue
-ZMQ-55 raw_message_init (data,size,ffn) allocates more memory than needed
-ZMQ-56 zmq_server fails if too many apps disconnect abruptly
-ZMQ-58 Implement C binding for 0MQ
-ZMQ-59 Implement Java binding for 0MQ
-ZMQ-60 Implement Python binding for 0MQ
-ZMQ-62 Write man pages
-
-Version 0.3
-
-ZMQ-1 poll_thread hangs in destructor
-ZMQ-4 Missing -D_REENTRANT command line parameter while compiling 0MQ
-ZMQ-5 Check for buffer overflows in AMQP/0-9 marshaller/unmarshaller
-ZMQ-6 Allow dynamic adding of engines to poll_thread
-ZMQ-7 Implement dynamic assignment of engine IDs to engines
-ZMQ-9 Implement event batching in ysocketpair
-ZMQ-10 Remove remaining references to HAVE_CONFIG_H from the code
-ZMQ-11 Move 'alive' flag to the dispatcher
-ZMQ-12 Move dispatcher signalers into a separate array
-ZMQ-13 Allow up to 63 threads on x86_64 platform
-ZMQ-14 Implement new type of lock-free pipe
-ZMQ-15 Implement an infrastructure to pass arbitrary commands between threads
-ZMQ-16 missing stats_raw_den.R, stats_raw_lat.R in dist package
-ZMQ-20 Sync problem with ypollset/atomic_bitmap
-ZMQ-24 Redundant poll
-ZMQ-30 Implement epoll suport
-ZMQ-37 Identify SPARC V9 microarc and/or availability of CAS instruction
-
-Version 0.2
-
-ZMQ-2 Failure when mutexes are used atomic_uint32
-ZMQ-3 socket hangup at OS X
diff --git a/util/network/zeromq/README b/util/network/zeromq/README
deleted file mode 100644
index 65b774ac..00000000
--- a/util/network/zeromq/README
+++ /dev/null
@@ -1,39 +0,0 @@
-Welcome
--------
-
-The 0MQ lightweight messaging kernel is a library which extends the
-standard socket interfaces with features traditionally provided by
-specialised messaging middleware products. 0MQ sockets provide an
-abstraction of asynchronous message queues, multiple messaging patterns,
-message filtering (subscriptions), seamless access to multiple transport
-protocols and more.
-
-
-Building and installation
--------------------------
-
-See the INSTALL file included with the distribution.
-
-
-Resources
----------
-
-Extensive documentation is provided with the distribution. Refer to
-doc/zmq.html, or "man zmq" after you have installed 0MQ on your system.
-
-Website: http://www.zeromq.org/
-
-Development mailing list: zeromq-dev@lists.zeromq.org
-Announcements mailing list: zeromq-announce@lists.zeromq.org
-
-Git repository: http://github.com/zeromq/zeromq2
-
-0MQ developers can also be found on the IRC channel #zeromq, on the
-Freenode network (irc.freenode.net).
-
-Copying
--------
-
-Free use of this software is granted under the terms of the GNU Lesser General
-Public License (LGPL). For details see the files `COPYING` and `COPYING.LESSER`
-included with the 0MQ distribution.
diff --git a/util/network/zeromq/include/zmq.h b/util/network/zeromq/include/zmq.h
deleted file mode 100644
index bce12154..00000000
--- a/util/network/zeromq/include/zmq.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_H_INCLUDED__
-#define __ZMQ_H_INCLUDED__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <errno.h>
-#include <stddef.h>
-#if defined _WIN32
-#include "winsock2.h"
-#endif
-
-/* Win32 needs special handling for DLL exports */
-#if defined _WIN32
-# if defined DLL_EXPORT
-# define ZMQ_EXPORT __declspec(dllexport)
-# else
-# define ZMQ_EXPORT __declspec(dllimport)
-# endif
-#else
-# define ZMQ_EXPORT
-#endif
-
-/******************************************************************************/
-/* 0MQ versioning support. */
-/******************************************************************************/
-
-ZMQ_EXPORT void zmq_version (int *major, int *minor, int *patch);
-
-/******************************************************************************/
-// 0MQ errors.
-/******************************************************************************/
-
-/* A number random anough not to collide with different errno ranges on */
-/* different OSes. The assumption is that error_t is at least 32-bit type. */
-#define ZMQ_HAUSNUMERO 156384712
-
-/* On Windows platform some of the standard POSIX errnos are not defined. */
-#ifndef ENOTSUP
-#define ENOTSUP (ZMQ_HAUSNUMERO + 1)
-#endif
-#ifndef EPROTONOSUPPORT
-#define EPROTONOSUPPORT (ZMQ_HAUSNUMERO + 2)
-#endif
-#ifndef ENOBUFS
-#define ENOBUFS (ZMQ_HAUSNUMERO + 3)
-#endif
-#ifndef ENETDOWN
-#define ENETDOWN (ZMQ_HAUSNUMERO + 4)
-#endif
-#ifndef EADDRINUSE
-#define EADDRINUSE (ZMQ_HAUSNUMERO + 5)
-#endif
-#ifndef EADDRNOTAVAIL
-#define EADDRNOTAVAIL (ZMQ_HAUSNUMERO + 6)
-#endif
-#ifndef ECONNREFUSED
-#define ECONNREFUSED (ZMQ_HAUSNUMERO + 7)
-#endif
-#ifndef EINPROGRESS
-#define EINPROGRESS (ZMQ_HAUSNUMERO + 8)
-#endif
-
-/* Native 0MQ error codes. */
-#define EMTHREAD (ZMQ_HAUSNUMERO + 50)
-#define EFSM (ZMQ_HAUSNUMERO + 51)
-#define ENOCOMPATPROTO (ZMQ_HAUSNUMERO + 52)
-#define ETERM (ZMQ_HAUSNUMERO + 53)
-
-/* This function retrieves the errno as it is known to 0MQ library. The goal */
-/* of this function is to make the code 100% portable, including where 0MQ */
-/* compiled with certain CRT library (on Windows) is linked to an */
-/* application that uses different CRT library. */
-ZMQ_EXPORT int zmq_errno ();
-
-/* Resolves system errors and 0MQ errors to human-readable string. */
-ZMQ_EXPORT const char *zmq_strerror (int errnum);
-
-/******************************************************************************/
-/* 0MQ message definition. */
-/******************************************************************************/
-
-/* Maximal size of "Very Small Message". VSMs are passed by value */
-/* to avoid excessive memory allocation/deallocation. */
-/* If VMSs larger than 255 bytes are required, type of 'vsm_size' */
-/* field in zmq_msg_t structure should be modified accordingly. */
-#define ZMQ_MAX_VSM_SIZE 30
-
-/* Message types. These integers may be stored in 'content' member of the */
-/* message instead of regular pointer to the data. */
-#define ZMQ_DELIMITER 31
-#define ZMQ_VSM 32
-
-/* Message flags. ZMQ_MSG_SHARED is strictly speaking not a message flag */
-/* (it has no equivalent in the wire format), however, making it a flag */
-/* allows us to pack the stucture tigher and thus improve performance. */
-#define ZMQ_MSG_MORE 1
-#define ZMQ_MSG_SHARED 128
-
-/* A message. Note that 'content' is not a pointer to the raw data. */
-/* Rather it is pointer to zmq::msg_content_t structure */
-/* (see src/msg_content.hpp for its definition). */
-typedef struct
-{
- void *content;
- unsigned char flags;
- unsigned char vsm_size;
- unsigned char vsm_data [ZMQ_MAX_VSM_SIZE];
-} zmq_msg_t;
-
-typedef void (zmq_free_fn) (void *data, void *hint);
-
-ZMQ_EXPORT int zmq_msg_init (zmq_msg_t *msg);
-ZMQ_EXPORT int zmq_msg_init_size (zmq_msg_t *msg, size_t size);
-ZMQ_EXPORT int zmq_msg_init_data (zmq_msg_t *msg, void *data,
- size_t size, zmq_free_fn *ffn, void *hint);
-ZMQ_EXPORT int zmq_msg_close (zmq_msg_t *msg);
-ZMQ_EXPORT int zmq_msg_move (zmq_msg_t *dest, zmq_msg_t *src);
-ZMQ_EXPORT int zmq_msg_copy (zmq_msg_t *dest, zmq_msg_t *src);
-ZMQ_EXPORT void *zmq_msg_data (zmq_msg_t *msg);
-ZMQ_EXPORT size_t zmq_msg_size (zmq_msg_t *msg);
-
-/******************************************************************************/
-/* 0MQ infrastructure (a.k.a. context) initialisation & termination. */
-/******************************************************************************/
-
-ZMQ_EXPORT void *zmq_init (int io_threads);
-ZMQ_EXPORT int zmq_term (void *context);
-
-/******************************************************************************/
-/* 0MQ socket definition. */
-/******************************************************************************/
-
-/* Socket types. */
-#define ZMQ_PAIR 0
-#define ZMQ_PUB 1
-#define ZMQ_SUB 2
-#define ZMQ_REQ 3
-#define ZMQ_REP 4
-#define ZMQ_XREQ 5
-#define ZMQ_XREP 6
-#define ZMQ_PULL 7
-#define ZMQ_PUSH 8
-#define ZMQ_UPSTREAM ZMQ_PULL /* Old alias, remove in 3.x */
-#define ZMQ_DOWNSTREAM ZMQ_PUSH /* Old alias, remove in 3.x */
-
-/* Socket options. */
-#define ZMQ_HWM 1
-/* ZMQ_LWM 2 no longer supported */
-#define ZMQ_SWAP 3
-#define ZMQ_AFFINITY 4
-#define ZMQ_IDENTITY 5
-#define ZMQ_SUBSCRIBE 6
-#define ZMQ_UNSUBSCRIBE 7
-#define ZMQ_RATE 8
-#define ZMQ_RECOVERY_IVL 9
-#define ZMQ_MCAST_LOOP 10
-#define ZMQ_SNDBUF 11
-#define ZMQ_RCVBUF 12
-#define ZMQ_RCVMORE 13
-
-/* Send/recv options. */
-#define ZMQ_NOBLOCK 1
-#define ZMQ_SNDMORE 2
-
-ZMQ_EXPORT void *zmq_socket (void *context, int type);
-ZMQ_EXPORT int zmq_close (void *s);
-ZMQ_EXPORT int zmq_setsockopt (void *s, int option, const void *optval,
- size_t optvallen);
-ZMQ_EXPORT int zmq_getsockopt (void *s, int option, void *optval,
- size_t *optvallen);
-ZMQ_EXPORT int zmq_bind (void *s, const char *addr);
-ZMQ_EXPORT int zmq_connect (void *s, const char *addr);
-ZMQ_EXPORT int zmq_send (void *s, zmq_msg_t *msg, int flags);
-ZMQ_EXPORT int zmq_recv (void *s, zmq_msg_t *msg, int flags);
-
-/******************************************************************************/
-/* I/O multiplexing. */
-/******************************************************************************/
-
-#define ZMQ_POLLIN 1
-#define ZMQ_POLLOUT 2
-#define ZMQ_POLLERR 4
-
-typedef struct
-{
- void *socket;
-#if defined _WIN32
- SOCKET fd;
-#else
- int fd;
-#endif
- short events;
- short revents;
-} zmq_pollitem_t;
-
-ZMQ_EXPORT int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout);
-
-/******************************************************************************/
-/* Devices */
-/******************************************************************************/
-
-#define ZMQ_QUEUE 1
-#define ZMQ_FORWARDER 2
-#define ZMQ_STREAMER 3
-
-ZMQ_EXPORT int zmq_device (int device, void * insocket, void* outsocket);
-
-#undef ZMQ_EXPORT
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/util/network/zeromq/include/zmq.hpp b/util/network/zeromq/include/zmq.hpp
deleted file mode 100644
index 86ffff60..00000000
--- a/util/network/zeromq/include/zmq.hpp
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_HPP_INCLUDED__
-#define __ZMQ_HPP_INCLUDED__
-
-#include "zmq.h"
-
-#include <assert.h>
-#include <string.h>
-#include <exception>
-
-namespace zmq
-{
-
- typedef zmq_free_fn free_fn;
- typedef zmq_pollitem_t pollitem_t;
-
- class error_t : public std::exception
- {
- public:
-
- error_t () : errnum (zmq_errno ()) {}
-
- virtual const char *what () const throw ()
- {
- return zmq_strerror (errnum);
- }
-
- private:
-
- int errnum;
- };
-
- inline int poll (zmq_pollitem_t *items_, int nitems_, long timeout_ = -1)
- {
- int rc = zmq_poll (items_, nitems_, timeout_);
- if (rc < 0)
- throw error_t ();
- return rc;
- }
-
- inline void device (int device_, void * insocket_, void* outsocket_)
- {
- int rc = zmq_device (device_, insocket_, outsocket_);
- if (rc != 0)
- throw error_t ();
- }
-
- class message_t : private zmq_msg_t
- {
- friend class socket_t;
-
- public:
-
- inline message_t ()
- {
- int rc = zmq_msg_init (this);
- if (rc != 0)
- throw error_t ();
- }
-
- inline message_t (size_t size_)
- {
- int rc = zmq_msg_init_size (this, size_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline message_t (void *data_, size_t size_, free_fn *ffn_,
- void *hint_ = NULL)
- {
- int rc = zmq_msg_init_data (this, data_, size_, ffn_, hint_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline ~message_t ()
- {
- int rc = zmq_msg_close (this);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void rebuild ()
- {
- int rc = zmq_msg_close (this);
- if (rc != 0)
- throw error_t ();
- rc = zmq_msg_init (this);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void rebuild (size_t size_)
- {
- int rc = zmq_msg_close (this);
- if (rc != 0)
- throw error_t ();
- rc = zmq_msg_init_size (this, size_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void rebuild (void *data_, size_t size_, free_fn *ffn_,
- void *hint_ = NULL)
- {
- int rc = zmq_msg_close (this);
- if (rc != 0)
- throw error_t ();
- rc = zmq_msg_init_data (this, data_, size_, ffn_, hint_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void move (message_t *msg_)
- {
- int rc = zmq_msg_move (this, (zmq_msg_t*) msg_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void copy (message_t *msg_)
- {
- int rc = zmq_msg_copy (this, (zmq_msg_t*) msg_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void *data ()
- {
- return zmq_msg_data (this);
- }
-
- inline size_t size ()
- {
- return zmq_msg_size (this);
- }
-
- private:
-
- // Disable implicit message copying, so that users won't use shared
- // messages (less efficient) without being aware of the fact.
- message_t (const message_t&);
- void operator = (const message_t&);
- };
-
- class context_t
- {
- friend class socket_t;
-
- public:
-
- inline context_t (int io_threads_)
- {
- ptr = zmq_init (io_threads_);
- if (ptr == NULL)
- throw error_t ();
- }
-
- inline ~context_t ()
- {
- int rc = zmq_term (ptr);
- assert (rc == 0);
- }
-
- private:
-
- void *ptr;
-
- context_t (const context_t&);
- void operator = (const context_t&);
- };
-
- class socket_t
- {
- public:
-
- inline socket_t (context_t &context_, int type_)
- {
- ptr = zmq_socket (context_.ptr, type_);
- if (ptr == NULL)
- throw error_t ();
- }
-
- inline ~socket_t ()
- {
- int rc = zmq_close (ptr);
- if (rc != 0)
- throw error_t ();
- }
-
- inline operator void* ()
- {
- return ptr;
- }
-
- inline void setsockopt (int option_, const void *optval_,
- size_t optvallen_)
- {
- int rc = zmq_setsockopt (ptr, option_, optval_, optvallen_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void getsockopt (int option_, void *optval_,
- size_t *optvallen_)
- {
- int rc = zmq_getsockopt (ptr, option_, optval_, optvallen_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void bind (const char *addr_)
- {
- int rc = zmq_bind (ptr, addr_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline void connect (const char *addr_)
- {
- int rc = zmq_connect (ptr, addr_);
- if (rc != 0)
- throw error_t ();
- }
-
- inline bool send (message_t &msg_, int flags_ = 0)
- {
- int rc = zmq_send (ptr, &msg_, flags_);
- if (rc == 0)
- return true;
- if (rc == -1 && zmq_errno () == EAGAIN)
- return false;
- throw error_t ();
- }
-
- inline bool recv (message_t *msg_, int flags_ = 0)
- {
- int rc = zmq_recv (ptr, msg_, flags_);
- if (rc == 0)
- return true;
- if (rc == -1 && zmq_errno () == EAGAIN)
- return false;
- throw error_t ();
- }
-
- private:
-
- void *ptr;
-
- socket_t (const socket_t&);
- void operator = (const socket_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/include/zmq_utils.h b/util/network/zeromq/include/zmq_utils.h
deleted file mode 100644
index 5b78e10d..00000000
--- a/util/network/zeromq/include/zmq_utils.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_UTILS_H_INCLUDED__
-#define __ZMQ_UTILS_H_INCLUDED__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Win32 needs special handling for DLL exports */
-#if defined _WIN32
-# if defined DLL_EXPORT
-# define ZMQ_EXPORT __declspec(dllexport)
-# else
-# define ZMQ_EXPORT __declspec(dllimport)
-# endif
-#else
-# define ZMQ_EXPORT
-#endif
-
-/* Helper functions are used by perf tests so that they don't have to care */
-/* about minutiae of time-related functions on different OS platforms. */
-
-/* Starts the stopwatch. Returns the handle to the watch. */
-ZMQ_EXPORT void *zmq_stopwatch_start ();
-
-/* Stops the stopwatch. Returns the number of microseconds elapsed since */
-/* the stopwatch was started. */
-ZMQ_EXPORT unsigned long zmq_stopwatch_stop (void *watch_);
-
-/* Sleeps for specified number of seconds. */
-ZMQ_EXPORT void zmq_sleep (int seconds_);
-
-#undef ZMQ_EXPORT
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/Makefile b/util/network/zeromq/src/Makefile
deleted file mode 100644
index 1b0024e2..00000000
--- a/util/network/zeromq/src/Makefile
+++ /dev/null
@@ -1,1512 +0,0 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
-# src/Makefile. Generated from Makefile.in by configure.
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-
-
-
-
-
-pkgdatadir = $(datadir)/zeromq
-pkglibdir = $(libdir)/zeromq
-pkgincludedir = $(includedir)/zeromq
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = i686-pc-linux-gnu
-host_triplet = i686-pc-linux-gnu
-subdir = src
-DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/libzmq.pc.in \
- $(srcdir)/platform.hpp.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = platform.hpp
-CONFIG_CLEAN_FILES = libzmq.pc
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
- "$(DESTDIR)$(includedir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libzmq_la_LIBADD =
-am_libzmq_la_OBJECTS = libzmq_la-app_thread.lo libzmq_la-command.lo \
- libzmq_la-ctx.lo libzmq_la-devpoll.lo libzmq_la-push.lo \
- libzmq_la-epoll.lo libzmq_la-err.lo libzmq_la-forwarder.lo \
- libzmq_la-fq.lo libzmq_la-io_object.lo libzmq_la-io_thread.lo \
- libzmq_la-ip.lo libzmq_la-kqueue.lo libzmq_la-lb.lo \
- libzmq_la-msg_store.lo libzmq_la-object.lo \
- libzmq_la-options.lo libzmq_la-owned.lo \
- libzmq_la-pgm_receiver.lo libzmq_la-pgm_sender.lo \
- libzmq_la-pgm_socket.lo libzmq_la-pair.lo \
- libzmq_la-prefix_tree.lo libzmq_la-pipe.lo libzmq_la-poll.lo \
- libzmq_la-pub.lo libzmq_la-queue.lo libzmq_la-rep.lo \
- libzmq_la-req.lo libzmq_la-select.lo libzmq_la-session.lo \
- libzmq_la-signaler.lo libzmq_la-socket_base.lo \
- libzmq_la-streamer.lo libzmq_la-sub.lo \
- libzmq_la-tcp_connecter.lo libzmq_la-tcp_listener.lo \
- libzmq_la-tcp_socket.lo libzmq_la-thread.lo libzmq_la-pull.lo \
- libzmq_la-uuid.lo libzmq_la-xrep.lo libzmq_la-xreq.lo \
- libzmq_la-zmq.lo libzmq_la-zmq_connecter.lo \
- libzmq_la-zmq_decoder.lo libzmq_la-zmq_encoder.lo \
- libzmq_la-zmq_engine.lo libzmq_la-zmq_init.lo \
- libzmq_la-zmq_listener.lo
-#am__objects_1 = libzmq_la-packet.lo libzmq_la-time.lo \
-# libzmq_la-if.lo libzmq_la-getifaddrs.lo \
-# libzmq_la-getnodeaddr.lo \
-# libzmq_la-indextoaddr.lo \
-# libzmq_la-indextoname.lo \
-# libzmq_la-nametoindex.lo \
-# libzmq_la-inet_network.lo libzmq_la-md5.lo \
-# libzmq_la-gsi.lo libzmq_la-tsi.lo \
-# libzmq_la-signal.lo libzmq_la-txwi.lo \
-# libzmq_la-rxwi.lo libzmq_la-transport.lo \
-# libzmq_la-source.lo libzmq_la-receiver.lo \
-# libzmq_la-recv.lo libzmq_la-pgm.lo \
-# libzmq_la-timer.lo libzmq_la-net.lo \
-# libzmq_la-rate_control.lo libzmq_la-async.lo \
-# libzmq_la-checksum.lo \
-# libzmq_la-reed_solomon.lo \
-# libzmq_la-galois_tables.lo \
-# libzmq_la-wsastrerror.lo \
-# libzmq_la-glib-compat.lo \
-# libzmq_la-backtrace.lo libzmq_la-log.lo \
-# libzmq_la-sockaddr.lo libzmq_la-version.lo
-nodist_libzmq_la_OBJECTS = $(am__objects_1)
-libzmq_la_OBJECTS = $(am_libzmq_la_OBJECTS) \
- $(nodist_libzmq_la_OBJECTS)
-libzmq_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libzmq_la_CXXFLAGS) \
- $(CXXFLAGS) $(libzmq_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(libzmq_la_SOURCES) $(nodist_libzmq_la_SOURCES)
-DIST_SOURCES = $(libzmq_la_SOURCES)
-pkgconfigDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkgconfig_DATA)
-includeHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(include_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = ${SHELL} /home/jon/tmp/downloads/zeromq-2.0.8/config/missing --run aclocal-1.10
-AMTAR = ${SHELL} /home/jon/tmp/downloads/zeromq-2.0.8/config/missing --run tar
-AR = ar
-AS = as
-AUTOCONF = ${SHELL} /home/jon/tmp/downloads/zeromq-2.0.8/config/missing --run autoconf
-AUTOHEADER = ${SHELL} /home/jon/tmp/downloads/zeromq-2.0.8/config/missing --run autoheader
-AUTOMAKE = ${SHELL} /home/jon/tmp/downloads/zeromq-2.0.8/config/missing --run automake-1.10
-AWK = gawk
-CC = gcc
-CCDEPMODE = depmode=gcc3
-CFLAGS = -g -O2
-CPP = gcc -E
-CPPFLAGS = -Werror -pedantic -Wall -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE
-CXX = g++
-CXXCPP = g++ -E
-CXXDEPMODE = depmode=gcc3
-CXXFLAGS = -g -O2
-CYGPATH_W = echo
-DEFS = -DHAVE_CONFIG_H
-DEPDIR = .deps
-DLLTOOL = dlltool
-DSYMUTIL =
-ECHO = echo
-ECHO_C =
-ECHO_N = -n
-ECHO_T =
-EGREP = /bin/grep -E
-EXEEXT =
-F77 =
-FFLAGS =
-GLIB_CFLAGS =
-GLIB_LIBS =
-GREP = /bin/grep
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-INSTALL_PROGRAM = ${INSTALL}
-INSTALL_SCRIPT = ${INSTALL}
-INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
-LDFLAGS =
-LIBOBJS =
-LIBS = -luuid -lpthread
-LIBTOOL = $(SHELL) $(top_builddir)/libtool
-LIBZMQ_EXTRA_CXXFLAGS =
-LIBZMQ_EXTRA_LDFLAGS =
-LN_S = ln -s
-LTLIBOBJS =
-LTVER = 0:0:0
-MAKEINFO = ${SHELL} /home/jon/tmp/downloads/zeromq-2.0.8/config/missing --run makeinfo
-MKDIR_P = /bin/mkdir -p
-NMEDIT =
-OBJDUMP = objdump
-OBJEXT = o
-PACKAGE = zeromq
-PACKAGE_BUGREPORT = zeromq-dev@lists.zeromq.org
-PACKAGE_NAME = zeromq
-PACKAGE_STRING = zeromq 2.0.8
-PACKAGE_TARNAME = zeromq
-PACKAGE_VERSION = 2.0.8
-PATH_SEPARATOR = :
-PKG_CONFIG =
-RANLIB = ranlib
-SED = /bin/sed
-SET_MAKE =
-SHELL = /bin/bash
-STRIP = strip
-VERSION = 2.0.8
-abs_builddir = /home/jon/tmp/downloads/zeromq-2.0.8/src
-abs_srcdir = /home/jon/tmp/downloads/zeromq-2.0.8/src
-abs_top_builddir = /home/jon/tmp/downloads/zeromq-2.0.8
-abs_top_srcdir = /home/jon/tmp/downloads/zeromq-2.0.8
-ac_ct_CC = gcc
-ac_ct_CXX = g++
-ac_ct_F77 =
-am__include = include
-am__leading_dot = .
-am__quote =
-am__tar = tar --format=ustar -chf - "$$tardir"
-am__untar = tar -xf -
-bindir = ${exec_prefix}/bin
-build = i686-pc-linux-gnu
-build_alias =
-build_cpu = i686
-build_os = linux-gnu
-build_vendor = pc
-builddir = .
-datadir = ${datarootdir}
-datarootdir = ${prefix}/share
-docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
-dvidir = ${docdir}
-exec_prefix = ${prefix}
-have_asciidoc = no
-have_gzip =
-have_perl =
-have_pkg_config = yes
-have_python =
-have_xmlto = no
-host = i686-pc-linux-gnu
-host_alias =
-host_cpu = i686
-host_os = linux-gnu
-host_vendor = pc
-htmldir = ${docdir}
-includedir = ${prefix}/include
-infodir = ${datarootdir}/info
-install_sh = $(SHELL) /home/jon/tmp/downloads/zeromq-2.0.8/config/install-sh
-inttypes = 0
-libdir = ${exec_prefix}/lib
-libexecdir = ${exec_prefix}/libexec
-localedir = ${datarootdir}/locale
-localstatedir = ${prefix}/var
-mandir = ${datarootdir}/man
-mkdir_p = /bin/mkdir -p
-oldincludedir = /usr/include
-pdfdir = ${docdir}
-pgm_basename = libpgm-2.1.26
-prefix = /usr/local
-program_transform_name = s,x,x,
-psdir = ${docdir}
-sbindir = ${exec_prefix}/sbin
-sharedstatedir = ${prefix}/com
-srcdir = .
-stdint = 0
-sysconfdir = ${prefix}/etc
-target_alias =
-top_builddir = ..
-top_srcdir = ..
-lib_LTLIBRARIES = libzmq.la
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libzmq.pc
-include_HEADERS = ../include/zmq.h ../include/zmq.hpp ../include/zmq_utils.h
-#pgm_sources = ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/packet.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/time.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/if.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getifaddrs.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getnodeaddr.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoaddr.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoname.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/nametoindex.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/inet_network.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/md5.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/gsi.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/tsi.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/signal.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/txwi.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rxwi.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/transport.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/source.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/receiver.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/recv.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/pgm.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/timer.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/net.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rate_control.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/async.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/checksum.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/reed_solomon.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/wsastrerror.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/glib-compat.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/backtrace.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/log.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/sockaddr.c \
-# ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c
-
-nodist_libzmq_la_SOURCES = $(pgm_sources)
-libzmq_la_SOURCES = app_thread.hpp \
- atomic_counter.hpp \
- atomic_ptr.hpp \
- blob.hpp \
- command.hpp \
- config.hpp \
- ctx.hpp \
- decoder.hpp \
- devpoll.hpp \
- push.hpp \
- encoder.hpp \
- epoll.hpp \
- err.hpp \
- fd.hpp \
- forwarder.hpp \
- fq.hpp \
- i_inout.hpp \
- io_object.hpp \
- io_thread.hpp \
- ip.hpp \
- i_endpoint.hpp \
- i_engine.hpp \
- i_poll_events.hpp \
- kqueue.hpp \
- lb.hpp \
- likely.hpp \
- msg_content.hpp \
- msg_store.hpp \
- mutex.hpp \
- object.hpp \
- options.hpp \
- owned.hpp \
- pgm_receiver.hpp \
- pgm_sender.hpp \
- pgm_socket.hpp \
- pipe.hpp \
- platform.hpp \
- poll.hpp \
- poller.hpp \
- pair.hpp \
- prefix_tree.hpp \
- pub.hpp \
- queue.hpp \
- rep.hpp \
- req.hpp \
- select.hpp \
- session.hpp \
- signaler.hpp \
- socket_base.hpp \
- stdint.hpp \
- streamer.hpp \
- sub.hpp \
- tcp_connecter.hpp \
- tcp_listener.hpp \
- tcp_socket.hpp \
- thread.hpp \
- pull.hpp \
- uuid.hpp \
- windows.hpp \
- wire.hpp \
- xrep.hpp \
- xreq.hpp \
- yarray.hpp \
- yarray_item.hpp \
- ypipe.hpp \
- yqueue.hpp \
- zmq_connecter.hpp \
- zmq_decoder.hpp \
- zmq_encoder.hpp \
- zmq_engine.hpp \
- zmq_init.hpp \
- zmq_listener.hpp \
- app_thread.cpp \
- command.cpp \
- ctx.cpp \
- devpoll.cpp \
- push.cpp \
- epoll.cpp \
- err.cpp \
- forwarder.cpp \
- fq.cpp \
- io_object.cpp \
- io_thread.cpp \
- ip.cpp \
- kqueue.cpp \
- lb.cpp \
- msg_store.cpp \
- object.cpp \
- options.cpp \
- owned.cpp \
- pgm_receiver.cpp \
- pgm_sender.cpp \
- pgm_socket.cpp \
- pair.cpp \
- prefix_tree.cpp \
- pipe.cpp \
- poll.cpp \
- pub.cpp \
- queue.cpp \
- rep.cpp \
- req.cpp \
- select.cpp \
- session.cpp \
- signaler.cpp \
- socket_base.cpp \
- streamer.cpp \
- sub.cpp \
- tcp_connecter.cpp \
- tcp_listener.cpp \
- tcp_socket.cpp \
- thread.cpp \
- pull.cpp \
- uuid.cpp \
- xrep.cpp \
- xreq.cpp \
- zmq.cpp \
- zmq_connecter.cpp \
- zmq_decoder.cpp \
- zmq_encoder.cpp \
- zmq_engine.cpp \
- zmq_init.cpp \
- zmq_listener.cpp
-
-libzmq_la_LDFLAGS = -version-info 0:0:0
-#libzmq_la_LDFLAGS = -no-undefined -avoid-version -version-info 0:0:0
-#libpgm_diff_flags = \
-# -D__need_IOV_MAX \
-# -DCONFIG_16BIT_CHECKSUM \
-# -DCONFIG_HAVE_PSELECT \
-# -DCONFIG_HAVE_POLL \
-# -DCONFIG_HAVE_PPOLL \
-# -DCONFIG_HAVE_EPOLL \
-# -DCONFIG_HAVE_CLOCK_GETTIME \
-# -DCONFIG_HAVE_CLOCK_NANOSLEEP \
-# -DCONFIG_HAVE_NANOSLEEP \
-# -DCONFIG_HAVE_USLEEP \
-# -DCONFIG_HAVE_RTC \
-# -DCONFIG_HAVE_TSC \
-# -DCONFIG_HAVE_IFR_NETMASK \
-# -DCONFIG_HAVE_GETIFADDRS \
-# -DCONFIG_HAVE_GETHOSTBYNAME2 \
-# -DCONFIG_HAVE_GETPROTOBYNAME_R \
-# -DCONFIG_BIND_INADDR_ANY \
-# -DCONFIG_GALOIS_MUL_LUT \
-# -DCONFIG_HAVE_MCAST_JOIN \
-# -DCONFIG_HAVE_IP_MREQN \
-# -DCONFIG_HAVE_SPRINTF_GROUPING \
-# -DCONFIG_HAVE_HPET \
-# -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \
-# -DGETTEXT_PACKAGE='"pgm"' \
-# -DG_LOG_DOMAIN='"Pgm"'
-
-##libpgm_diff_flags = \
-## -D_WIN32_WINNT=0x0501 \
-## -DCONFIG_16BIT_CHECKSUM \
-## -DCONFIG_HAVE_IFR_NETMASK \
-## -DCONFIG_BIND_INADDR_ANY \
-## -DCONFIG_GALOIS_MUL_LUT \
-## -DIF_NAMESIZE=256 \
-## -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \
-## -DCONFIG_HAVE_WSACMSGHDR \
-## -DGETTEXT_PACKAGE='"pgm"' \
-## -DG_LOG_DOMAIN='"Pgm"'
-
-#libzmq_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/libpgm-2.1.26/openpgm/pgm/include/ \
-# -Wall \
-# -pedantic \
-# -std=gnu99 \
-# -fno-strict-aliasing \
-# --param max-inline-insns-single=600 \
-# -D_REENTRANT \
-# -D_GNU_SOURCE \
-# ${libpgm_diff_flags}
-
-libzmq_la_CXXFLAGS =
-#libzmq_la_CXXFLAGS = -I$(top_srcdir)/foreign/openpgm/libpgm-2.1.26/openpgm/pgm/include/ \
-#
-
-all: platform.hpp
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cpp .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-platform.hpp: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
-
-stamp-h1: $(srcdir)/platform.hpp.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status src/platform.hpp
-$(srcdir)/platform.hpp.in: $(am__configure_deps)
- cd $(top_srcdir) && $(AUTOHEADER)
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f platform.hpp stamp-h1
-libzmq.pc: $(top_builddir)/config.status $(srcdir)/libzmq.pc.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- if test -f $$p; then \
- f=$(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
- else :; fi; \
- done
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- p=$(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libzmq.la: $(libzmq_la_OBJECTS) $(libzmq_la_DEPENDENCIES)
- $(libzmq_la_LINK) -rpath $(libdir) $(libzmq_la_OBJECTS) $(libzmq_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-include ./$(DEPDIR)/libzmq_la-app_thread.Plo
-include ./$(DEPDIR)/libzmq_la-async.Plo
-include ./$(DEPDIR)/libzmq_la-backtrace.Plo
-include ./$(DEPDIR)/libzmq_la-checksum.Plo
-include ./$(DEPDIR)/libzmq_la-command.Plo
-include ./$(DEPDIR)/libzmq_la-ctx.Plo
-include ./$(DEPDIR)/libzmq_la-devpoll.Plo
-include ./$(DEPDIR)/libzmq_la-epoll.Plo
-include ./$(DEPDIR)/libzmq_la-err.Plo
-include ./$(DEPDIR)/libzmq_la-forwarder.Plo
-include ./$(DEPDIR)/libzmq_la-fq.Plo
-include ./$(DEPDIR)/libzmq_la-galois_tables.Plo
-include ./$(DEPDIR)/libzmq_la-getifaddrs.Plo
-include ./$(DEPDIR)/libzmq_la-getnodeaddr.Plo
-include ./$(DEPDIR)/libzmq_la-glib-compat.Plo
-include ./$(DEPDIR)/libzmq_la-gsi.Plo
-include ./$(DEPDIR)/libzmq_la-if.Plo
-include ./$(DEPDIR)/libzmq_la-indextoaddr.Plo
-include ./$(DEPDIR)/libzmq_la-indextoname.Plo
-include ./$(DEPDIR)/libzmq_la-inet_network.Plo
-include ./$(DEPDIR)/libzmq_la-io_object.Plo
-include ./$(DEPDIR)/libzmq_la-io_thread.Plo
-include ./$(DEPDIR)/libzmq_la-ip.Plo
-include ./$(DEPDIR)/libzmq_la-kqueue.Plo
-include ./$(DEPDIR)/libzmq_la-lb.Plo
-include ./$(DEPDIR)/libzmq_la-log.Plo
-include ./$(DEPDIR)/libzmq_la-md5.Plo
-include ./$(DEPDIR)/libzmq_la-msg_store.Plo
-include ./$(DEPDIR)/libzmq_la-nametoindex.Plo
-include ./$(DEPDIR)/libzmq_la-net.Plo
-include ./$(DEPDIR)/libzmq_la-object.Plo
-include ./$(DEPDIR)/libzmq_la-options.Plo
-include ./$(DEPDIR)/libzmq_la-owned.Plo
-include ./$(DEPDIR)/libzmq_la-packet.Plo
-include ./$(DEPDIR)/libzmq_la-pair.Plo
-include ./$(DEPDIR)/libzmq_la-pgm.Plo
-include ./$(DEPDIR)/libzmq_la-pgm_receiver.Plo
-include ./$(DEPDIR)/libzmq_la-pgm_sender.Plo
-include ./$(DEPDIR)/libzmq_la-pgm_socket.Plo
-include ./$(DEPDIR)/libzmq_la-pipe.Plo
-include ./$(DEPDIR)/libzmq_la-poll.Plo
-include ./$(DEPDIR)/libzmq_la-prefix_tree.Plo
-include ./$(DEPDIR)/libzmq_la-pub.Plo
-include ./$(DEPDIR)/libzmq_la-pull.Plo
-include ./$(DEPDIR)/libzmq_la-push.Plo
-include ./$(DEPDIR)/libzmq_la-queue.Plo
-include ./$(DEPDIR)/libzmq_la-rate_control.Plo
-include ./$(DEPDIR)/libzmq_la-receiver.Plo
-include ./$(DEPDIR)/libzmq_la-recv.Plo
-include ./$(DEPDIR)/libzmq_la-reed_solomon.Plo
-include ./$(DEPDIR)/libzmq_la-rep.Plo
-include ./$(DEPDIR)/libzmq_la-req.Plo
-include ./$(DEPDIR)/libzmq_la-rxwi.Plo
-include ./$(DEPDIR)/libzmq_la-select.Plo
-include ./$(DEPDIR)/libzmq_la-session.Plo
-include ./$(DEPDIR)/libzmq_la-signal.Plo
-include ./$(DEPDIR)/libzmq_la-signaler.Plo
-include ./$(DEPDIR)/libzmq_la-sockaddr.Plo
-include ./$(DEPDIR)/libzmq_la-socket_base.Plo
-include ./$(DEPDIR)/libzmq_la-source.Plo
-include ./$(DEPDIR)/libzmq_la-streamer.Plo
-include ./$(DEPDIR)/libzmq_la-sub.Plo
-include ./$(DEPDIR)/libzmq_la-tcp_connecter.Plo
-include ./$(DEPDIR)/libzmq_la-tcp_listener.Plo
-include ./$(DEPDIR)/libzmq_la-tcp_socket.Plo
-include ./$(DEPDIR)/libzmq_la-thread.Plo
-include ./$(DEPDIR)/libzmq_la-time.Plo
-include ./$(DEPDIR)/libzmq_la-timer.Plo
-include ./$(DEPDIR)/libzmq_la-transport.Plo
-include ./$(DEPDIR)/libzmq_la-tsi.Plo
-include ./$(DEPDIR)/libzmq_la-txwi.Plo
-include ./$(DEPDIR)/libzmq_la-uuid.Plo
-include ./$(DEPDIR)/libzmq_la-version.Plo
-include ./$(DEPDIR)/libzmq_la-wsastrerror.Plo
-include ./$(DEPDIR)/libzmq_la-xrep.Plo
-include ./$(DEPDIR)/libzmq_la-xreq.Plo
-include ./$(DEPDIR)/libzmq_la-zmq.Plo
-include ./$(DEPDIR)/libzmq_la-zmq_connecter.Plo
-include ./$(DEPDIR)/libzmq_la-zmq_decoder.Plo
-include ./$(DEPDIR)/libzmq_la-zmq_encoder.Plo
-include ./$(DEPDIR)/libzmq_la-zmq_engine.Plo
-include ./$(DEPDIR)/libzmq_la-zmq_init.Plo
-include ./$(DEPDIR)/libzmq_la-zmq_listener.Plo
-
-.c.o:
- $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-# source='$<' object='$@' libtool=no \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(COMPILE) -c $<
-
-.c.obj:
- $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-# source='$<' object='$@' libtool=no \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
- $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-# source='$<' object='$@' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LTCOMPILE) -c -o $@ $<
-
-libzmq_la-packet.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/packet.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-packet.lo -MD -MP -MF $(DEPDIR)/libzmq_la-packet.Tpo -c -o libzmq_la-packet.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/packet.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/packet.c
- mv -f $(DEPDIR)/libzmq_la-packet.Tpo $(DEPDIR)/libzmq_la-packet.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/packet.c' object='libzmq_la-packet.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-packet.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/packet.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/packet.c
-
-libzmq_la-time.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/time.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-time.lo -MD -MP -MF $(DEPDIR)/libzmq_la-time.Tpo -c -o libzmq_la-time.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/time.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/time.c
- mv -f $(DEPDIR)/libzmq_la-time.Tpo $(DEPDIR)/libzmq_la-time.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/time.c' object='libzmq_la-time.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-time.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/time.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/time.c
-
-libzmq_la-if.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/if.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-if.lo -MD -MP -MF $(DEPDIR)/libzmq_la-if.Tpo -c -o libzmq_la-if.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/if.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/if.c
- mv -f $(DEPDIR)/libzmq_la-if.Tpo $(DEPDIR)/libzmq_la-if.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/if.c' object='libzmq_la-if.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-if.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/if.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/if.c
-
-libzmq_la-getifaddrs.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getifaddrs.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-getifaddrs.lo -MD -MP -MF $(DEPDIR)/libzmq_la-getifaddrs.Tpo -c -o libzmq_la-getifaddrs.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getifaddrs.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getifaddrs.c
- mv -f $(DEPDIR)/libzmq_la-getifaddrs.Tpo $(DEPDIR)/libzmq_la-getifaddrs.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getifaddrs.c' object='libzmq_la-getifaddrs.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-getifaddrs.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getifaddrs.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getifaddrs.c
-
-libzmq_la-getnodeaddr.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getnodeaddr.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-getnodeaddr.lo -MD -MP -MF $(DEPDIR)/libzmq_la-getnodeaddr.Tpo -c -o libzmq_la-getnodeaddr.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getnodeaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getnodeaddr.c
- mv -f $(DEPDIR)/libzmq_la-getnodeaddr.Tpo $(DEPDIR)/libzmq_la-getnodeaddr.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getnodeaddr.c' object='libzmq_la-getnodeaddr.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-getnodeaddr.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getnodeaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/getnodeaddr.c
-
-libzmq_la-indextoaddr.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoaddr.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-indextoaddr.lo -MD -MP -MF $(DEPDIR)/libzmq_la-indextoaddr.Tpo -c -o libzmq_la-indextoaddr.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoaddr.c
- mv -f $(DEPDIR)/libzmq_la-indextoaddr.Tpo $(DEPDIR)/libzmq_la-indextoaddr.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoaddr.c' object='libzmq_la-indextoaddr.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-indextoaddr.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoaddr.c
-
-libzmq_la-indextoname.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoname.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-indextoname.lo -MD -MP -MF $(DEPDIR)/libzmq_la-indextoname.Tpo -c -o libzmq_la-indextoname.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoname.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoname.c
- mv -f $(DEPDIR)/libzmq_la-indextoname.Tpo $(DEPDIR)/libzmq_la-indextoname.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoname.c' object='libzmq_la-indextoname.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-indextoname.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoname.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/indextoname.c
-
-libzmq_la-nametoindex.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/nametoindex.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-nametoindex.lo -MD -MP -MF $(DEPDIR)/libzmq_la-nametoindex.Tpo -c -o libzmq_la-nametoindex.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/nametoindex.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/nametoindex.c
- mv -f $(DEPDIR)/libzmq_la-nametoindex.Tpo $(DEPDIR)/libzmq_la-nametoindex.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/nametoindex.c' object='libzmq_la-nametoindex.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-nametoindex.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/nametoindex.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/nametoindex.c
-
-libzmq_la-inet_network.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/inet_network.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-inet_network.lo -MD -MP -MF $(DEPDIR)/libzmq_la-inet_network.Tpo -c -o libzmq_la-inet_network.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/inet_network.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/inet_network.c
- mv -f $(DEPDIR)/libzmq_la-inet_network.Tpo $(DEPDIR)/libzmq_la-inet_network.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/inet_network.c' object='libzmq_la-inet_network.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-inet_network.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/inet_network.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/inet_network.c
-
-libzmq_la-md5.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/md5.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-md5.lo -MD -MP -MF $(DEPDIR)/libzmq_la-md5.Tpo -c -o libzmq_la-md5.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/md5.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/md5.c
- mv -f $(DEPDIR)/libzmq_la-md5.Tpo $(DEPDIR)/libzmq_la-md5.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/md5.c' object='libzmq_la-md5.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-md5.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/md5.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/md5.c
-
-libzmq_la-gsi.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/gsi.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-gsi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-gsi.Tpo -c -o libzmq_la-gsi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/gsi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/gsi.c
- mv -f $(DEPDIR)/libzmq_la-gsi.Tpo $(DEPDIR)/libzmq_la-gsi.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/gsi.c' object='libzmq_la-gsi.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-gsi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/gsi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/gsi.c
-
-libzmq_la-tsi.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/tsi.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-tsi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tsi.Tpo -c -o libzmq_la-tsi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/tsi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/tsi.c
- mv -f $(DEPDIR)/libzmq_la-tsi.Tpo $(DEPDIR)/libzmq_la-tsi.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/tsi.c' object='libzmq_la-tsi.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-tsi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/tsi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/tsi.c
-
-libzmq_la-signal.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/signal.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-signal.lo -MD -MP -MF $(DEPDIR)/libzmq_la-signal.Tpo -c -o libzmq_la-signal.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/signal.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/signal.c
- mv -f $(DEPDIR)/libzmq_la-signal.Tpo $(DEPDIR)/libzmq_la-signal.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/signal.c' object='libzmq_la-signal.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-signal.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/signal.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/signal.c
-
-libzmq_la-txwi.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/txwi.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-txwi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-txwi.Tpo -c -o libzmq_la-txwi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/txwi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/txwi.c
- mv -f $(DEPDIR)/libzmq_la-txwi.Tpo $(DEPDIR)/libzmq_la-txwi.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/txwi.c' object='libzmq_la-txwi.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-txwi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/txwi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/txwi.c
-
-libzmq_la-rxwi.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rxwi.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-rxwi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-rxwi.Tpo -c -o libzmq_la-rxwi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rxwi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rxwi.c
- mv -f $(DEPDIR)/libzmq_la-rxwi.Tpo $(DEPDIR)/libzmq_la-rxwi.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rxwi.c' object='libzmq_la-rxwi.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-rxwi.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rxwi.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rxwi.c
-
-libzmq_la-transport.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/transport.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-transport.lo -MD -MP -MF $(DEPDIR)/libzmq_la-transport.Tpo -c -o libzmq_la-transport.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/transport.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/transport.c
- mv -f $(DEPDIR)/libzmq_la-transport.Tpo $(DEPDIR)/libzmq_la-transport.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/transport.c' object='libzmq_la-transport.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-transport.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/transport.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/transport.c
-
-libzmq_la-source.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/source.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-source.lo -MD -MP -MF $(DEPDIR)/libzmq_la-source.Tpo -c -o libzmq_la-source.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/source.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/source.c
- mv -f $(DEPDIR)/libzmq_la-source.Tpo $(DEPDIR)/libzmq_la-source.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/source.c' object='libzmq_la-source.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-source.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/source.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/source.c
-
-libzmq_la-receiver.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/receiver.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-receiver.lo -MD -MP -MF $(DEPDIR)/libzmq_la-receiver.Tpo -c -o libzmq_la-receiver.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/receiver.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/receiver.c
- mv -f $(DEPDIR)/libzmq_la-receiver.Tpo $(DEPDIR)/libzmq_la-receiver.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/receiver.c' object='libzmq_la-receiver.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-receiver.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/receiver.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/receiver.c
-
-libzmq_la-recv.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/recv.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-recv.lo -MD -MP -MF $(DEPDIR)/libzmq_la-recv.Tpo -c -o libzmq_la-recv.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/recv.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/recv.c
- mv -f $(DEPDIR)/libzmq_la-recv.Tpo $(DEPDIR)/libzmq_la-recv.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/recv.c' object='libzmq_la-recv.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-recv.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/recv.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/recv.c
-
-libzmq_la-pgm.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/pgm.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-pgm.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm.Tpo -c -o libzmq_la-pgm.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/pgm.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/pgm.c
- mv -f $(DEPDIR)/libzmq_la-pgm.Tpo $(DEPDIR)/libzmq_la-pgm.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/pgm.c' object='libzmq_la-pgm.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-pgm.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/pgm.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/pgm.c
-
-libzmq_la-timer.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/timer.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-timer.lo -MD -MP -MF $(DEPDIR)/libzmq_la-timer.Tpo -c -o libzmq_la-timer.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/timer.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/timer.c
- mv -f $(DEPDIR)/libzmq_la-timer.Tpo $(DEPDIR)/libzmq_la-timer.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/timer.c' object='libzmq_la-timer.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-timer.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/timer.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/timer.c
-
-libzmq_la-net.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/net.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-net.lo -MD -MP -MF $(DEPDIR)/libzmq_la-net.Tpo -c -o libzmq_la-net.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/net.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/net.c
- mv -f $(DEPDIR)/libzmq_la-net.Tpo $(DEPDIR)/libzmq_la-net.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/net.c' object='libzmq_la-net.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-net.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/net.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/net.c
-
-libzmq_la-rate_control.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rate_control.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-rate_control.lo -MD -MP -MF $(DEPDIR)/libzmq_la-rate_control.Tpo -c -o libzmq_la-rate_control.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rate_control.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rate_control.c
- mv -f $(DEPDIR)/libzmq_la-rate_control.Tpo $(DEPDIR)/libzmq_la-rate_control.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rate_control.c' object='libzmq_la-rate_control.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-rate_control.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rate_control.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/rate_control.c
-
-libzmq_la-async.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/async.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-async.lo -MD -MP -MF $(DEPDIR)/libzmq_la-async.Tpo -c -o libzmq_la-async.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/async.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/async.c
- mv -f $(DEPDIR)/libzmq_la-async.Tpo $(DEPDIR)/libzmq_la-async.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/async.c' object='libzmq_la-async.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-async.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/async.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/async.c
-
-libzmq_la-checksum.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/checksum.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-checksum.lo -MD -MP -MF $(DEPDIR)/libzmq_la-checksum.Tpo -c -o libzmq_la-checksum.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/checksum.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/checksum.c
- mv -f $(DEPDIR)/libzmq_la-checksum.Tpo $(DEPDIR)/libzmq_la-checksum.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/checksum.c' object='libzmq_la-checksum.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-checksum.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/checksum.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/checksum.c
-
-libzmq_la-reed_solomon.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/reed_solomon.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-reed_solomon.lo -MD -MP -MF $(DEPDIR)/libzmq_la-reed_solomon.Tpo -c -o libzmq_la-reed_solomon.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/reed_solomon.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/reed_solomon.c
- mv -f $(DEPDIR)/libzmq_la-reed_solomon.Tpo $(DEPDIR)/libzmq_la-reed_solomon.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/reed_solomon.c' object='libzmq_la-reed_solomon.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-reed_solomon.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/reed_solomon.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/reed_solomon.c
-
-libzmq_la-galois_tables.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-galois_tables.lo -MD -MP -MF $(DEPDIR)/libzmq_la-galois_tables.Tpo -c -o libzmq_la-galois_tables.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c
- mv -f $(DEPDIR)/libzmq_la-galois_tables.Tpo $(DEPDIR)/libzmq_la-galois_tables.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c' object='libzmq_la-galois_tables.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-galois_tables.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c
-
-libzmq_la-wsastrerror.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/wsastrerror.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-wsastrerror.lo -MD -MP -MF $(DEPDIR)/libzmq_la-wsastrerror.Tpo -c -o libzmq_la-wsastrerror.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/wsastrerror.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/wsastrerror.c
- mv -f $(DEPDIR)/libzmq_la-wsastrerror.Tpo $(DEPDIR)/libzmq_la-wsastrerror.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/wsastrerror.c' object='libzmq_la-wsastrerror.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-wsastrerror.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/wsastrerror.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/wsastrerror.c
-
-libzmq_la-glib-compat.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/glib-compat.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-glib-compat.lo -MD -MP -MF $(DEPDIR)/libzmq_la-glib-compat.Tpo -c -o libzmq_la-glib-compat.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/glib-compat.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/glib-compat.c
- mv -f $(DEPDIR)/libzmq_la-glib-compat.Tpo $(DEPDIR)/libzmq_la-glib-compat.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/glib-compat.c' object='libzmq_la-glib-compat.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-glib-compat.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/glib-compat.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/glib-compat.c
-
-libzmq_la-backtrace.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/backtrace.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-backtrace.lo -MD -MP -MF $(DEPDIR)/libzmq_la-backtrace.Tpo -c -o libzmq_la-backtrace.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/backtrace.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/backtrace.c
- mv -f $(DEPDIR)/libzmq_la-backtrace.Tpo $(DEPDIR)/libzmq_la-backtrace.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/backtrace.c' object='libzmq_la-backtrace.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-backtrace.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/backtrace.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/backtrace.c
-
-libzmq_la-log.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/log.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-log.lo -MD -MP -MF $(DEPDIR)/libzmq_la-log.Tpo -c -o libzmq_la-log.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/log.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/log.c
- mv -f $(DEPDIR)/libzmq_la-log.Tpo $(DEPDIR)/libzmq_la-log.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/log.c' object='libzmq_la-log.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-log.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/log.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/log.c
-
-libzmq_la-sockaddr.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/sockaddr.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-sockaddr.lo -MD -MP -MF $(DEPDIR)/libzmq_la-sockaddr.Tpo -c -o libzmq_la-sockaddr.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/sockaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/sockaddr.c
- mv -f $(DEPDIR)/libzmq_la-sockaddr.Tpo $(DEPDIR)/libzmq_la-sockaddr.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/sockaddr.c' object='libzmq_la-sockaddr.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-sockaddr.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/sockaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/sockaddr.c
-
-libzmq_la-version.lo: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c
- $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-version.lo -MD -MP -MF $(DEPDIR)/libzmq_la-version.Tpo -c -o libzmq_la-version.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c
- mv -f $(DEPDIR)/libzmq_la-version.Tpo $(DEPDIR)/libzmq_la-version.Plo
-# source='../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c' object='libzmq_la-version.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-version.lo `test -f '../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c' || echo '$(srcdir)/'`../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c
-
-.cpp.o:
- $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-# source='$<' object='$@' libtool=no \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
- $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
- mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-# source='$<' object='$@' libtool=no \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
- $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
- mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-# source='$<' object='$@' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LTCXXCOMPILE) -c -o $@ $<
-
-libzmq_la-app_thread.lo: app_thread.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-app_thread.lo -MD -MP -MF $(DEPDIR)/libzmq_la-app_thread.Tpo -c -o libzmq_la-app_thread.lo `test -f 'app_thread.cpp' || echo '$(srcdir)/'`app_thread.cpp
- mv -f $(DEPDIR)/libzmq_la-app_thread.Tpo $(DEPDIR)/libzmq_la-app_thread.Plo
-# source='app_thread.cpp' object='libzmq_la-app_thread.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-app_thread.lo `test -f 'app_thread.cpp' || echo '$(srcdir)/'`app_thread.cpp
-
-libzmq_la-command.lo: command.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-command.lo -MD -MP -MF $(DEPDIR)/libzmq_la-command.Tpo -c -o libzmq_la-command.lo `test -f 'command.cpp' || echo '$(srcdir)/'`command.cpp
- mv -f $(DEPDIR)/libzmq_la-command.Tpo $(DEPDIR)/libzmq_la-command.Plo
-# source='command.cpp' object='libzmq_la-command.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-command.lo `test -f 'command.cpp' || echo '$(srcdir)/'`command.cpp
-
-libzmq_la-ctx.lo: ctx.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-ctx.lo -MD -MP -MF $(DEPDIR)/libzmq_la-ctx.Tpo -c -o libzmq_la-ctx.lo `test -f 'ctx.cpp' || echo '$(srcdir)/'`ctx.cpp
- mv -f $(DEPDIR)/libzmq_la-ctx.Tpo $(DEPDIR)/libzmq_la-ctx.Plo
-# source='ctx.cpp' object='libzmq_la-ctx.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-ctx.lo `test -f 'ctx.cpp' || echo '$(srcdir)/'`ctx.cpp
-
-libzmq_la-devpoll.lo: devpoll.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-devpoll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-devpoll.Tpo -c -o libzmq_la-devpoll.lo `test -f 'devpoll.cpp' || echo '$(srcdir)/'`devpoll.cpp
- mv -f $(DEPDIR)/libzmq_la-devpoll.Tpo $(DEPDIR)/libzmq_la-devpoll.Plo
-# source='devpoll.cpp' object='libzmq_la-devpoll.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-devpoll.lo `test -f 'devpoll.cpp' || echo '$(srcdir)/'`devpoll.cpp
-
-libzmq_la-push.lo: push.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-push.lo -MD -MP -MF $(DEPDIR)/libzmq_la-push.Tpo -c -o libzmq_la-push.lo `test -f 'push.cpp' || echo '$(srcdir)/'`push.cpp
- mv -f $(DEPDIR)/libzmq_la-push.Tpo $(DEPDIR)/libzmq_la-push.Plo
-# source='push.cpp' object='libzmq_la-push.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-push.lo `test -f 'push.cpp' || echo '$(srcdir)/'`push.cpp
-
-libzmq_la-epoll.lo: epoll.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-epoll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-epoll.Tpo -c -o libzmq_la-epoll.lo `test -f 'epoll.cpp' || echo '$(srcdir)/'`epoll.cpp
- mv -f $(DEPDIR)/libzmq_la-epoll.Tpo $(DEPDIR)/libzmq_la-epoll.Plo
-# source='epoll.cpp' object='libzmq_la-epoll.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-epoll.lo `test -f 'epoll.cpp' || echo '$(srcdir)/'`epoll.cpp
-
-libzmq_la-err.lo: err.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-err.lo -MD -MP -MF $(DEPDIR)/libzmq_la-err.Tpo -c -o libzmq_la-err.lo `test -f 'err.cpp' || echo '$(srcdir)/'`err.cpp
- mv -f $(DEPDIR)/libzmq_la-err.Tpo $(DEPDIR)/libzmq_la-err.Plo
-# source='err.cpp' object='libzmq_la-err.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-err.lo `test -f 'err.cpp' || echo '$(srcdir)/'`err.cpp
-
-libzmq_la-forwarder.lo: forwarder.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-forwarder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-forwarder.Tpo -c -o libzmq_la-forwarder.lo `test -f 'forwarder.cpp' || echo '$(srcdir)/'`forwarder.cpp
- mv -f $(DEPDIR)/libzmq_la-forwarder.Tpo $(DEPDIR)/libzmq_la-forwarder.Plo
-# source='forwarder.cpp' object='libzmq_la-forwarder.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-forwarder.lo `test -f 'forwarder.cpp' || echo '$(srcdir)/'`forwarder.cpp
-
-libzmq_la-fq.lo: fq.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-fq.lo -MD -MP -MF $(DEPDIR)/libzmq_la-fq.Tpo -c -o libzmq_la-fq.lo `test -f 'fq.cpp' || echo '$(srcdir)/'`fq.cpp
- mv -f $(DEPDIR)/libzmq_la-fq.Tpo $(DEPDIR)/libzmq_la-fq.Plo
-# source='fq.cpp' object='libzmq_la-fq.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-fq.lo `test -f 'fq.cpp' || echo '$(srcdir)/'`fq.cpp
-
-libzmq_la-io_object.lo: io_object.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-io_object.lo -MD -MP -MF $(DEPDIR)/libzmq_la-io_object.Tpo -c -o libzmq_la-io_object.lo `test -f 'io_object.cpp' || echo '$(srcdir)/'`io_object.cpp
- mv -f $(DEPDIR)/libzmq_la-io_object.Tpo $(DEPDIR)/libzmq_la-io_object.Plo
-# source='io_object.cpp' object='libzmq_la-io_object.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-io_object.lo `test -f 'io_object.cpp' || echo '$(srcdir)/'`io_object.cpp
-
-libzmq_la-io_thread.lo: io_thread.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-io_thread.lo -MD -MP -MF $(DEPDIR)/libzmq_la-io_thread.Tpo -c -o libzmq_la-io_thread.lo `test -f 'io_thread.cpp' || echo '$(srcdir)/'`io_thread.cpp
- mv -f $(DEPDIR)/libzmq_la-io_thread.Tpo $(DEPDIR)/libzmq_la-io_thread.Plo
-# source='io_thread.cpp' object='libzmq_la-io_thread.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-io_thread.lo `test -f 'io_thread.cpp' || echo '$(srcdir)/'`io_thread.cpp
-
-libzmq_la-ip.lo: ip.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-ip.lo -MD -MP -MF $(DEPDIR)/libzmq_la-ip.Tpo -c -o libzmq_la-ip.lo `test -f 'ip.cpp' || echo '$(srcdir)/'`ip.cpp
- mv -f $(DEPDIR)/libzmq_la-ip.Tpo $(DEPDIR)/libzmq_la-ip.Plo
-# source='ip.cpp' object='libzmq_la-ip.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-ip.lo `test -f 'ip.cpp' || echo '$(srcdir)/'`ip.cpp
-
-libzmq_la-kqueue.lo: kqueue.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-kqueue.lo -MD -MP -MF $(DEPDIR)/libzmq_la-kqueue.Tpo -c -o libzmq_la-kqueue.lo `test -f 'kqueue.cpp' || echo '$(srcdir)/'`kqueue.cpp
- mv -f $(DEPDIR)/libzmq_la-kqueue.Tpo $(DEPDIR)/libzmq_la-kqueue.Plo
-# source='kqueue.cpp' object='libzmq_la-kqueue.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-kqueue.lo `test -f 'kqueue.cpp' || echo '$(srcdir)/'`kqueue.cpp
-
-libzmq_la-lb.lo: lb.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-lb.lo -MD -MP -MF $(DEPDIR)/libzmq_la-lb.Tpo -c -o libzmq_la-lb.lo `test -f 'lb.cpp' || echo '$(srcdir)/'`lb.cpp
- mv -f $(DEPDIR)/libzmq_la-lb.Tpo $(DEPDIR)/libzmq_la-lb.Plo
-# source='lb.cpp' object='libzmq_la-lb.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-lb.lo `test -f 'lb.cpp' || echo '$(srcdir)/'`lb.cpp
-
-libzmq_la-msg_store.lo: msg_store.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-msg_store.lo -MD -MP -MF $(DEPDIR)/libzmq_la-msg_store.Tpo -c -o libzmq_la-msg_store.lo `test -f 'msg_store.cpp' || echo '$(srcdir)/'`msg_store.cpp
- mv -f $(DEPDIR)/libzmq_la-msg_store.Tpo $(DEPDIR)/libzmq_la-msg_store.Plo
-# source='msg_store.cpp' object='libzmq_la-msg_store.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-msg_store.lo `test -f 'msg_store.cpp' || echo '$(srcdir)/'`msg_store.cpp
-
-libzmq_la-object.lo: object.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-object.lo -MD -MP -MF $(DEPDIR)/libzmq_la-object.Tpo -c -o libzmq_la-object.lo `test -f 'object.cpp' || echo '$(srcdir)/'`object.cpp
- mv -f $(DEPDIR)/libzmq_la-object.Tpo $(DEPDIR)/libzmq_la-object.Plo
-# source='object.cpp' object='libzmq_la-object.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-object.lo `test -f 'object.cpp' || echo '$(srcdir)/'`object.cpp
-
-libzmq_la-options.lo: options.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-options.lo -MD -MP -MF $(DEPDIR)/libzmq_la-options.Tpo -c -o libzmq_la-options.lo `test -f 'options.cpp' || echo '$(srcdir)/'`options.cpp
- mv -f $(DEPDIR)/libzmq_la-options.Tpo $(DEPDIR)/libzmq_la-options.Plo
-# source='options.cpp' object='libzmq_la-options.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-options.lo `test -f 'options.cpp' || echo '$(srcdir)/'`options.cpp
-
-libzmq_la-owned.lo: owned.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-owned.lo -MD -MP -MF $(DEPDIR)/libzmq_la-owned.Tpo -c -o libzmq_la-owned.lo `test -f 'owned.cpp' || echo '$(srcdir)/'`owned.cpp
- mv -f $(DEPDIR)/libzmq_la-owned.Tpo $(DEPDIR)/libzmq_la-owned.Plo
-# source='owned.cpp' object='libzmq_la-owned.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-owned.lo `test -f 'owned.cpp' || echo '$(srcdir)/'`owned.cpp
-
-libzmq_la-pgm_receiver.lo: pgm_receiver.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pgm_receiver.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm_receiver.Tpo -c -o libzmq_la-pgm_receiver.lo `test -f 'pgm_receiver.cpp' || echo '$(srcdir)/'`pgm_receiver.cpp
- mv -f $(DEPDIR)/libzmq_la-pgm_receiver.Tpo $(DEPDIR)/libzmq_la-pgm_receiver.Plo
-# source='pgm_receiver.cpp' object='libzmq_la-pgm_receiver.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pgm_receiver.lo `test -f 'pgm_receiver.cpp' || echo '$(srcdir)/'`pgm_receiver.cpp
-
-libzmq_la-pgm_sender.lo: pgm_sender.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pgm_sender.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm_sender.Tpo -c -o libzmq_la-pgm_sender.lo `test -f 'pgm_sender.cpp' || echo '$(srcdir)/'`pgm_sender.cpp
- mv -f $(DEPDIR)/libzmq_la-pgm_sender.Tpo $(DEPDIR)/libzmq_la-pgm_sender.Plo
-# source='pgm_sender.cpp' object='libzmq_la-pgm_sender.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pgm_sender.lo `test -f 'pgm_sender.cpp' || echo '$(srcdir)/'`pgm_sender.cpp
-
-libzmq_la-pgm_socket.lo: pgm_socket.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pgm_socket.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm_socket.Tpo -c -o libzmq_la-pgm_socket.lo `test -f 'pgm_socket.cpp' || echo '$(srcdir)/'`pgm_socket.cpp
- mv -f $(DEPDIR)/libzmq_la-pgm_socket.Tpo $(DEPDIR)/libzmq_la-pgm_socket.Plo
-# source='pgm_socket.cpp' object='libzmq_la-pgm_socket.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pgm_socket.lo `test -f 'pgm_socket.cpp' || echo '$(srcdir)/'`pgm_socket.cpp
-
-libzmq_la-pair.lo: pair.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pair.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pair.Tpo -c -o libzmq_la-pair.lo `test -f 'pair.cpp' || echo '$(srcdir)/'`pair.cpp
- mv -f $(DEPDIR)/libzmq_la-pair.Tpo $(DEPDIR)/libzmq_la-pair.Plo
-# source='pair.cpp' object='libzmq_la-pair.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pair.lo `test -f 'pair.cpp' || echo '$(srcdir)/'`pair.cpp
-
-libzmq_la-prefix_tree.lo: prefix_tree.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-prefix_tree.lo -MD -MP -MF $(DEPDIR)/libzmq_la-prefix_tree.Tpo -c -o libzmq_la-prefix_tree.lo `test -f 'prefix_tree.cpp' || echo '$(srcdir)/'`prefix_tree.cpp
- mv -f $(DEPDIR)/libzmq_la-prefix_tree.Tpo $(DEPDIR)/libzmq_la-prefix_tree.Plo
-# source='prefix_tree.cpp' object='libzmq_la-prefix_tree.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-prefix_tree.lo `test -f 'prefix_tree.cpp' || echo '$(srcdir)/'`prefix_tree.cpp
-
-libzmq_la-pipe.lo: pipe.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pipe.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pipe.Tpo -c -o libzmq_la-pipe.lo `test -f 'pipe.cpp' || echo '$(srcdir)/'`pipe.cpp
- mv -f $(DEPDIR)/libzmq_la-pipe.Tpo $(DEPDIR)/libzmq_la-pipe.Plo
-# source='pipe.cpp' object='libzmq_la-pipe.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pipe.lo `test -f 'pipe.cpp' || echo '$(srcdir)/'`pipe.cpp
-
-libzmq_la-poll.lo: poll.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-poll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-poll.Tpo -c -o libzmq_la-poll.lo `test -f 'poll.cpp' || echo '$(srcdir)/'`poll.cpp
- mv -f $(DEPDIR)/libzmq_la-poll.Tpo $(DEPDIR)/libzmq_la-poll.Plo
-# source='poll.cpp' object='libzmq_la-poll.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-poll.lo `test -f 'poll.cpp' || echo '$(srcdir)/'`poll.cpp
-
-libzmq_la-pub.lo: pub.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pub.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pub.Tpo -c -o libzmq_la-pub.lo `test -f 'pub.cpp' || echo '$(srcdir)/'`pub.cpp
- mv -f $(DEPDIR)/libzmq_la-pub.Tpo $(DEPDIR)/libzmq_la-pub.Plo
-# source='pub.cpp' object='libzmq_la-pub.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pub.lo `test -f 'pub.cpp' || echo '$(srcdir)/'`pub.cpp
-
-libzmq_la-queue.lo: queue.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-queue.lo -MD -MP -MF $(DEPDIR)/libzmq_la-queue.Tpo -c -o libzmq_la-queue.lo `test -f 'queue.cpp' || echo '$(srcdir)/'`queue.cpp
- mv -f $(DEPDIR)/libzmq_la-queue.Tpo $(DEPDIR)/libzmq_la-queue.Plo
-# source='queue.cpp' object='libzmq_la-queue.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-queue.lo `test -f 'queue.cpp' || echo '$(srcdir)/'`queue.cpp
-
-libzmq_la-rep.lo: rep.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-rep.lo -MD -MP -MF $(DEPDIR)/libzmq_la-rep.Tpo -c -o libzmq_la-rep.lo `test -f 'rep.cpp' || echo '$(srcdir)/'`rep.cpp
- mv -f $(DEPDIR)/libzmq_la-rep.Tpo $(DEPDIR)/libzmq_la-rep.Plo
-# source='rep.cpp' object='libzmq_la-rep.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-rep.lo `test -f 'rep.cpp' || echo '$(srcdir)/'`rep.cpp
-
-libzmq_la-req.lo: req.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-req.lo -MD -MP -MF $(DEPDIR)/libzmq_la-req.Tpo -c -o libzmq_la-req.lo `test -f 'req.cpp' || echo '$(srcdir)/'`req.cpp
- mv -f $(DEPDIR)/libzmq_la-req.Tpo $(DEPDIR)/libzmq_la-req.Plo
-# source='req.cpp' object='libzmq_la-req.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-req.lo `test -f 'req.cpp' || echo '$(srcdir)/'`req.cpp
-
-libzmq_la-select.lo: select.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-select.lo -MD -MP -MF $(DEPDIR)/libzmq_la-select.Tpo -c -o libzmq_la-select.lo `test -f 'select.cpp' || echo '$(srcdir)/'`select.cpp
- mv -f $(DEPDIR)/libzmq_la-select.Tpo $(DEPDIR)/libzmq_la-select.Plo
-# source='select.cpp' object='libzmq_la-select.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-select.lo `test -f 'select.cpp' || echo '$(srcdir)/'`select.cpp
-
-libzmq_la-session.lo: session.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-session.lo -MD -MP -MF $(DEPDIR)/libzmq_la-session.Tpo -c -o libzmq_la-session.lo `test -f 'session.cpp' || echo '$(srcdir)/'`session.cpp
- mv -f $(DEPDIR)/libzmq_la-session.Tpo $(DEPDIR)/libzmq_la-session.Plo
-# source='session.cpp' object='libzmq_la-session.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-session.lo `test -f 'session.cpp' || echo '$(srcdir)/'`session.cpp
-
-libzmq_la-signaler.lo: signaler.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-signaler.lo -MD -MP -MF $(DEPDIR)/libzmq_la-signaler.Tpo -c -o libzmq_la-signaler.lo `test -f 'signaler.cpp' || echo '$(srcdir)/'`signaler.cpp
- mv -f $(DEPDIR)/libzmq_la-signaler.Tpo $(DEPDIR)/libzmq_la-signaler.Plo
-# source='signaler.cpp' object='libzmq_la-signaler.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-signaler.lo `test -f 'signaler.cpp' || echo '$(srcdir)/'`signaler.cpp
-
-libzmq_la-socket_base.lo: socket_base.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-socket_base.lo -MD -MP -MF $(DEPDIR)/libzmq_la-socket_base.Tpo -c -o libzmq_la-socket_base.lo `test -f 'socket_base.cpp' || echo '$(srcdir)/'`socket_base.cpp
- mv -f $(DEPDIR)/libzmq_la-socket_base.Tpo $(DEPDIR)/libzmq_la-socket_base.Plo
-# source='socket_base.cpp' object='libzmq_la-socket_base.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-socket_base.lo `test -f 'socket_base.cpp' || echo '$(srcdir)/'`socket_base.cpp
-
-libzmq_la-streamer.lo: streamer.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-streamer.lo -MD -MP -MF $(DEPDIR)/libzmq_la-streamer.Tpo -c -o libzmq_la-streamer.lo `test -f 'streamer.cpp' || echo '$(srcdir)/'`streamer.cpp
- mv -f $(DEPDIR)/libzmq_la-streamer.Tpo $(DEPDIR)/libzmq_la-streamer.Plo
-# source='streamer.cpp' object='libzmq_la-streamer.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-streamer.lo `test -f 'streamer.cpp' || echo '$(srcdir)/'`streamer.cpp
-
-libzmq_la-sub.lo: sub.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-sub.lo -MD -MP -MF $(DEPDIR)/libzmq_la-sub.Tpo -c -o libzmq_la-sub.lo `test -f 'sub.cpp' || echo '$(srcdir)/'`sub.cpp
- mv -f $(DEPDIR)/libzmq_la-sub.Tpo $(DEPDIR)/libzmq_la-sub.Plo
-# source='sub.cpp' object='libzmq_la-sub.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-sub.lo `test -f 'sub.cpp' || echo '$(srcdir)/'`sub.cpp
-
-libzmq_la-tcp_connecter.lo: tcp_connecter.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-tcp_connecter.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tcp_connecter.Tpo -c -o libzmq_la-tcp_connecter.lo `test -f 'tcp_connecter.cpp' || echo '$(srcdir)/'`tcp_connecter.cpp
- mv -f $(DEPDIR)/libzmq_la-tcp_connecter.Tpo $(DEPDIR)/libzmq_la-tcp_connecter.Plo
-# source='tcp_connecter.cpp' object='libzmq_la-tcp_connecter.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-tcp_connecter.lo `test -f 'tcp_connecter.cpp' || echo '$(srcdir)/'`tcp_connecter.cpp
-
-libzmq_la-tcp_listener.lo: tcp_listener.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-tcp_listener.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tcp_listener.Tpo -c -o libzmq_la-tcp_listener.lo `test -f 'tcp_listener.cpp' || echo '$(srcdir)/'`tcp_listener.cpp
- mv -f $(DEPDIR)/libzmq_la-tcp_listener.Tpo $(DEPDIR)/libzmq_la-tcp_listener.Plo
-# source='tcp_listener.cpp' object='libzmq_la-tcp_listener.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-tcp_listener.lo `test -f 'tcp_listener.cpp' || echo '$(srcdir)/'`tcp_listener.cpp
-
-libzmq_la-tcp_socket.lo: tcp_socket.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-tcp_socket.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tcp_socket.Tpo -c -o libzmq_la-tcp_socket.lo `test -f 'tcp_socket.cpp' || echo '$(srcdir)/'`tcp_socket.cpp
- mv -f $(DEPDIR)/libzmq_la-tcp_socket.Tpo $(DEPDIR)/libzmq_la-tcp_socket.Plo
-# source='tcp_socket.cpp' object='libzmq_la-tcp_socket.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-tcp_socket.lo `test -f 'tcp_socket.cpp' || echo '$(srcdir)/'`tcp_socket.cpp
-
-libzmq_la-thread.lo: thread.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-thread.lo -MD -MP -MF $(DEPDIR)/libzmq_la-thread.Tpo -c -o libzmq_la-thread.lo `test -f 'thread.cpp' || echo '$(srcdir)/'`thread.cpp
- mv -f $(DEPDIR)/libzmq_la-thread.Tpo $(DEPDIR)/libzmq_la-thread.Plo
-# source='thread.cpp' object='libzmq_la-thread.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-thread.lo `test -f 'thread.cpp' || echo '$(srcdir)/'`thread.cpp
-
-libzmq_la-pull.lo: pull.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pull.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pull.Tpo -c -o libzmq_la-pull.lo `test -f 'pull.cpp' || echo '$(srcdir)/'`pull.cpp
- mv -f $(DEPDIR)/libzmq_la-pull.Tpo $(DEPDIR)/libzmq_la-pull.Plo
-# source='pull.cpp' object='libzmq_la-pull.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pull.lo `test -f 'pull.cpp' || echo '$(srcdir)/'`pull.cpp
-
-libzmq_la-uuid.lo: uuid.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-uuid.lo -MD -MP -MF $(DEPDIR)/libzmq_la-uuid.Tpo -c -o libzmq_la-uuid.lo `test -f 'uuid.cpp' || echo '$(srcdir)/'`uuid.cpp
- mv -f $(DEPDIR)/libzmq_la-uuid.Tpo $(DEPDIR)/libzmq_la-uuid.Plo
-# source='uuid.cpp' object='libzmq_la-uuid.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-uuid.lo `test -f 'uuid.cpp' || echo '$(srcdir)/'`uuid.cpp
-
-libzmq_la-xrep.lo: xrep.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-xrep.lo -MD -MP -MF $(DEPDIR)/libzmq_la-xrep.Tpo -c -o libzmq_la-xrep.lo `test -f 'xrep.cpp' || echo '$(srcdir)/'`xrep.cpp
- mv -f $(DEPDIR)/libzmq_la-xrep.Tpo $(DEPDIR)/libzmq_la-xrep.Plo
-# source='xrep.cpp' object='libzmq_la-xrep.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-xrep.lo `test -f 'xrep.cpp' || echo '$(srcdir)/'`xrep.cpp
-
-libzmq_la-xreq.lo: xreq.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-xreq.lo -MD -MP -MF $(DEPDIR)/libzmq_la-xreq.Tpo -c -o libzmq_la-xreq.lo `test -f 'xreq.cpp' || echo '$(srcdir)/'`xreq.cpp
- mv -f $(DEPDIR)/libzmq_la-xreq.Tpo $(DEPDIR)/libzmq_la-xreq.Plo
-# source='xreq.cpp' object='libzmq_la-xreq.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-xreq.lo `test -f 'xreq.cpp' || echo '$(srcdir)/'`xreq.cpp
-
-libzmq_la-zmq.lo: zmq.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq.Tpo -c -o libzmq_la-zmq.lo `test -f 'zmq.cpp' || echo '$(srcdir)/'`zmq.cpp
- mv -f $(DEPDIR)/libzmq_la-zmq.Tpo $(DEPDIR)/libzmq_la-zmq.Plo
-# source='zmq.cpp' object='libzmq_la-zmq.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq.lo `test -f 'zmq.cpp' || echo '$(srcdir)/'`zmq.cpp
-
-libzmq_la-zmq_connecter.lo: zmq_connecter.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_connecter.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_connecter.Tpo -c -o libzmq_la-zmq_connecter.lo `test -f 'zmq_connecter.cpp' || echo '$(srcdir)/'`zmq_connecter.cpp
- mv -f $(DEPDIR)/libzmq_la-zmq_connecter.Tpo $(DEPDIR)/libzmq_la-zmq_connecter.Plo
-# source='zmq_connecter.cpp' object='libzmq_la-zmq_connecter.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_connecter.lo `test -f 'zmq_connecter.cpp' || echo '$(srcdir)/'`zmq_connecter.cpp
-
-libzmq_la-zmq_decoder.lo: zmq_decoder.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_decoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_decoder.Tpo -c -o libzmq_la-zmq_decoder.lo `test -f 'zmq_decoder.cpp' || echo '$(srcdir)/'`zmq_decoder.cpp
- mv -f $(DEPDIR)/libzmq_la-zmq_decoder.Tpo $(DEPDIR)/libzmq_la-zmq_decoder.Plo
-# source='zmq_decoder.cpp' object='libzmq_la-zmq_decoder.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_decoder.lo `test -f 'zmq_decoder.cpp' || echo '$(srcdir)/'`zmq_decoder.cpp
-
-libzmq_la-zmq_encoder.lo: zmq_encoder.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_encoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_encoder.Tpo -c -o libzmq_la-zmq_encoder.lo `test -f 'zmq_encoder.cpp' || echo '$(srcdir)/'`zmq_encoder.cpp
- mv -f $(DEPDIR)/libzmq_la-zmq_encoder.Tpo $(DEPDIR)/libzmq_la-zmq_encoder.Plo
-# source='zmq_encoder.cpp' object='libzmq_la-zmq_encoder.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_encoder.lo `test -f 'zmq_encoder.cpp' || echo '$(srcdir)/'`zmq_encoder.cpp
-
-libzmq_la-zmq_engine.lo: zmq_engine.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_engine.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_engine.Tpo -c -o libzmq_la-zmq_engine.lo `test -f 'zmq_engine.cpp' || echo '$(srcdir)/'`zmq_engine.cpp
- mv -f $(DEPDIR)/libzmq_la-zmq_engine.Tpo $(DEPDIR)/libzmq_la-zmq_engine.Plo
-# source='zmq_engine.cpp' object='libzmq_la-zmq_engine.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_engine.lo `test -f 'zmq_engine.cpp' || echo '$(srcdir)/'`zmq_engine.cpp
-
-libzmq_la-zmq_init.lo: zmq_init.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_init.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_init.Tpo -c -o libzmq_la-zmq_init.lo `test -f 'zmq_init.cpp' || echo '$(srcdir)/'`zmq_init.cpp
- mv -f $(DEPDIR)/libzmq_la-zmq_init.Tpo $(DEPDIR)/libzmq_la-zmq_init.Plo
-# source='zmq_init.cpp' object='libzmq_la-zmq_init.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_init.lo `test -f 'zmq_init.cpp' || echo '$(srcdir)/'`zmq_init.cpp
-
-libzmq_la-zmq_listener.lo: zmq_listener.cpp
- $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_listener.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_listener.Tpo -c -o libzmq_la-zmq_listener.lo `test -f 'zmq_listener.cpp' || echo '$(srcdir)/'`zmq_listener.cpp
- mv -f $(DEPDIR)/libzmq_la-zmq_listener.Tpo $(DEPDIR)/libzmq_la-zmq_listener.Plo
-# source='zmq_listener.cpp' object='libzmq_la-zmq_listener.lo' libtool=yes \
-# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
-# $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_listener.lo `test -f 'zmq_listener.cpp' || echo '$(srcdir)/'`zmq_listener.cpp
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-pkgconfigDATA: $(pkgconfig_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
- @list='$(pkgconfig_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
- $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
- done
-
-uninstall-pkgconfigDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(pkgconfig_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
- rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
- done
-install-includeHEADERS: $(include_HEADERS)
- @$(NORMAL_INSTALL)
- test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
- @list='$(include_HEADERS)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
- $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
- done
-
-uninstall-includeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(include_HEADERS)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
- rm -f "$(DESTDIR)$(includedir)/$$f"; \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) platform.hpp.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) platform.hpp.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) platform.hpp.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- list='$(SOURCES) $(HEADERS) platform.hpp.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" distdir="$(distdir)" \
- dist-hook
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) platform.hpp
-installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-hdr distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-includeHEADERS install-pkgconfigDATA
-
-install-dvi: install-dvi-am
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
- uninstall-pkgconfigDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libLTLIBRARIES clean-libtool ctags dist-hook distclean \
- distclean-compile distclean-generic distclean-hdr \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am \
- install-includeHEADERS install-info install-info-am \
- install-libLTLIBRARIES install-man install-pdf install-pdf-am \
- install-pkgconfigDATA install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-includeHEADERS \
- uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
-
-
-#../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version.c: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version_generator.py
-# python ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/version_generator.py > $@
-
-#../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_tables.c: ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_generator.pl
-# perl ../foreign/openpgm/libpgm-2.1.26/openpgm/pgm/galois_generator.pl > $@
-
-dist-hook:
- -rm $(distdir)/platform.hpp
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/util/network/zeromq/src/Makefile.am b/util/network/zeromq/src/Makefile.am
deleted file mode 100644
index 19a80d03..00000000
--- a/util/network/zeromq/src/Makefile.am
+++ /dev/null
@@ -1,246 +0,0 @@
-lib_LTLIBRARIES = libzmq.la
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libzmq.pc
-
-include_HEADERS = ../include/zmq.h ../include/zmq.hpp ../include/zmq_utils.h
-
-if BUILD_PGM
-pgm_sources = ../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c \
- ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c
-
-../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version_generator.py
- python ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version_generator.py > $@
-
-../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_generator.pl
- perl ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_generator.pl > $@
-endif
-
-nodist_libzmq_la_SOURCES = $(pgm_sources)
-
-libzmq_la_SOURCES = app_thread.hpp \
- atomic_counter.hpp \
- atomic_ptr.hpp \
- blob.hpp \
- command.hpp \
- config.hpp \
- ctx.hpp \
- decoder.hpp \
- devpoll.hpp \
- push.hpp \
- encoder.hpp \
- epoll.hpp \
- err.hpp \
- fd.hpp \
- forwarder.hpp \
- fq.hpp \
- i_inout.hpp \
- io_object.hpp \
- io_thread.hpp \
- ip.hpp \
- i_endpoint.hpp \
- i_engine.hpp \
- i_poll_events.hpp \
- kqueue.hpp \
- lb.hpp \
- likely.hpp \
- msg_content.hpp \
- msg_store.hpp \
- mutex.hpp \
- object.hpp \
- options.hpp \
- owned.hpp \
- pgm_receiver.hpp \
- pgm_sender.hpp \
- pgm_socket.hpp \
- pipe.hpp \
- platform.hpp \
- poll.hpp \
- poller.hpp \
- pair.hpp \
- prefix_tree.hpp \
- pub.hpp \
- queue.hpp \
- rep.hpp \
- req.hpp \
- select.hpp \
- session.hpp \
- signaler.hpp \
- socket_base.hpp \
- stdint.hpp \
- streamer.hpp \
- sub.hpp \
- tcp_connecter.hpp \
- tcp_listener.hpp \
- tcp_socket.hpp \
- thread.hpp \
- pull.hpp \
- uuid.hpp \
- windows.hpp \
- wire.hpp \
- xrep.hpp \
- xreq.hpp \
- yarray.hpp \
- yarray_item.hpp \
- ypipe.hpp \
- yqueue.hpp \
- zmq_connecter.hpp \
- zmq_decoder.hpp \
- zmq_encoder.hpp \
- zmq_engine.hpp \
- zmq_init.hpp \
- zmq_listener.hpp \
- app_thread.cpp \
- command.cpp \
- ctx.cpp \
- devpoll.cpp \
- push.cpp \
- epoll.cpp \
- err.cpp \
- forwarder.cpp \
- fq.cpp \
- io_object.cpp \
- io_thread.cpp \
- ip.cpp \
- kqueue.cpp \
- lb.cpp \
- msg_store.cpp \
- object.cpp \
- options.cpp \
- owned.cpp \
- pgm_receiver.cpp \
- pgm_sender.cpp \
- pgm_socket.cpp \
- pair.cpp \
- prefix_tree.cpp \
- pipe.cpp \
- poll.cpp \
- pub.cpp \
- queue.cpp \
- rep.cpp \
- req.cpp \
- select.cpp \
- session.cpp \
- signaler.cpp \
- socket_base.cpp \
- streamer.cpp \
- sub.cpp \
- tcp_connecter.cpp \
- tcp_listener.cpp \
- tcp_socket.cpp \
- thread.cpp \
- pull.cpp \
- uuid.cpp \
- xrep.cpp \
- xreq.cpp \
- zmq.cpp \
- zmq_connecter.cpp \
- zmq_decoder.cpp \
- zmq_encoder.cpp \
- zmq_engine.cpp \
- zmq_init.cpp \
- zmq_listener.cpp
-
-if ON_MINGW
-libzmq_la_LDFLAGS = -no-undefined -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@
-else
-libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@
-endif
-
-if BUILD_PGM
-
-if ON_MINGW
-libpgm_diff_flags = \
- -D_WIN32_WINNT=0x0501 \
- -DCONFIG_16BIT_CHECKSUM \
- -DCONFIG_HAVE_IFR_NETMASK \
- -DCONFIG_BIND_INADDR_ANY \
- -DCONFIG_GALOIS_MUL_LUT \
- -DIF_NAMESIZE=256 \
- -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \
- -DCONFIG_HAVE_WSACMSGHDR \
- -DGETTEXT_PACKAGE='"pgm"' \
- -DG_LOG_DOMAIN='"Pgm"'
-
-else
-libpgm_diff_flags = \
- -D__need_IOV_MAX \
- -DCONFIG_16BIT_CHECKSUM \
- -DCONFIG_HAVE_PSELECT \
- -DCONFIG_HAVE_POLL \
- -DCONFIG_HAVE_PPOLL \
- -DCONFIG_HAVE_EPOLL \
- -DCONFIG_HAVE_CLOCK_GETTIME \
- -DCONFIG_HAVE_CLOCK_NANOSLEEP \
- -DCONFIG_HAVE_NANOSLEEP \
- -DCONFIG_HAVE_USLEEP \
- -DCONFIG_HAVE_RTC \
- -DCONFIG_HAVE_TSC \
- -DCONFIG_HAVE_IFR_NETMASK \
- -DCONFIG_HAVE_GETIFADDRS \
- -DCONFIG_HAVE_GETHOSTBYNAME2 \
- -DCONFIG_HAVE_GETPROTOBYNAME_R \
- -DCONFIG_BIND_INADDR_ANY \
- -DCONFIG_GALOIS_MUL_LUT \
- -DCONFIG_HAVE_MCAST_JOIN \
- -DCONFIG_HAVE_IP_MREQN \
- -DCONFIG_HAVE_SPRINTF_GROUPING \
- -DCONFIG_HAVE_HPET \
- -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \
- -DGETTEXT_PACKAGE='"pgm"' \
- -DG_LOG_DOMAIN='"Pgm"'
-endif
-
-libzmq_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ @LIBZMQ_EXTRA_CXXFLAGS@ \
- -Wall \
- -pedantic \
- -std=gnu99 \
- -fno-strict-aliasing \
- --param max-inline-insns-single=600 \
- -D_REENTRANT \
- -D_GNU_SOURCE \
- ${libpgm_diff_flags}
-
-libzmq_la_CXXFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ \
- @LIBZMQ_EXTRA_CXXFLAGS@
-endif
-
-if BUILD_NO_PGM
-libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@
-endif
-
-dist-hook:
- -rm $(distdir)/platform.hpp
-
-
diff --git a/util/network/zeromq/src/Makefile.in b/util/network/zeromq/src/Makefile.in
deleted file mode 100644
index c3e4de77..00000000
--- a/util/network/zeromq/src/Makefile.in
+++ /dev/null
@@ -1,1512 +0,0 @@
-# Makefile.in generated by automake 1.10.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src
-DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in $(srcdir)/libzmq.pc.in \
- $(srcdir)/platform.hpp.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.in
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = platform.hpp
-CONFIG_CLEAN_FILES = libzmq.pc
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \
- "$(DESTDIR)$(includedir)"
-libLTLIBRARIES_INSTALL = $(INSTALL)
-LTLIBRARIES = $(lib_LTLIBRARIES)
-libzmq_la_LIBADD =
-am_libzmq_la_OBJECTS = libzmq_la-app_thread.lo libzmq_la-command.lo \
- libzmq_la-ctx.lo libzmq_la-devpoll.lo libzmq_la-push.lo \
- libzmq_la-epoll.lo libzmq_la-err.lo libzmq_la-forwarder.lo \
- libzmq_la-fq.lo libzmq_la-io_object.lo libzmq_la-io_thread.lo \
- libzmq_la-ip.lo libzmq_la-kqueue.lo libzmq_la-lb.lo \
- libzmq_la-msg_store.lo libzmq_la-object.lo \
- libzmq_la-options.lo libzmq_la-owned.lo \
- libzmq_la-pgm_receiver.lo libzmq_la-pgm_sender.lo \
- libzmq_la-pgm_socket.lo libzmq_la-pair.lo \
- libzmq_la-prefix_tree.lo libzmq_la-pipe.lo libzmq_la-poll.lo \
- libzmq_la-pub.lo libzmq_la-queue.lo libzmq_la-rep.lo \
- libzmq_la-req.lo libzmq_la-select.lo libzmq_la-session.lo \
- libzmq_la-signaler.lo libzmq_la-socket_base.lo \
- libzmq_la-streamer.lo libzmq_la-sub.lo \
- libzmq_la-tcp_connecter.lo libzmq_la-tcp_listener.lo \
- libzmq_la-tcp_socket.lo libzmq_la-thread.lo libzmq_la-pull.lo \
- libzmq_la-uuid.lo libzmq_la-xrep.lo libzmq_la-xreq.lo \
- libzmq_la-zmq.lo libzmq_la-zmq_connecter.lo \
- libzmq_la-zmq_decoder.lo libzmq_la-zmq_encoder.lo \
- libzmq_la-zmq_engine.lo libzmq_la-zmq_init.lo \
- libzmq_la-zmq_listener.lo
-@BUILD_PGM_TRUE@am__objects_1 = libzmq_la-packet.lo libzmq_la-time.lo \
-@BUILD_PGM_TRUE@ libzmq_la-if.lo libzmq_la-getifaddrs.lo \
-@BUILD_PGM_TRUE@ libzmq_la-getnodeaddr.lo \
-@BUILD_PGM_TRUE@ libzmq_la-indextoaddr.lo \
-@BUILD_PGM_TRUE@ libzmq_la-indextoname.lo \
-@BUILD_PGM_TRUE@ libzmq_la-nametoindex.lo \
-@BUILD_PGM_TRUE@ libzmq_la-inet_network.lo libzmq_la-md5.lo \
-@BUILD_PGM_TRUE@ libzmq_la-gsi.lo libzmq_la-tsi.lo \
-@BUILD_PGM_TRUE@ libzmq_la-signal.lo libzmq_la-txwi.lo \
-@BUILD_PGM_TRUE@ libzmq_la-rxwi.lo libzmq_la-transport.lo \
-@BUILD_PGM_TRUE@ libzmq_la-source.lo libzmq_la-receiver.lo \
-@BUILD_PGM_TRUE@ libzmq_la-recv.lo libzmq_la-pgm.lo \
-@BUILD_PGM_TRUE@ libzmq_la-timer.lo libzmq_la-net.lo \
-@BUILD_PGM_TRUE@ libzmq_la-rate_control.lo libzmq_la-async.lo \
-@BUILD_PGM_TRUE@ libzmq_la-checksum.lo \
-@BUILD_PGM_TRUE@ libzmq_la-reed_solomon.lo \
-@BUILD_PGM_TRUE@ libzmq_la-galois_tables.lo \
-@BUILD_PGM_TRUE@ libzmq_la-wsastrerror.lo \
-@BUILD_PGM_TRUE@ libzmq_la-glib-compat.lo \
-@BUILD_PGM_TRUE@ libzmq_la-backtrace.lo libzmq_la-log.lo \
-@BUILD_PGM_TRUE@ libzmq_la-sockaddr.lo libzmq_la-version.lo
-nodist_libzmq_la_OBJECTS = $(am__objects_1)
-libzmq_la_OBJECTS = $(am_libzmq_la_OBJECTS) \
- $(nodist_libzmq_la_OBJECTS)
-libzmq_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(libzmq_la_CXXFLAGS) \
- $(CXXFLAGS) $(libzmq_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/config/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(libzmq_la_SOURCES) $(nodist_libzmq_la_SOURCES)
-DIST_SOURCES = $(libzmq_la_SOURCES)
-pkgconfigDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(pkgconfig_DATA)
-includeHEADERS_INSTALL = $(INSTALL_HEADER)
-HEADERS = $(include_HEADERS)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-DLLTOOL = @DLLTOOL@
-DSYMUTIL = @DSYMUTIL@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-GLIB_CFLAGS = @GLIB_CFLAGS@
-GLIB_LIBS = @GLIB_LIBS@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LIBZMQ_EXTRA_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@
-LIBZMQ_EXTRA_LDFLAGS = @LIBZMQ_EXTRA_LDFLAGS@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-LTVER = @LTVER@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-NMEDIT = @NMEDIT@
-OBJDUMP = @OBJDUMP@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-have_asciidoc = @have_asciidoc@
-have_gzip = @have_gzip@
-have_perl = @have_perl@
-have_pkg_config = @have_pkg_config@
-have_python = @have_python@
-have_xmlto = @have_xmlto@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-inttypes = @inttypes@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-pgm_basename = @pgm_basename@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-stdint = @stdint@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-lib_LTLIBRARIES = libzmq.la
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = libzmq.pc
-include_HEADERS = ../include/zmq.h ../include/zmq.hpp ../include/zmq_utils.h
-@BUILD_PGM_TRUE@pgm_sources = ../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c \
-@BUILD_PGM_TRUE@ ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c
-
-nodist_libzmq_la_SOURCES = $(pgm_sources)
-libzmq_la_SOURCES = app_thread.hpp \
- atomic_counter.hpp \
- atomic_ptr.hpp \
- blob.hpp \
- command.hpp \
- config.hpp \
- ctx.hpp \
- decoder.hpp \
- devpoll.hpp \
- push.hpp \
- encoder.hpp \
- epoll.hpp \
- err.hpp \
- fd.hpp \
- forwarder.hpp \
- fq.hpp \
- i_inout.hpp \
- io_object.hpp \
- io_thread.hpp \
- ip.hpp \
- i_endpoint.hpp \
- i_engine.hpp \
- i_poll_events.hpp \
- kqueue.hpp \
- lb.hpp \
- likely.hpp \
- msg_content.hpp \
- msg_store.hpp \
- mutex.hpp \
- object.hpp \
- options.hpp \
- owned.hpp \
- pgm_receiver.hpp \
- pgm_sender.hpp \
- pgm_socket.hpp \
- pipe.hpp \
- platform.hpp \
- poll.hpp \
- poller.hpp \
- pair.hpp \
- prefix_tree.hpp \
- pub.hpp \
- queue.hpp \
- rep.hpp \
- req.hpp \
- select.hpp \
- session.hpp \
- signaler.hpp \
- socket_base.hpp \
- stdint.hpp \
- streamer.hpp \
- sub.hpp \
- tcp_connecter.hpp \
- tcp_listener.hpp \
- tcp_socket.hpp \
- thread.hpp \
- pull.hpp \
- uuid.hpp \
- windows.hpp \
- wire.hpp \
- xrep.hpp \
- xreq.hpp \
- yarray.hpp \
- yarray_item.hpp \
- ypipe.hpp \
- yqueue.hpp \
- zmq_connecter.hpp \
- zmq_decoder.hpp \
- zmq_encoder.hpp \
- zmq_engine.hpp \
- zmq_init.hpp \
- zmq_listener.hpp \
- app_thread.cpp \
- command.cpp \
- ctx.cpp \
- devpoll.cpp \
- push.cpp \
- epoll.cpp \
- err.cpp \
- forwarder.cpp \
- fq.cpp \
- io_object.cpp \
- io_thread.cpp \
- ip.cpp \
- kqueue.cpp \
- lb.cpp \
- msg_store.cpp \
- object.cpp \
- options.cpp \
- owned.cpp \
- pgm_receiver.cpp \
- pgm_sender.cpp \
- pgm_socket.cpp \
- pair.cpp \
- prefix_tree.cpp \
- pipe.cpp \
- poll.cpp \
- pub.cpp \
- queue.cpp \
- rep.cpp \
- req.cpp \
- select.cpp \
- session.cpp \
- signaler.cpp \
- socket_base.cpp \
- streamer.cpp \
- sub.cpp \
- tcp_connecter.cpp \
- tcp_listener.cpp \
- tcp_socket.cpp \
- thread.cpp \
- pull.cpp \
- uuid.cpp \
- xrep.cpp \
- xreq.cpp \
- zmq.cpp \
- zmq_connecter.cpp \
- zmq_decoder.cpp \
- zmq_encoder.cpp \
- zmq_engine.cpp \
- zmq_init.cpp \
- zmq_listener.cpp
-
-@ON_MINGW_FALSE@libzmq_la_LDFLAGS = -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@
-@ON_MINGW_TRUE@libzmq_la_LDFLAGS = -no-undefined -avoid-version -version-info @LTVER@ @LIBZMQ_EXTRA_LDFLAGS@
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@libpgm_diff_flags = \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -D__need_IOV_MAX \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_16BIT_CHECKSUM \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_PSELECT \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_POLL \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_PPOLL \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_EPOLL \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_CLOCK_GETTIME \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_CLOCK_NANOSLEEP \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_NANOSLEEP \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_USLEEP \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_RTC \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_TSC \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_IFR_NETMASK \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_GETIFADDRS \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_GETHOSTBYNAME2 \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_GETPROTOBYNAME_R \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_BIND_INADDR_ANY \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_GALOIS_MUL_LUT \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_MCAST_JOIN \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_IP_MREQN \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_SPRINTF_GROUPING \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DCONFIG_HAVE_HPET \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DGETTEXT_PACKAGE='"pgm"' \
-@BUILD_PGM_TRUE@@ON_MINGW_FALSE@ -DG_LOG_DOMAIN='"Pgm"'
-
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@libpgm_diff_flags = \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -D_WIN32_WINNT=0x0501 \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DCONFIG_16BIT_CHECKSUM \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DCONFIG_HAVE_IFR_NETMASK \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DCONFIG_BIND_INADDR_ANY \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DCONFIG_GALOIS_MUL_LUT \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DIF_NAMESIZE=256 \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DPGM_GNUC_INTERNAL=G_GNUC_INTERNAL \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DCONFIG_HAVE_WSACMSGHDR \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DGETTEXT_PACKAGE='"pgm"' \
-@BUILD_PGM_TRUE@@ON_MINGW_TRUE@ -DG_LOG_DOMAIN='"Pgm"'
-
-@BUILD_PGM_TRUE@libzmq_la_CFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ @LIBZMQ_EXTRA_CXXFLAGS@ \
-@BUILD_PGM_TRUE@ -Wall \
-@BUILD_PGM_TRUE@ -pedantic \
-@BUILD_PGM_TRUE@ -std=gnu99 \
-@BUILD_PGM_TRUE@ -fno-strict-aliasing \
-@BUILD_PGM_TRUE@ --param max-inline-insns-single=600 \
-@BUILD_PGM_TRUE@ -D_REENTRANT \
-@BUILD_PGM_TRUE@ -D_GNU_SOURCE \
-@BUILD_PGM_TRUE@ ${libpgm_diff_flags}
-
-@BUILD_NO_PGM_TRUE@libzmq_la_CXXFLAGS = @LIBZMQ_EXTRA_CXXFLAGS@
-@BUILD_PGM_TRUE@libzmq_la_CXXFLAGS = -I$(top_srcdir)/foreign/openpgm/@pgm_basename@/openpgm/pgm/include/ \
-@BUILD_PGM_TRUE@ @LIBZMQ_EXTRA_CXXFLAGS@
-
-all: platform.hpp
- $(MAKE) $(AM_MAKEFLAGS) all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .cpp .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --gnu src/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-platform.hpp: stamp-h1
- @if test ! -f $@; then \
- rm -f stamp-h1; \
- $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
- else :; fi
-
-stamp-h1: $(srcdir)/platform.hpp.in $(top_builddir)/config.status
- @rm -f stamp-h1
- cd $(top_builddir) && $(SHELL) ./config.status src/platform.hpp
-$(srcdir)/platform.hpp.in: $(am__configure_deps)
- cd $(top_srcdir) && $(AUTOHEADER)
- rm -f stamp-h1
- touch $@
-
-distclean-hdr:
- -rm -f platform.hpp stamp-h1
-libzmq.pc: $(top_builddir)/config.status $(srcdir)/libzmq.pc.in
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- if test -f $$p; then \
- f=$(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
- else :; fi; \
- done
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- p=$(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libzmq.la: $(libzmq_la_OBJECTS) $(libzmq_la_DEPENDENCIES)
- $(libzmq_la_LINK) -rpath $(libdir) $(libzmq_la_OBJECTS) $(libzmq_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-app_thread.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-async.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-backtrace.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-checksum.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-command.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-ctx.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-devpoll.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-epoll.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-err.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-forwarder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-fq.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-galois_tables.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-getifaddrs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-getnodeaddr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-glib-compat.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-gsi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-if.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-indextoaddr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-indextoname.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-inet_network.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-io_object.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-io_thread.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-ip.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-kqueue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-lb.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-log.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-md5.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-msg_store.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-nametoindex.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-net.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-object.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-options.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-owned.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-packet.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pair.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pgm.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pgm_receiver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pgm_sender.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pgm_socket.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pipe.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-poll.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-prefix_tree.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pub.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-pull.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-push.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-queue.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-rate_control.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-receiver.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-recv.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-reed_solomon.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-rep.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-req.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-rxwi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-select.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-session.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-signal.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-signaler.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-sockaddr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-socket_base.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-source.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-streamer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-sub.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-tcp_connecter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-tcp_listener.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-tcp_socket.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-thread.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-time.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-timer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-transport.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-tsi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-txwi.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-uuid.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-version.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-wsastrerror.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-xrep.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-xreq.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq_connecter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq_decoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq_encoder.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq_engine.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq_init.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libzmq_la-zmq_listener.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-libzmq_la-packet.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-packet.lo -MD -MP -MF $(DEPDIR)/libzmq_la-packet.Tpo -c -o libzmq_la-packet.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-packet.Tpo $(DEPDIR)/libzmq_la-packet.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c' object='libzmq_la-packet.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-packet.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/packet.c
-
-libzmq_la-time.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-time.lo -MD -MP -MF $(DEPDIR)/libzmq_la-time.Tpo -c -o libzmq_la-time.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-time.Tpo $(DEPDIR)/libzmq_la-time.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c' object='libzmq_la-time.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-time.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/time.c
-
-libzmq_la-if.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-if.lo -MD -MP -MF $(DEPDIR)/libzmq_la-if.Tpo -c -o libzmq_la-if.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-if.Tpo $(DEPDIR)/libzmq_la-if.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c' object='libzmq_la-if.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-if.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/if.c
-
-libzmq_la-getifaddrs.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-getifaddrs.lo -MD -MP -MF $(DEPDIR)/libzmq_la-getifaddrs.Tpo -c -o libzmq_la-getifaddrs.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-getifaddrs.Tpo $(DEPDIR)/libzmq_la-getifaddrs.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c' object='libzmq_la-getifaddrs.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-getifaddrs.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/getifaddrs.c
-
-libzmq_la-getnodeaddr.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-getnodeaddr.lo -MD -MP -MF $(DEPDIR)/libzmq_la-getnodeaddr.Tpo -c -o libzmq_la-getnodeaddr.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-getnodeaddr.Tpo $(DEPDIR)/libzmq_la-getnodeaddr.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c' object='libzmq_la-getnodeaddr.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-getnodeaddr.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/getnodeaddr.c
-
-libzmq_la-indextoaddr.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-indextoaddr.lo -MD -MP -MF $(DEPDIR)/libzmq_la-indextoaddr.Tpo -c -o libzmq_la-indextoaddr.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-indextoaddr.Tpo $(DEPDIR)/libzmq_la-indextoaddr.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c' object='libzmq_la-indextoaddr.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-indextoaddr.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoaddr.c
-
-libzmq_la-indextoname.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-indextoname.lo -MD -MP -MF $(DEPDIR)/libzmq_la-indextoname.Tpo -c -o libzmq_la-indextoname.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-indextoname.Tpo $(DEPDIR)/libzmq_la-indextoname.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c' object='libzmq_la-indextoname.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-indextoname.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/indextoname.c
-
-libzmq_la-nametoindex.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-nametoindex.lo -MD -MP -MF $(DEPDIR)/libzmq_la-nametoindex.Tpo -c -o libzmq_la-nametoindex.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-nametoindex.Tpo $(DEPDIR)/libzmq_la-nametoindex.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c' object='libzmq_la-nametoindex.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-nametoindex.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/nametoindex.c
-
-libzmq_la-inet_network.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-inet_network.lo -MD -MP -MF $(DEPDIR)/libzmq_la-inet_network.Tpo -c -o libzmq_la-inet_network.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-inet_network.Tpo $(DEPDIR)/libzmq_la-inet_network.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c' object='libzmq_la-inet_network.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-inet_network.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/inet_network.c
-
-libzmq_la-md5.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-md5.lo -MD -MP -MF $(DEPDIR)/libzmq_la-md5.Tpo -c -o libzmq_la-md5.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-md5.Tpo $(DEPDIR)/libzmq_la-md5.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c' object='libzmq_la-md5.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-md5.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/md5.c
-
-libzmq_la-gsi.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-gsi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-gsi.Tpo -c -o libzmq_la-gsi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-gsi.Tpo $(DEPDIR)/libzmq_la-gsi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c' object='libzmq_la-gsi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-gsi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/gsi.c
-
-libzmq_la-tsi.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-tsi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tsi.Tpo -c -o libzmq_la-tsi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-tsi.Tpo $(DEPDIR)/libzmq_la-tsi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c' object='libzmq_la-tsi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-tsi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/tsi.c
-
-libzmq_la-signal.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-signal.lo -MD -MP -MF $(DEPDIR)/libzmq_la-signal.Tpo -c -o libzmq_la-signal.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-signal.Tpo $(DEPDIR)/libzmq_la-signal.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c' object='libzmq_la-signal.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-signal.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/signal.c
-
-libzmq_la-txwi.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-txwi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-txwi.Tpo -c -o libzmq_la-txwi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-txwi.Tpo $(DEPDIR)/libzmq_la-txwi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c' object='libzmq_la-txwi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-txwi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/txwi.c
-
-libzmq_la-rxwi.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-rxwi.lo -MD -MP -MF $(DEPDIR)/libzmq_la-rxwi.Tpo -c -o libzmq_la-rxwi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-rxwi.Tpo $(DEPDIR)/libzmq_la-rxwi.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c' object='libzmq_la-rxwi.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-rxwi.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/rxwi.c
-
-libzmq_la-transport.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-transport.lo -MD -MP -MF $(DEPDIR)/libzmq_la-transport.Tpo -c -o libzmq_la-transport.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-transport.Tpo $(DEPDIR)/libzmq_la-transport.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c' object='libzmq_la-transport.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-transport.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/transport.c
-
-libzmq_la-source.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-source.lo -MD -MP -MF $(DEPDIR)/libzmq_la-source.Tpo -c -o libzmq_la-source.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-source.Tpo $(DEPDIR)/libzmq_la-source.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c' object='libzmq_la-source.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-source.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/source.c
-
-libzmq_la-receiver.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-receiver.lo -MD -MP -MF $(DEPDIR)/libzmq_la-receiver.Tpo -c -o libzmq_la-receiver.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-receiver.Tpo $(DEPDIR)/libzmq_la-receiver.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c' object='libzmq_la-receiver.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-receiver.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/receiver.c
-
-libzmq_la-recv.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-recv.lo -MD -MP -MF $(DEPDIR)/libzmq_la-recv.Tpo -c -o libzmq_la-recv.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-recv.Tpo $(DEPDIR)/libzmq_la-recv.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c' object='libzmq_la-recv.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-recv.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/recv.c
-
-libzmq_la-pgm.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-pgm.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm.Tpo -c -o libzmq_la-pgm.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-pgm.Tpo $(DEPDIR)/libzmq_la-pgm.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c' object='libzmq_la-pgm.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-pgm.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/pgm.c
-
-libzmq_la-timer.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-timer.lo -MD -MP -MF $(DEPDIR)/libzmq_la-timer.Tpo -c -o libzmq_la-timer.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-timer.Tpo $(DEPDIR)/libzmq_la-timer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c' object='libzmq_la-timer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-timer.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/timer.c
-
-libzmq_la-net.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-net.lo -MD -MP -MF $(DEPDIR)/libzmq_la-net.Tpo -c -o libzmq_la-net.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-net.Tpo $(DEPDIR)/libzmq_la-net.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c' object='libzmq_la-net.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-net.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/net.c
-
-libzmq_la-rate_control.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-rate_control.lo -MD -MP -MF $(DEPDIR)/libzmq_la-rate_control.Tpo -c -o libzmq_la-rate_control.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-rate_control.Tpo $(DEPDIR)/libzmq_la-rate_control.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c' object='libzmq_la-rate_control.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-rate_control.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/rate_control.c
-
-libzmq_la-async.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-async.lo -MD -MP -MF $(DEPDIR)/libzmq_la-async.Tpo -c -o libzmq_la-async.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-async.Tpo $(DEPDIR)/libzmq_la-async.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c' object='libzmq_la-async.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-async.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/async.c
-
-libzmq_la-checksum.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-checksum.lo -MD -MP -MF $(DEPDIR)/libzmq_la-checksum.Tpo -c -o libzmq_la-checksum.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-checksum.Tpo $(DEPDIR)/libzmq_la-checksum.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c' object='libzmq_la-checksum.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-checksum.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/checksum.c
-
-libzmq_la-reed_solomon.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-reed_solomon.lo -MD -MP -MF $(DEPDIR)/libzmq_la-reed_solomon.Tpo -c -o libzmq_la-reed_solomon.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-reed_solomon.Tpo $(DEPDIR)/libzmq_la-reed_solomon.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c' object='libzmq_la-reed_solomon.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-reed_solomon.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/reed_solomon.c
-
-libzmq_la-galois_tables.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-galois_tables.lo -MD -MP -MF $(DEPDIR)/libzmq_la-galois_tables.Tpo -c -o libzmq_la-galois_tables.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-galois_tables.Tpo $(DEPDIR)/libzmq_la-galois_tables.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c' object='libzmq_la-galois_tables.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-galois_tables.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c
-
-libzmq_la-wsastrerror.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-wsastrerror.lo -MD -MP -MF $(DEPDIR)/libzmq_la-wsastrerror.Tpo -c -o libzmq_la-wsastrerror.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-wsastrerror.Tpo $(DEPDIR)/libzmq_la-wsastrerror.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c' object='libzmq_la-wsastrerror.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-wsastrerror.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/wsastrerror.c
-
-libzmq_la-glib-compat.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-glib-compat.lo -MD -MP -MF $(DEPDIR)/libzmq_la-glib-compat.Tpo -c -o libzmq_la-glib-compat.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-glib-compat.Tpo $(DEPDIR)/libzmq_la-glib-compat.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c' object='libzmq_la-glib-compat.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-glib-compat.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/glib-compat.c
-
-libzmq_la-backtrace.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-backtrace.lo -MD -MP -MF $(DEPDIR)/libzmq_la-backtrace.Tpo -c -o libzmq_la-backtrace.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-backtrace.Tpo $(DEPDIR)/libzmq_la-backtrace.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c' object='libzmq_la-backtrace.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-backtrace.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/backtrace.c
-
-libzmq_la-log.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-log.lo -MD -MP -MF $(DEPDIR)/libzmq_la-log.Tpo -c -o libzmq_la-log.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-log.Tpo $(DEPDIR)/libzmq_la-log.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c' object='libzmq_la-log.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-log.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/log.c
-
-libzmq_la-sockaddr.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-sockaddr.lo -MD -MP -MF $(DEPDIR)/libzmq_la-sockaddr.Tpo -c -o libzmq_la-sockaddr.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-sockaddr.Tpo $(DEPDIR)/libzmq_la-sockaddr.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c' object='libzmq_la-sockaddr.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-sockaddr.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/sockaddr.c
-
-libzmq_la-version.lo: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c
-@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -MT libzmq_la-version.lo -MD -MP -MF $(DEPDIR)/libzmq_la-version.Tpo -c -o libzmq_la-version.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libzmq_la-version.Tpo $(DEPDIR)/libzmq_la-version.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c' object='libzmq_la-version.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CFLAGS) $(CFLAGS) -c -o libzmq_la-version.lo `test -f '../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c' || echo '$(srcdir)/'`../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c
-
-.cpp.o:
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
-
-.cpp.obj:
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-
-.cpp.lo:
-@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
-
-libzmq_la-app_thread.lo: app_thread.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-app_thread.lo -MD -MP -MF $(DEPDIR)/libzmq_la-app_thread.Tpo -c -o libzmq_la-app_thread.lo `test -f 'app_thread.cpp' || echo '$(srcdir)/'`app_thread.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-app_thread.Tpo $(DEPDIR)/libzmq_la-app_thread.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='app_thread.cpp' object='libzmq_la-app_thread.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-app_thread.lo `test -f 'app_thread.cpp' || echo '$(srcdir)/'`app_thread.cpp
-
-libzmq_la-command.lo: command.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-command.lo -MD -MP -MF $(DEPDIR)/libzmq_la-command.Tpo -c -o libzmq_la-command.lo `test -f 'command.cpp' || echo '$(srcdir)/'`command.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-command.Tpo $(DEPDIR)/libzmq_la-command.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='command.cpp' object='libzmq_la-command.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-command.lo `test -f 'command.cpp' || echo '$(srcdir)/'`command.cpp
-
-libzmq_la-ctx.lo: ctx.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-ctx.lo -MD -MP -MF $(DEPDIR)/libzmq_la-ctx.Tpo -c -o libzmq_la-ctx.lo `test -f 'ctx.cpp' || echo '$(srcdir)/'`ctx.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-ctx.Tpo $(DEPDIR)/libzmq_la-ctx.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ctx.cpp' object='libzmq_la-ctx.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-ctx.lo `test -f 'ctx.cpp' || echo '$(srcdir)/'`ctx.cpp
-
-libzmq_la-devpoll.lo: devpoll.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-devpoll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-devpoll.Tpo -c -o libzmq_la-devpoll.lo `test -f 'devpoll.cpp' || echo '$(srcdir)/'`devpoll.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-devpoll.Tpo $(DEPDIR)/libzmq_la-devpoll.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='devpoll.cpp' object='libzmq_la-devpoll.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-devpoll.lo `test -f 'devpoll.cpp' || echo '$(srcdir)/'`devpoll.cpp
-
-libzmq_la-push.lo: push.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-push.lo -MD -MP -MF $(DEPDIR)/libzmq_la-push.Tpo -c -o libzmq_la-push.lo `test -f 'push.cpp' || echo '$(srcdir)/'`push.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-push.Tpo $(DEPDIR)/libzmq_la-push.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='push.cpp' object='libzmq_la-push.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-push.lo `test -f 'push.cpp' || echo '$(srcdir)/'`push.cpp
-
-libzmq_la-epoll.lo: epoll.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-epoll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-epoll.Tpo -c -o libzmq_la-epoll.lo `test -f 'epoll.cpp' || echo '$(srcdir)/'`epoll.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-epoll.Tpo $(DEPDIR)/libzmq_la-epoll.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='epoll.cpp' object='libzmq_la-epoll.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-epoll.lo `test -f 'epoll.cpp' || echo '$(srcdir)/'`epoll.cpp
-
-libzmq_la-err.lo: err.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-err.lo -MD -MP -MF $(DEPDIR)/libzmq_la-err.Tpo -c -o libzmq_la-err.lo `test -f 'err.cpp' || echo '$(srcdir)/'`err.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-err.Tpo $(DEPDIR)/libzmq_la-err.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='err.cpp' object='libzmq_la-err.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-err.lo `test -f 'err.cpp' || echo '$(srcdir)/'`err.cpp
-
-libzmq_la-forwarder.lo: forwarder.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-forwarder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-forwarder.Tpo -c -o libzmq_la-forwarder.lo `test -f 'forwarder.cpp' || echo '$(srcdir)/'`forwarder.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-forwarder.Tpo $(DEPDIR)/libzmq_la-forwarder.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='forwarder.cpp' object='libzmq_la-forwarder.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-forwarder.lo `test -f 'forwarder.cpp' || echo '$(srcdir)/'`forwarder.cpp
-
-libzmq_la-fq.lo: fq.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-fq.lo -MD -MP -MF $(DEPDIR)/libzmq_la-fq.Tpo -c -o libzmq_la-fq.lo `test -f 'fq.cpp' || echo '$(srcdir)/'`fq.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-fq.Tpo $(DEPDIR)/libzmq_la-fq.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='fq.cpp' object='libzmq_la-fq.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-fq.lo `test -f 'fq.cpp' || echo '$(srcdir)/'`fq.cpp
-
-libzmq_la-io_object.lo: io_object.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-io_object.lo -MD -MP -MF $(DEPDIR)/libzmq_la-io_object.Tpo -c -o libzmq_la-io_object.lo `test -f 'io_object.cpp' || echo '$(srcdir)/'`io_object.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-io_object.Tpo $(DEPDIR)/libzmq_la-io_object.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='io_object.cpp' object='libzmq_la-io_object.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-io_object.lo `test -f 'io_object.cpp' || echo '$(srcdir)/'`io_object.cpp
-
-libzmq_la-io_thread.lo: io_thread.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-io_thread.lo -MD -MP -MF $(DEPDIR)/libzmq_la-io_thread.Tpo -c -o libzmq_la-io_thread.lo `test -f 'io_thread.cpp' || echo '$(srcdir)/'`io_thread.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-io_thread.Tpo $(DEPDIR)/libzmq_la-io_thread.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='io_thread.cpp' object='libzmq_la-io_thread.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-io_thread.lo `test -f 'io_thread.cpp' || echo '$(srcdir)/'`io_thread.cpp
-
-libzmq_la-ip.lo: ip.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-ip.lo -MD -MP -MF $(DEPDIR)/libzmq_la-ip.Tpo -c -o libzmq_la-ip.lo `test -f 'ip.cpp' || echo '$(srcdir)/'`ip.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-ip.Tpo $(DEPDIR)/libzmq_la-ip.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='ip.cpp' object='libzmq_la-ip.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-ip.lo `test -f 'ip.cpp' || echo '$(srcdir)/'`ip.cpp
-
-libzmq_la-kqueue.lo: kqueue.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-kqueue.lo -MD -MP -MF $(DEPDIR)/libzmq_la-kqueue.Tpo -c -o libzmq_la-kqueue.lo `test -f 'kqueue.cpp' || echo '$(srcdir)/'`kqueue.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-kqueue.Tpo $(DEPDIR)/libzmq_la-kqueue.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='kqueue.cpp' object='libzmq_la-kqueue.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-kqueue.lo `test -f 'kqueue.cpp' || echo '$(srcdir)/'`kqueue.cpp
-
-libzmq_la-lb.lo: lb.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-lb.lo -MD -MP -MF $(DEPDIR)/libzmq_la-lb.Tpo -c -o libzmq_la-lb.lo `test -f 'lb.cpp' || echo '$(srcdir)/'`lb.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-lb.Tpo $(DEPDIR)/libzmq_la-lb.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='lb.cpp' object='libzmq_la-lb.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-lb.lo `test -f 'lb.cpp' || echo '$(srcdir)/'`lb.cpp
-
-libzmq_la-msg_store.lo: msg_store.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-msg_store.lo -MD -MP -MF $(DEPDIR)/libzmq_la-msg_store.Tpo -c -o libzmq_la-msg_store.lo `test -f 'msg_store.cpp' || echo '$(srcdir)/'`msg_store.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-msg_store.Tpo $(DEPDIR)/libzmq_la-msg_store.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='msg_store.cpp' object='libzmq_la-msg_store.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-msg_store.lo `test -f 'msg_store.cpp' || echo '$(srcdir)/'`msg_store.cpp
-
-libzmq_la-object.lo: object.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-object.lo -MD -MP -MF $(DEPDIR)/libzmq_la-object.Tpo -c -o libzmq_la-object.lo `test -f 'object.cpp' || echo '$(srcdir)/'`object.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-object.Tpo $(DEPDIR)/libzmq_la-object.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='object.cpp' object='libzmq_la-object.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-object.lo `test -f 'object.cpp' || echo '$(srcdir)/'`object.cpp
-
-libzmq_la-options.lo: options.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-options.lo -MD -MP -MF $(DEPDIR)/libzmq_la-options.Tpo -c -o libzmq_la-options.lo `test -f 'options.cpp' || echo '$(srcdir)/'`options.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-options.Tpo $(DEPDIR)/libzmq_la-options.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='options.cpp' object='libzmq_la-options.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-options.lo `test -f 'options.cpp' || echo '$(srcdir)/'`options.cpp
-
-libzmq_la-owned.lo: owned.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-owned.lo -MD -MP -MF $(DEPDIR)/libzmq_la-owned.Tpo -c -o libzmq_la-owned.lo `test -f 'owned.cpp' || echo '$(srcdir)/'`owned.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-owned.Tpo $(DEPDIR)/libzmq_la-owned.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='owned.cpp' object='libzmq_la-owned.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-owned.lo `test -f 'owned.cpp' || echo '$(srcdir)/'`owned.cpp
-
-libzmq_la-pgm_receiver.lo: pgm_receiver.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pgm_receiver.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm_receiver.Tpo -c -o libzmq_la-pgm_receiver.lo `test -f 'pgm_receiver.cpp' || echo '$(srcdir)/'`pgm_receiver.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-pgm_receiver.Tpo $(DEPDIR)/libzmq_la-pgm_receiver.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pgm_receiver.cpp' object='libzmq_la-pgm_receiver.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pgm_receiver.lo `test -f 'pgm_receiver.cpp' || echo '$(srcdir)/'`pgm_receiver.cpp
-
-libzmq_la-pgm_sender.lo: pgm_sender.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pgm_sender.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm_sender.Tpo -c -o libzmq_la-pgm_sender.lo `test -f 'pgm_sender.cpp' || echo '$(srcdir)/'`pgm_sender.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-pgm_sender.Tpo $(DEPDIR)/libzmq_la-pgm_sender.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pgm_sender.cpp' object='libzmq_la-pgm_sender.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pgm_sender.lo `test -f 'pgm_sender.cpp' || echo '$(srcdir)/'`pgm_sender.cpp
-
-libzmq_la-pgm_socket.lo: pgm_socket.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pgm_socket.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pgm_socket.Tpo -c -o libzmq_la-pgm_socket.lo `test -f 'pgm_socket.cpp' || echo '$(srcdir)/'`pgm_socket.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-pgm_socket.Tpo $(DEPDIR)/libzmq_la-pgm_socket.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pgm_socket.cpp' object='libzmq_la-pgm_socket.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pgm_socket.lo `test -f 'pgm_socket.cpp' || echo '$(srcdir)/'`pgm_socket.cpp
-
-libzmq_la-pair.lo: pair.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pair.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pair.Tpo -c -o libzmq_la-pair.lo `test -f 'pair.cpp' || echo '$(srcdir)/'`pair.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-pair.Tpo $(DEPDIR)/libzmq_la-pair.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pair.cpp' object='libzmq_la-pair.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pair.lo `test -f 'pair.cpp' || echo '$(srcdir)/'`pair.cpp
-
-libzmq_la-prefix_tree.lo: prefix_tree.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-prefix_tree.lo -MD -MP -MF $(DEPDIR)/libzmq_la-prefix_tree.Tpo -c -o libzmq_la-prefix_tree.lo `test -f 'prefix_tree.cpp' || echo '$(srcdir)/'`prefix_tree.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-prefix_tree.Tpo $(DEPDIR)/libzmq_la-prefix_tree.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='prefix_tree.cpp' object='libzmq_la-prefix_tree.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-prefix_tree.lo `test -f 'prefix_tree.cpp' || echo '$(srcdir)/'`prefix_tree.cpp
-
-libzmq_la-pipe.lo: pipe.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pipe.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pipe.Tpo -c -o libzmq_la-pipe.lo `test -f 'pipe.cpp' || echo '$(srcdir)/'`pipe.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-pipe.Tpo $(DEPDIR)/libzmq_la-pipe.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pipe.cpp' object='libzmq_la-pipe.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pipe.lo `test -f 'pipe.cpp' || echo '$(srcdir)/'`pipe.cpp
-
-libzmq_la-poll.lo: poll.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-poll.lo -MD -MP -MF $(DEPDIR)/libzmq_la-poll.Tpo -c -o libzmq_la-poll.lo `test -f 'poll.cpp' || echo '$(srcdir)/'`poll.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-poll.Tpo $(DEPDIR)/libzmq_la-poll.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='poll.cpp' object='libzmq_la-poll.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-poll.lo `test -f 'poll.cpp' || echo '$(srcdir)/'`poll.cpp
-
-libzmq_la-pub.lo: pub.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pub.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pub.Tpo -c -o libzmq_la-pub.lo `test -f 'pub.cpp' || echo '$(srcdir)/'`pub.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-pub.Tpo $(DEPDIR)/libzmq_la-pub.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pub.cpp' object='libzmq_la-pub.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pub.lo `test -f 'pub.cpp' || echo '$(srcdir)/'`pub.cpp
-
-libzmq_la-queue.lo: queue.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-queue.lo -MD -MP -MF $(DEPDIR)/libzmq_la-queue.Tpo -c -o libzmq_la-queue.lo `test -f 'queue.cpp' || echo '$(srcdir)/'`queue.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-queue.Tpo $(DEPDIR)/libzmq_la-queue.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='queue.cpp' object='libzmq_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-queue.lo `test -f 'queue.cpp' || echo '$(srcdir)/'`queue.cpp
-
-libzmq_la-rep.lo: rep.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-rep.lo -MD -MP -MF $(DEPDIR)/libzmq_la-rep.Tpo -c -o libzmq_la-rep.lo `test -f 'rep.cpp' || echo '$(srcdir)/'`rep.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-rep.Tpo $(DEPDIR)/libzmq_la-rep.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='rep.cpp' object='libzmq_la-rep.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-rep.lo `test -f 'rep.cpp' || echo '$(srcdir)/'`rep.cpp
-
-libzmq_la-req.lo: req.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-req.lo -MD -MP -MF $(DEPDIR)/libzmq_la-req.Tpo -c -o libzmq_la-req.lo `test -f 'req.cpp' || echo '$(srcdir)/'`req.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-req.Tpo $(DEPDIR)/libzmq_la-req.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='req.cpp' object='libzmq_la-req.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-req.lo `test -f 'req.cpp' || echo '$(srcdir)/'`req.cpp
-
-libzmq_la-select.lo: select.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-select.lo -MD -MP -MF $(DEPDIR)/libzmq_la-select.Tpo -c -o libzmq_la-select.lo `test -f 'select.cpp' || echo '$(srcdir)/'`select.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-select.Tpo $(DEPDIR)/libzmq_la-select.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='select.cpp' object='libzmq_la-select.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-select.lo `test -f 'select.cpp' || echo '$(srcdir)/'`select.cpp
-
-libzmq_la-session.lo: session.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-session.lo -MD -MP -MF $(DEPDIR)/libzmq_la-session.Tpo -c -o libzmq_la-session.lo `test -f 'session.cpp' || echo '$(srcdir)/'`session.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-session.Tpo $(DEPDIR)/libzmq_la-session.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='session.cpp' object='libzmq_la-session.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-session.lo `test -f 'session.cpp' || echo '$(srcdir)/'`session.cpp
-
-libzmq_la-signaler.lo: signaler.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-signaler.lo -MD -MP -MF $(DEPDIR)/libzmq_la-signaler.Tpo -c -o libzmq_la-signaler.lo `test -f 'signaler.cpp' || echo '$(srcdir)/'`signaler.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-signaler.Tpo $(DEPDIR)/libzmq_la-signaler.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='signaler.cpp' object='libzmq_la-signaler.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-signaler.lo `test -f 'signaler.cpp' || echo '$(srcdir)/'`signaler.cpp
-
-libzmq_la-socket_base.lo: socket_base.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-socket_base.lo -MD -MP -MF $(DEPDIR)/libzmq_la-socket_base.Tpo -c -o libzmq_la-socket_base.lo `test -f 'socket_base.cpp' || echo '$(srcdir)/'`socket_base.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-socket_base.Tpo $(DEPDIR)/libzmq_la-socket_base.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='socket_base.cpp' object='libzmq_la-socket_base.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-socket_base.lo `test -f 'socket_base.cpp' || echo '$(srcdir)/'`socket_base.cpp
-
-libzmq_la-streamer.lo: streamer.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-streamer.lo -MD -MP -MF $(DEPDIR)/libzmq_la-streamer.Tpo -c -o libzmq_la-streamer.lo `test -f 'streamer.cpp' || echo '$(srcdir)/'`streamer.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-streamer.Tpo $(DEPDIR)/libzmq_la-streamer.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='streamer.cpp' object='libzmq_la-streamer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-streamer.lo `test -f 'streamer.cpp' || echo '$(srcdir)/'`streamer.cpp
-
-libzmq_la-sub.lo: sub.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-sub.lo -MD -MP -MF $(DEPDIR)/libzmq_la-sub.Tpo -c -o libzmq_la-sub.lo `test -f 'sub.cpp' || echo '$(srcdir)/'`sub.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-sub.Tpo $(DEPDIR)/libzmq_la-sub.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='sub.cpp' object='libzmq_la-sub.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-sub.lo `test -f 'sub.cpp' || echo '$(srcdir)/'`sub.cpp
-
-libzmq_la-tcp_connecter.lo: tcp_connecter.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-tcp_connecter.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tcp_connecter.Tpo -c -o libzmq_la-tcp_connecter.lo `test -f 'tcp_connecter.cpp' || echo '$(srcdir)/'`tcp_connecter.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-tcp_connecter.Tpo $(DEPDIR)/libzmq_la-tcp_connecter.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tcp_connecter.cpp' object='libzmq_la-tcp_connecter.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-tcp_connecter.lo `test -f 'tcp_connecter.cpp' || echo '$(srcdir)/'`tcp_connecter.cpp
-
-libzmq_la-tcp_listener.lo: tcp_listener.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-tcp_listener.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tcp_listener.Tpo -c -o libzmq_la-tcp_listener.lo `test -f 'tcp_listener.cpp' || echo '$(srcdir)/'`tcp_listener.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-tcp_listener.Tpo $(DEPDIR)/libzmq_la-tcp_listener.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tcp_listener.cpp' object='libzmq_la-tcp_listener.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-tcp_listener.lo `test -f 'tcp_listener.cpp' || echo '$(srcdir)/'`tcp_listener.cpp
-
-libzmq_la-tcp_socket.lo: tcp_socket.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-tcp_socket.lo -MD -MP -MF $(DEPDIR)/libzmq_la-tcp_socket.Tpo -c -o libzmq_la-tcp_socket.lo `test -f 'tcp_socket.cpp' || echo '$(srcdir)/'`tcp_socket.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-tcp_socket.Tpo $(DEPDIR)/libzmq_la-tcp_socket.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='tcp_socket.cpp' object='libzmq_la-tcp_socket.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-tcp_socket.lo `test -f 'tcp_socket.cpp' || echo '$(srcdir)/'`tcp_socket.cpp
-
-libzmq_la-thread.lo: thread.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-thread.lo -MD -MP -MF $(DEPDIR)/libzmq_la-thread.Tpo -c -o libzmq_la-thread.lo `test -f 'thread.cpp' || echo '$(srcdir)/'`thread.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-thread.Tpo $(DEPDIR)/libzmq_la-thread.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='thread.cpp' object='libzmq_la-thread.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-thread.lo `test -f 'thread.cpp' || echo '$(srcdir)/'`thread.cpp
-
-libzmq_la-pull.lo: pull.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-pull.lo -MD -MP -MF $(DEPDIR)/libzmq_la-pull.Tpo -c -o libzmq_la-pull.lo `test -f 'pull.cpp' || echo '$(srcdir)/'`pull.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-pull.Tpo $(DEPDIR)/libzmq_la-pull.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='pull.cpp' object='libzmq_la-pull.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-pull.lo `test -f 'pull.cpp' || echo '$(srcdir)/'`pull.cpp
-
-libzmq_la-uuid.lo: uuid.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-uuid.lo -MD -MP -MF $(DEPDIR)/libzmq_la-uuid.Tpo -c -o libzmq_la-uuid.lo `test -f 'uuid.cpp' || echo '$(srcdir)/'`uuid.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-uuid.Tpo $(DEPDIR)/libzmq_la-uuid.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='uuid.cpp' object='libzmq_la-uuid.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-uuid.lo `test -f 'uuid.cpp' || echo '$(srcdir)/'`uuid.cpp
-
-libzmq_la-xrep.lo: xrep.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-xrep.lo -MD -MP -MF $(DEPDIR)/libzmq_la-xrep.Tpo -c -o libzmq_la-xrep.lo `test -f 'xrep.cpp' || echo '$(srcdir)/'`xrep.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-xrep.Tpo $(DEPDIR)/libzmq_la-xrep.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='xrep.cpp' object='libzmq_la-xrep.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-xrep.lo `test -f 'xrep.cpp' || echo '$(srcdir)/'`xrep.cpp
-
-libzmq_la-xreq.lo: xreq.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-xreq.lo -MD -MP -MF $(DEPDIR)/libzmq_la-xreq.Tpo -c -o libzmq_la-xreq.lo `test -f 'xreq.cpp' || echo '$(srcdir)/'`xreq.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-xreq.Tpo $(DEPDIR)/libzmq_la-xreq.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='xreq.cpp' object='libzmq_la-xreq.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-xreq.lo `test -f 'xreq.cpp' || echo '$(srcdir)/'`xreq.cpp
-
-libzmq_la-zmq.lo: zmq.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq.Tpo -c -o libzmq_la-zmq.lo `test -f 'zmq.cpp' || echo '$(srcdir)/'`zmq.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-zmq.Tpo $(DEPDIR)/libzmq_la-zmq.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='zmq.cpp' object='libzmq_la-zmq.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq.lo `test -f 'zmq.cpp' || echo '$(srcdir)/'`zmq.cpp
-
-libzmq_la-zmq_connecter.lo: zmq_connecter.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_connecter.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_connecter.Tpo -c -o libzmq_la-zmq_connecter.lo `test -f 'zmq_connecter.cpp' || echo '$(srcdir)/'`zmq_connecter.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-zmq_connecter.Tpo $(DEPDIR)/libzmq_la-zmq_connecter.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='zmq_connecter.cpp' object='libzmq_la-zmq_connecter.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_connecter.lo `test -f 'zmq_connecter.cpp' || echo '$(srcdir)/'`zmq_connecter.cpp
-
-libzmq_la-zmq_decoder.lo: zmq_decoder.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_decoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_decoder.Tpo -c -o libzmq_la-zmq_decoder.lo `test -f 'zmq_decoder.cpp' || echo '$(srcdir)/'`zmq_decoder.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-zmq_decoder.Tpo $(DEPDIR)/libzmq_la-zmq_decoder.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='zmq_decoder.cpp' object='libzmq_la-zmq_decoder.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_decoder.lo `test -f 'zmq_decoder.cpp' || echo '$(srcdir)/'`zmq_decoder.cpp
-
-libzmq_la-zmq_encoder.lo: zmq_encoder.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_encoder.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_encoder.Tpo -c -o libzmq_la-zmq_encoder.lo `test -f 'zmq_encoder.cpp' || echo '$(srcdir)/'`zmq_encoder.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-zmq_encoder.Tpo $(DEPDIR)/libzmq_la-zmq_encoder.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='zmq_encoder.cpp' object='libzmq_la-zmq_encoder.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_encoder.lo `test -f 'zmq_encoder.cpp' || echo '$(srcdir)/'`zmq_encoder.cpp
-
-libzmq_la-zmq_engine.lo: zmq_engine.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_engine.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_engine.Tpo -c -o libzmq_la-zmq_engine.lo `test -f 'zmq_engine.cpp' || echo '$(srcdir)/'`zmq_engine.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-zmq_engine.Tpo $(DEPDIR)/libzmq_la-zmq_engine.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='zmq_engine.cpp' object='libzmq_la-zmq_engine.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_engine.lo `test -f 'zmq_engine.cpp' || echo '$(srcdir)/'`zmq_engine.cpp
-
-libzmq_la-zmq_init.lo: zmq_init.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_init.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_init.Tpo -c -o libzmq_la-zmq_init.lo `test -f 'zmq_init.cpp' || echo '$(srcdir)/'`zmq_init.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-zmq_init.Tpo $(DEPDIR)/libzmq_la-zmq_init.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='zmq_init.cpp' object='libzmq_la-zmq_init.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_init.lo `test -f 'zmq_init.cpp' || echo '$(srcdir)/'`zmq_init.cpp
-
-libzmq_la-zmq_listener.lo: zmq_listener.cpp
-@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -MT libzmq_la-zmq_listener.lo -MD -MP -MF $(DEPDIR)/libzmq_la-zmq_listener.Tpo -c -o libzmq_la-zmq_listener.lo `test -f 'zmq_listener.cpp' || echo '$(srcdir)/'`zmq_listener.cpp
-@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libzmq_la-zmq_listener.Tpo $(DEPDIR)/libzmq_la-zmq_listener.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='zmq_listener.cpp' object='libzmq_la-zmq_listener.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libzmq_la_CXXFLAGS) $(CXXFLAGS) -c -o libzmq_la-zmq_listener.lo `test -f 'zmq_listener.cpp' || echo '$(srcdir)/'`zmq_listener.cpp
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-pkgconfigDATA: $(pkgconfig_DATA)
- @$(NORMAL_INSTALL)
- test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)"
- @list='$(pkgconfig_DATA)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
- $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \
- done
-
-uninstall-pkgconfigDATA:
- @$(NORMAL_UNINSTALL)
- @list='$(pkgconfig_DATA)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \
- rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \
- done
-install-includeHEADERS: $(include_HEADERS)
- @$(NORMAL_INSTALL)
- test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)"
- @list='$(include_HEADERS)'; for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- f=$(am__strip_dir) \
- echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \
- $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \
- done
-
-uninstall-includeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(include_HEADERS)'; for p in $$list; do \
- f=$(am__strip_dir) \
- echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \
- rm -f "$(DESTDIR)$(includedir)/$$f"; \
- done
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) platform.hpp.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) platform.hpp.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) platform.hpp.in $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- list='$(SOURCES) $(HEADERS) platform.hpp.in $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
- $(MAKE) $(AM_MAKEFLAGS) \
- top_distdir="$(top_distdir)" distdir="$(distdir)" \
- dist-hook
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) platform.hpp
-installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \
- test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-hdr distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am: install-includeHEADERS install-pkgconfigDATA
-
-install-dvi: install-dvi-am
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \
- uninstall-pkgconfigDATA
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libLTLIBRARIES clean-libtool ctags dist-hook distclean \
- distclean-compile distclean-generic distclean-hdr \
- distclean-libtool distclean-tags distdir dvi dvi-am html \
- html-am info info-am install install-am install-data \
- install-data-am install-dvi install-dvi-am install-exec \
- install-exec-am install-html install-html-am \
- install-includeHEADERS install-info install-info-am \
- install-libLTLIBRARIES install-man install-pdf install-pdf-am \
- install-pkgconfigDATA install-ps install-ps-am install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-includeHEADERS \
- uninstall-libLTLIBRARIES uninstall-pkgconfigDATA
-
-
-@BUILD_PGM_TRUE@../foreign/openpgm/@pgm_basename@/openpgm/pgm/version.c: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version_generator.py
-@BUILD_PGM_TRUE@ python ../foreign/openpgm/@pgm_basename@/openpgm/pgm/version_generator.py > $@
-
-@BUILD_PGM_TRUE@../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_tables.c: ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_generator.pl
-@BUILD_PGM_TRUE@ perl ../foreign/openpgm/@pgm_basename@/openpgm/pgm/galois_generator.pl > $@
-
-dist-hook:
- -rm $(distdir)/platform.hpp
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/util/network/zeromq/src/app_thread.cpp b/util/network/zeromq/src/app_thread.cpp
deleted file mode 100644
index ac59464b..00000000
--- a/util/network/zeromq/src/app_thread.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <new>
-#include <algorithm>
-
-#include "../include/zmq.h"
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#if defined _MSC_VER
-#include <intrin.h>
-#endif
-#else
-#include <unistd.h>
-#endif
-
-#include "app_thread.hpp"
-#include "ctx.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-#include "config.hpp"
-#include "socket_base.hpp"
-#include "pair.hpp"
-#include "pub.hpp"
-#include "sub.hpp"
-#include "req.hpp"
-#include "rep.hpp"
-#include "xreq.hpp"
-#include "xrep.hpp"
-#include "pull.hpp"
-#include "push.hpp"
-
-// If the RDTSC is available we use it to prevent excessive
-// polling for commands. The nice thing here is that it will work on any
-// system with x86 architecture and gcc or MSVC compiler.
-#if (defined __GNUC__ && (defined __i386__ || defined __x86_64__)) ||\
- (defined _MSC_VER && (defined _M_IX86 || defined _M_X64))
-#define ZMQ_DELAY_COMMANDS
-#endif
-
-zmq::app_thread_t::app_thread_t (ctx_t *ctx_,
- uint32_t thread_slot_) :
- object_t (ctx_, thread_slot_),
- last_processing_time (0),
- terminated (false)
-{
-}
-
-zmq::app_thread_t::~app_thread_t ()
-{
- zmq_assert (sockets.empty ());
-}
-
-void zmq::app_thread_t::stop ()
-{
- send_stop ();
-}
-
-zmq::signaler_t *zmq::app_thread_t::get_signaler ()
-{
- return &signaler;
-}
-
-bool zmq::app_thread_t::process_commands (bool block_, bool throttle_)
-{
- bool received;
- command_t cmd;
- if (block_) {
- received = signaler.recv (&cmd, true);
- zmq_assert (received);
- }
- else {
-
-#if defined ZMQ_DELAY_COMMANDS
- // Optimised version of command processing - it doesn't have to check
- // for incoming commands each time. It does so only if certain time
- // elapsed since last command processing. Command delay varies
- // depending on CPU speed: It's ~1ms on 3GHz CPU, ~2ms on 1.5GHz CPU
- // etc. The optimisation makes sense only on platforms where getting
- // a timestamp is a very cheap operation (tens of nanoseconds).
- if (throttle_) {
-
- // Get timestamp counter.
-#if defined __GNUC__
- uint32_t low;
- uint32_t high;
- __asm__ volatile ("rdtsc" : "=a" (low), "=d" (high));
- uint64_t current_time = (uint64_t) high << 32 | low;
-#elif defined _MSC_VER
- uint64_t current_time = __rdtsc ();
-#else
-#error
-#endif
-
- // Check whether certain time have elapsed since last command
- // processing.
- if (current_time - last_processing_time <= max_command_delay)
- return !terminated;
- last_processing_time = current_time;
- }
-#endif
-
- // Check whether there are any commands pending for this thread.
- received = signaler.recv (&cmd, false);
- }
-
- // Process all the commands available at the moment.
- while (received) {
- cmd.destination->process_command (cmd);
- received = signaler.recv (&cmd, false);
- }
-
- return !terminated;
-}
-
-zmq::socket_base_t *zmq::app_thread_t::create_socket (int type_)
-{
- socket_base_t *s = NULL;
- switch (type_) {
- case ZMQ_PAIR:
- s = new (std::nothrow) pair_t (this);
- break;
- case ZMQ_PUB:
- s = new (std::nothrow) pub_t (this);
- break;
- case ZMQ_SUB:
- s = new (std::nothrow) sub_t (this);
- break;
- case ZMQ_REQ:
- s = new (std::nothrow) req_t (this);
- break;
- case ZMQ_REP:
- s = new (std::nothrow) rep_t (this);
- break;
- case ZMQ_XREQ:
- s = new (std::nothrow) xreq_t (this);
- break;
- case ZMQ_XREP:
- s = new (std::nothrow) xrep_t (this);
- break;
- case ZMQ_PULL:
- s = new (std::nothrow) pull_t (this);
- break;
- case ZMQ_PUSH:
- s = new (std::nothrow) push_t (this);
- break;
- default:
- if (sockets.empty ())
- get_ctx ()->no_sockets (this);
- errno = EINVAL;
- return NULL;
- }
- zmq_assert (s);
-
- sockets.push_back (s);
-
- return s;
-}
-
-void zmq::app_thread_t::remove_socket (socket_base_t *socket_)
-{
- sockets.erase (socket_);
- if (sockets.empty ())
- get_ctx ()->no_sockets (this);
-}
-
-void zmq::app_thread_t::process_stop ()
-{
- terminated = true;
-}
-
-bool zmq::app_thread_t::is_terminated ()
-{
- return terminated;
-}
-
diff --git a/util/network/zeromq/src/app_thread.hpp b/util/network/zeromq/src/app_thread.hpp
deleted file mode 100644
index f0deaab0..00000000
--- a/util/network/zeromq/src/app_thread.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_APP_THREAD_HPP_INCLUDED__
-#define __ZMQ_APP_THREAD_HPP_INCLUDED__
-
-#include <vector>
-
-#include "stdint.hpp"
-#include "object.hpp"
-#include "yarray.hpp"
-#include "signaler.hpp"
-
-namespace zmq
-{
-
- class app_thread_t : public object_t
- {
- public:
-
- app_thread_t (class ctx_t *ctx_, uint32_t thread_slot_);
-
- ~app_thread_t ();
-
- // Interrupt blocking call if the app thread is stuck in one.
- // This function is is called from a different thread!
- void stop ();
-
- // Returns signaler associated with this application thread.
- signaler_t *get_signaler ();
-
- // Processes commands sent to this thread (if any). If 'block' is
- // set to true, returns only after at least one command was processed.
- // If throttle argument is true, commands are processed at most once
- // in a predefined time period. The function returns false is the
- // associated context was terminated, true otherwise.
- bool process_commands (bool block_, bool throttle_);
-
- // Create a socket of a specified type.
- class socket_base_t *create_socket (int type_);
-
- // Unregister the socket from the app_thread (called by socket itself).
- void remove_socket (class socket_base_t *socket_);
-
- // Returns true is the associated context was already terminated.
- bool is_terminated ();
-
- private:
-
- // Command handlers.
- void process_stop ();
-
- // All the sockets created from this application thread.
- typedef yarray_t <socket_base_t> sockets_t;
- sockets_t sockets;
-
- // App thread's signaler object.
- signaler_t signaler;
-
- // Timestamp of when commands were processed the last time.
- uint64_t last_processing_time;
-
- // If true, 'stop' command was already received.
- bool terminated;
-
- app_thread_t (const app_thread_t&);
- void operator = (const app_thread_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/atomic_counter.hpp b/util/network/zeromq/src/atomic_counter.hpp
deleted file mode 100644
index b4466272..00000000
--- a/util/network/zeromq/src/atomic_counter.hpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ATOMIC_COUNTER_HPP_INCLUDED__
-#define __ZMQ_ATOMIC_COUNTER_HPP_INCLUDED__
-
-#include "stdint.hpp"
-#include "platform.hpp"
-
-#if defined ZMQ_FORCE_MUTEXES
-#define ZMQ_ATOMIC_COUNTER_MUTEX
-#elif (defined __i386__ || defined __x86_64__) && defined __GNUC__
-#define ZMQ_ATOMIC_COUNTER_X86
-#elif defined ZMQ_HAVE_WINDOWS
-#define ZMQ_ATOMIC_COUNTER_WINDOWS
-#elif (defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_NETBSD)
-#define ZMQ_ATOMIC_COUNTER_ATOMIC_H
-#else
-#define ZMQ_ATOMIC_COUNTER_MUTEX
-#endif
-
-#if defined ZMQ_ATOMIC_COUNTER_MUTEX
-#include "mutex.hpp"
-#elif defined ZMQ_ATOMIC_COUNTER_WINDOWS
-#include "windows.hpp"
-#elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
-#include <atomic.h>
-#endif
-
-namespace zmq
-{
-
- // This class represents an integer that can be incremented/decremented
- // in atomic fashion.
-
- class atomic_counter_t
- {
- public:
-
- typedef uint32_t integer_t;
-
- inline atomic_counter_t (integer_t value_ = 0) :
- value (value_)
- {
- }
-
- inline ~atomic_counter_t ()
- {
- }
-
- // Set counter value (not thread-safe).
- inline void set (integer_t value_)
- {
- value = value_;
- }
-
- // Atomic addition. Returns the old value.
- inline integer_t add (integer_t increment_)
- {
- integer_t old_value;
-
-#if defined ZMQ_ATOMIC_COUNTER_WINDOWS
- old_value = InterlockedExchangeAdd ((LONG*) &value, increment_);
-#elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
- integer_t new_value = atomic_add_32_nv (&value, increment_);
- old_value = new_value - increment_;
-#elif defined ZMQ_ATOMIC_COUNTER_X86
- __asm__ volatile (
- "lock; xadd %0, %1 \n\t"
- : "=r" (old_value), "=m" (value)
- : "0" (increment_), "m" (value)
- : "cc", "memory");
-#elif defined ZMQ_ATOMIC_COUNTER_MUTEX
- sync.lock ();
- old_value = value;
- value += increment_;
- sync.unlock ();
-#else
-#error atomic_counter is not implemented for this platform
-#endif
- return old_value;
- }
-
- // Atomic subtraction. Returns false if the counter drops to zero.
- inline bool sub (integer_t decrement)
- {
-#if defined ZMQ_ATOMIC_COUNTER_WINDOWS
- LONG delta = - ((LONG) decrement);
- integer_t old = InterlockedExchangeAdd ((LONG*) &value, delta);
- return old - decrement != 0;
-#elif defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
- int32_t delta = - ((int32_t) decrement);
- integer_t nv = atomic_add_32_nv (&value, delta);
- return nv != 0;
-#elif defined ZMQ_ATOMIC_COUNTER_X86
- integer_t oldval = -decrement;
- volatile integer_t *val = &value;
- __asm__ volatile ("lock; xaddl %0,%1"
- : "=r" (oldval), "=m" (*val)
- : "0" (oldval), "m" (*val)
- : "cc", "memory");
- return oldval != decrement;
-#elif defined ZMQ_ATOMIC_COUNTER_MUTEX
- sync.lock ();
- value -= decrement;
- bool result = value ? true : false;
- sync.unlock ();
- return result;
-#else
-#error atomic_counter is not implemented for this platform
-#endif
- }
-
- inline integer_t get ()
- {
- return value;
- }
-
- private:
-
- volatile integer_t value;
-#if defined ZMQ_ATOMIC_COUNTER_MUTEX
- mutex_t sync;
-#endif
-
- atomic_counter_t (const atomic_counter_t&);
- void operator = (const atomic_counter_t&);
- };
-
-}
-
-// Remove macros local to this file.
-#if defined ZMQ_ATOMIC_COUNTER_WINDOWS
-#undef ZMQ_ATOMIC_COUNTER_WINDOWS
-#endif
-#if defined ZMQ_ATOMIC_COUNTER_ATOMIC_H
-#undef ZMQ_ATOMIC_COUNTER_ATOMIC_H
-#endif
-#if defined ZMQ_ATOMIC_COUNTER_X86
-#undef ZMQ_ATOMIC_COUNTER_X86
-#endif
-#if defined ZMQ_ATOMIC_COUNTER_MUTEX
-#undef ZMQ_ATOMIC_COUNTER_MUTEX
-#endif
-
-#endif
-
diff --git a/util/network/zeromq/src/atomic_ptr.hpp b/util/network/zeromq/src/atomic_ptr.hpp
deleted file mode 100644
index 54db64f5..00000000
--- a/util/network/zeromq/src/atomic_ptr.hpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ATOMIC_PTR_HPP_INCLUDED__
-#define __ZMQ_ATOMIC_PTR_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#if defined ZMQ_FORCE_MUTEXES
-#define ZMQ_ATOMIC_PTR_MUTEX
-#elif (defined __i386__ || defined __x86_64__) && defined __GNUC__
-#define ZMQ_ATOMIC_PTR_X86
-#elif defined ZMQ_HAVE_WINDOWS
-#define ZMQ_ATOMIC_PTR_WINDOWS
-#elif (defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_NETBSD)
-#define ZMQ_ATOMIC_PTR_ATOMIC_H
-#else
-#define ZMQ_ATOMIC_PTR_MUTEX
-#endif
-
-#if defined ZMQ_ATOMIC_PTR_MUTEX
-#include "mutex.hpp"
-#elif defined ZMQ_ATOMIC_PTR_WINDOWS
-#include "windows.hpp"
-#elif defined ZMQ_ATOMIC_PTR_ATOMIC_H
-#include <atomic.h>
-#endif
-
-namespace zmq
-{
-
- // This class encapsulates several atomic operations on pointers.
-
- template <typename T> class atomic_ptr_t
- {
- public:
-
- // Initialise atomic pointer
- inline atomic_ptr_t ()
- {
- ptr = NULL;
- }
-
- // Destroy atomic pointer
- inline ~atomic_ptr_t ()
- {
- }
-
- // Set value of atomic pointer in a non-threadsafe way
- // Use this function only when you are sure that at most one
- // thread is accessing the pointer at the moment.
- inline void set (T *ptr_)
- {
- this->ptr = ptr_;
- }
-
- // Perform atomic 'exchange pointers' operation. Pointer is set
- // to the 'val' value. Old value is returned.
- inline T *xchg (T *val_)
- {
-#if defined ZMQ_ATOMIC_PTR_WINDOWS
- return (T*) InterlockedExchangePointer ((PVOID*) &ptr, val_);
-#elif defined ZMQ_ATOMIC_PTR_ATOMIC_H
- return (T*) atomic_swap_ptr (&ptr, val_);
-#elif defined ZMQ_ATOMIC_PTR_X86
- T *old;
- __asm__ volatile (
- "lock; xchg %0, %2"
- : "=r" (old), "=m" (ptr)
- : "m" (ptr), "0" (val_));
- return old;
-#elif defined ZMQ_ATOMIC_PTR_MUTEX
- sync.lock ();
- T *old = (T*) ptr;
- ptr = val_;
- sync.unlock ();
- return old;
-#else
-#error atomic_ptr is not implemented for this platform
-#endif
- }
-
- // Perform atomic 'compare and swap' operation on the pointer.
- // The pointer is compared to 'cmp' argument and if they are
- // equal, its value is set to 'val'. Old value of the pointer
- // is returned.
- inline T *cas (T *cmp_, T *val_)
- {
-#if defined ZMQ_ATOMIC_PTR_WINDOWS
- return (T*) InterlockedCompareExchangePointer (
- (volatile PVOID*) &ptr, val_, cmp_);
-#elif defined ZMQ_ATOMIC_PTR_ATOMIC_H
- return (T*) atomic_cas_ptr (&ptr, cmp_, val_);
-#elif defined ZMQ_ATOMIC_PTR_X86
- T *old;
- __asm__ volatile (
- "lock; cmpxchg %2, %3"
- : "=a" (old), "=m" (ptr)
- : "r" (val_), "m" (ptr), "0" (cmp_)
- : "cc");
- return old;
-#elif defined ZMQ_ATOMIC_PTR_MUTEX
- sync.lock ();
- T *old = (T*) ptr;
- if (ptr == cmp_)
- ptr = val_;
- sync.unlock ();
- return old;
-#else
-#error atomic_ptr is not implemented for this platform
-#endif
- }
-
- private:
-
- volatile T *ptr;
-#if defined ZMQ_ATOMIC_PTR_MUTEX
- mutex_t sync;
-#endif
-
- atomic_ptr_t (const atomic_ptr_t&);
- void operator = (const atomic_ptr_t&);
- };
-
-}
-
-// Remove macros local to this file.
-#if defined ZMQ_ATOMIC_PTR_WINDOWS
-#undef ZMQ_ATOMIC_PTR_WINDOWS
-#endif
-#if defined ZMQ_ATOMIC_PTR_ATOMIC_H
-#undef ZMQ_ATOMIC_PTR_ATOMIC_H
-#endif
-#if defined ZMQ_ATOMIC_PTR_X86
-#undef ZMQ_ATOMIC_PTR_X86
-#endif
-#if defined ZMQ_ATOMIC_PTR_MUTEX
-#undef ZMQ_ATOMIC_PTR_MUTEX
-#endif
-
-#endif
-
diff --git a/util/network/zeromq/src/blob.hpp b/util/network/zeromq/src/blob.hpp
deleted file mode 100644
index a4fa8cd9..00000000
--- a/util/network/zeromq/src/blob.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_BLOB_HPP_INCLUDED__
-#define __ZMQ_BLOB_HPP_INCLUDED__
-
-#include <string>
-
-namespace zmq
-{
-
- // Object to hold dynamically allocated opaque binary data.
- typedef std::basic_string <unsigned char> blob_t;
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/command.cpp b/util/network/zeromq/src/command.cpp
deleted file mode 100644
index 8bf7ea28..00000000
--- a/util/network/zeromq/src/command.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdlib.h>
-
-#include "command.hpp"
-
-void zmq::deallocate_command (command_t *cmd_)
-{
- switch (cmd_->type) {
- case command_t::attach:
- if (cmd_->args.attach.peer_identity)
- free (cmd_->args.attach.peer_identity);
- break;
- case command_t::bind:
- if (cmd_->args.bind.peer_identity)
- free (cmd_->args.bind.peer_identity);
- break;
- default:
- /* noop */;
- }
-}
diff --git a/util/network/zeromq/src/command.hpp b/util/network/zeromq/src/command.hpp
deleted file mode 100644
index 3d00cd7b..00000000
--- a/util/network/zeromq/src/command.hpp
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_COMMAND_HPP_INCLUDED__
-#define __ZMQ_COMMAND_HPP_INCLUDED__
-
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- // This structure defines the commands that can be sent between threads.
-
- struct command_t
- {
- // Object to process the command.
- class object_t *destination;
-
- enum type_t
- {
- stop,
- plug,
- own,
- attach,
- bind,
- revive,
- reader_info,
- pipe_term,
- pipe_term_ack,
- term_req,
- term,
- term_ack
- } type;
-
- union {
-
- // Sent to I/O thread to let it know that it should
- // terminate itself.
- struct {
- } stop;
-
- // Sent to I/O object to make it register with its I/O thread.
- struct {
- } plug;
-
- // Sent to socket to let it know about the newly created object.
- struct {
- class owned_t *object;
- } own;
-
- // Attach the engine to the session.
- struct {
- struct i_engine *engine;
- unsigned char peer_identity_size;
- unsigned char *peer_identity;
- } attach;
-
- // Sent from session to socket to establish pipe(s) between them.
- // Caller have used inc_seqnum beforehand sending the command.
- struct {
- class reader_t *in_pipe;
- class writer_t *out_pipe;
- unsigned char peer_identity_size;
- unsigned char *peer_identity;
- } bind;
-
- // Sent by pipe writer to inform dormant pipe reader that there
- // are messages in the pipe.
- struct {
- } revive;
-
- // Sent by pipe reader to inform pipe writer
- // about how many messages it has read so far.
- // Used to implement the flow control.
- struct {
- uint64_t msgs_read;
- } reader_info;
-
- // Sent by pipe reader to pipe writer to ask it to terminate
- // its end of the pipe.
- struct {
- } pipe_term;
-
- // Pipe writer acknowledges pipe_term command.
- struct {
- } pipe_term_ack;
-
- // Sent by I/O object ot the socket to request the shutdown of
- // the I/O object.
- struct {
- class owned_t *object;
- } term_req;
-
- // Sent by socket to I/O object to start its shutdown.
- struct {
- } term;
-
- // Sent by I/O object to the socket to acknowledge it has
- // shut down.
- struct {
- } term_ack;
-
- } args;
- };
-
- // Function to deallocate dynamically allocated components of the command.
- void deallocate_command (command_t *cmd_);
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/config.hpp b/util/network/zeromq/src/config.hpp
deleted file mode 100644
index 2c0ac2d0..00000000
--- a/util/network/zeromq/src/config.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_CONFIG_HPP_INCLUDED__
-#define __ZMQ_CONFIG_HPP_INCLUDED__
-
-namespace zmq
-{
-
- // Compile-time settings.
-
- enum
- {
- // Maximal number of OS threads that can own 0MQ sockets
- // at the same time.
- max_app_threads = 512,
-
- // Number of new messages in message pipe needed to trigger new memory
- // allocation. Setting this parameter to 256 decreases the impact of
- // memory allocation by approximately 99.6%
- message_pipe_granularity = 256,
-
- // Number of signals that can be read by the signaler
- // using a single system call.
- signal_buffer_size = 8,
-
- // Determines how often does socket poll for new commands when it
- // still has unprocessed messages to handle. Thus, if it is set to 100,
- // socket will process 100 inbound messages before doing the poll.
- // If there are no unprocessed messages available, poll is done
- // immediately. Decreasing the value trades overall latency for more
- // real-time behaviour (less latency peaks).
- inbound_poll_rate = 100,
-
- // Maximal batching size for engines with receiving functionality.
- // So, if there are 10 messages that fit into the batch size, all of
- // them may be read by a single 'recv' system call, thus avoiding
- // unnecessary network stack traversals.
- in_batch_size = 8192,
-
- // Maximal batching size for engines with sending functionality.
- // So, if there are 10 messages that fit into the batch size, all of
- // them may be written by a single 'send' system call, thus avoiding
- // unnecessary network stack traversals.
- out_batch_size = 8192,
-
- // Maximal delta between high and low watermark.
- max_wm_delta = 1024,
-
- // Maximum number of events the I/O thread can process in one go.
- max_io_events = 256,
-
- // Maximal wait time for a timer (milliseconds).
- max_timer_period = 100,
-
- // Maximal delay to process command in API thread (in CPU ticks).
- // 3,000,000 ticks equals to 1 - 2 milliseconds on current CPUs.
- max_command_delay = 3000000,
-
- // Maximal number of non-accepted connections that can be held by
- // TCP listener object.
- tcp_connection_backlog = 10,
-
- // Maximum transport data unit size for PGM (TPDU).
- pgm_max_tpdu = 1500
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/ctx.cpp b/util/network/zeromq/src/ctx.cpp
deleted file mode 100644
index 397f6920..00000000
--- a/util/network/zeromq/src/ctx.cpp
+++ /dev/null
@@ -1,317 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <new>
-#include <string.h>
-
-#include "../include/zmq.h"
-
-#include "ctx.hpp"
-#include "socket_base.hpp"
-#include "app_thread.hpp"
-#include "io_thread.hpp"
-#include "platform.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-
-#if defined ZMQ_HAVE_WINDOWS
-#include "windows.h"
-#endif
-
-zmq::ctx_t::ctx_t (uint32_t io_threads_) :
- sockets (0),
- terminated (false)
-{
-#ifdef ZMQ_HAVE_WINDOWS
- // Intialise Windows sockets. Note that WSAStartup can be called multiple
- // times given that WSACleanup will be called for each WSAStartup.
- WORD version_requested = MAKEWORD (2, 2);
- WSADATA wsa_data;
- int rc = WSAStartup (version_requested, &wsa_data);
- zmq_assert (rc == 0);
- zmq_assert (LOBYTE (wsa_data.wVersion) == 2 &&
- HIBYTE (wsa_data.wVersion) == 2);
-#endif
-
- // Initialise the array of signalers.
- signalers_count = max_app_threads + io_threads_;
- signalers = (signaler_t**) malloc (sizeof (signaler_t*) * signalers_count);
- zmq_assert (signalers);
- memset (signalers, 0, sizeof (signaler_t*) * signalers_count);
-
- // Create I/O thread objects and launch them.
- for (uint32_t i = 0; i != io_threads_; i++) {
- io_thread_t *io_thread = new (std::nothrow) io_thread_t (this, i);
- zmq_assert (io_thread);
- io_threads.push_back (io_thread);
- signalers [i] = io_thread->get_signaler ();
- io_thread->start ();
- }
-}
-
-int zmq::ctx_t::term ()
-{
- // First send stop command to application threads so that any
- // blocking calls are interrupted.
- for (app_threads_t::size_type i = 0; i != app_threads.size (); i++)
- app_threads [i].app_thread->stop ();
-
- // Then mark context as terminated.
- term_sync.lock ();
- zmq_assert (!terminated);
- terminated = true;
- bool destroy = (sockets == 0);
- term_sync.unlock ();
-
- // If there are no sockets open, destroy the context immediately.
- if (destroy)
- delete this;
-
- return 0;
-}
-
-zmq::ctx_t::~ctx_t ()
-{
- // Ask I/O threads to terminate. If stop signal wasn't sent to I/O
- // thread subsequent invocation of destructor would hang-up.
- for (io_threads_t::size_type i = 0; i != io_threads.size (); i++)
- io_threads [i]->stop ();
-
- // Wait till I/O threads actually terminate.
- for (io_threads_t::size_type i = 0; i != io_threads.size (); i++)
- delete io_threads [i];
-
- // Close all application theads, sockets, io_objects etc.
- for (app_threads_t::size_type i = 0; i != app_threads.size (); i++)
- delete app_threads [i].app_thread;
-
- // Deallocate all the orphaned pipes.
- while (!pipes.empty ())
- delete *pipes.begin ();
-
- // Deallocate the array of pointers to signalers. No special work is
- // needed as signalers themselves were deallocated with their
- // corresponding (app_/io_) thread objects.
- free (signalers);
-
-#ifdef ZMQ_HAVE_WINDOWS
- // On Windows, uninitialise socket layer.
- int rc = WSACleanup ();
- wsa_assert (rc != SOCKET_ERROR);
-#endif
-}
-
-zmq::socket_base_t *zmq::ctx_t::create_socket (int type_)
-{
- app_threads_sync.lock ();
-
- // Find whether the calling thread has app_thread_t object associated
- // already. At the same time find an unused app_thread_t so that it can
- // be used if there's no associated object for the calling thread.
- // Check whether thread ID is already assigned. If so, return it.
- app_threads_t::size_type unused = app_threads.size ();
- app_threads_t::size_type current;
- for (current = 0; current != app_threads.size (); current++) {
- if (app_threads [current].associated &&
- thread_t::equal (thread_t::id (), app_threads [current].tid))
- break;
- if (!app_threads [current].associated)
- unused = current;
- }
-
- // If no app_thread_t is associated with the calling thread,
- // associate it with one of the unused app_thread_t objects.
- if (current == app_threads.size ()) {
-
- // If all the existing app_threads are already used, create one more.
- if (unused == app_threads.size ()) {
-
- // If max_app_threads limit was reached, return error.
- if (app_threads.size () == max_app_threads) {
- app_threads_sync.unlock ();
- errno = EMTHREAD;
- return NULL;
- }
-
- // Create the new application thread proxy object.
- app_thread_info_t info;
- memset (&info, 0, sizeof (info));
- info.associated = false;
- info.app_thread = new (std::nothrow) app_thread_t (this,
- io_threads.size () + app_threads.size ());
- zmq_assert (info.app_thread);
- signalers [io_threads.size () + app_threads.size ()] =
- info.app_thread->get_signaler ();
- app_threads.push_back (info);
- }
-
- // Incidentally, this works both when there is an unused app_thread
- // and when a new one is created.
- current = unused;
-
- // Associate the selected app_thread with the OS thread.
- app_threads [current].associated = true;
- app_threads [current].tid = thread_t::id ();
- }
-
- app_thread_t *thread = app_threads [current].app_thread;
- app_threads_sync.unlock ();
-
- socket_base_t *s = thread->create_socket (type_);
- if (!s)
- return NULL;
-
- term_sync.lock ();
- sockets++;
- term_sync.unlock ();
-
- return s;
-}
-
-void zmq::ctx_t::destroy_socket ()
-{
- // If zmq_term was already called and there are no more sockets,
- // terminate the whole 0MQ infrastructure.
- term_sync.lock ();
- zmq_assert (sockets > 0);
- sockets--;
- bool destroy = (sockets == 0 && terminated);
- term_sync.unlock ();
-
- if (destroy)
- delete this;
-}
-
-void zmq::ctx_t::no_sockets (app_thread_t *thread_)
-{
- app_threads_sync.lock ();
- app_threads_t::size_type i;
- for (i = 0; i != app_threads.size (); i++)
- if (app_threads [i].app_thread == thread_) {
- app_threads [i].associated = false;
- break;
- }
- zmq_assert (i != app_threads.size ());
- app_threads_sync.unlock ();
-}
-
-void zmq::ctx_t::send_command (uint32_t destination_,
- const command_t &command_)
-{
- signalers [destination_]->send (command_);
-}
-
-bool zmq::ctx_t::recv_command (uint32_t thread_slot_,
- command_t *command_, bool block_)
-{
- return signalers [thread_slot_]->recv (command_, block_);
-}
-
-zmq::io_thread_t *zmq::ctx_t::choose_io_thread (uint64_t affinity_)
-{
- // Find the I/O thread with minimum load.
- zmq_assert (io_threads.size () > 0);
- int min_load = -1;
- io_threads_t::size_type result = 0;
- for (io_threads_t::size_type i = 0; i != io_threads.size (); i++) {
- if (!affinity_ || (affinity_ & (uint64_t (1) << i))) {
- int load = io_threads [i]->get_load ();
- if (min_load == -1 || load < min_load) {
- min_load = load;
- result = i;
- }
- }
- }
- zmq_assert (min_load != -1);
- return io_threads [result];
-}
-
-void zmq::ctx_t::register_pipe (class pipe_t *pipe_)
-{
- pipes_sync.lock ();
- bool inserted = pipes.insert (pipe_).second;
- zmq_assert (inserted);
- pipes_sync.unlock ();
-}
-
-void zmq::ctx_t::unregister_pipe (class pipe_t *pipe_)
-{
- pipes_sync.lock ();
- pipes_t::size_type erased = pipes.erase (pipe_);
- zmq_assert (erased == 1);
- pipes_sync.unlock ();
-}
-
-int zmq::ctx_t::register_endpoint (const char *addr_,
- socket_base_t *socket_)
-{
- endpoints_sync.lock ();
-
- bool inserted = endpoints.insert (std::make_pair (std::string (addr_),
- socket_)).second;
- if (!inserted) {
- errno = EADDRINUSE;
- endpoints_sync.unlock ();
- return -1;
- }
-
- endpoints_sync.unlock ();
- return 0;
-}
-
-void zmq::ctx_t::unregister_endpoints (socket_base_t *socket_)
-{
- endpoints_sync.lock ();
-
- endpoints_t::iterator it = endpoints.begin ();
- while (it != endpoints.end ()) {
- if (it->second == socket_) {
- endpoints_t::iterator to_erase = it;
- it++;
- endpoints.erase (to_erase);
- continue;
- }
- it++;
- }
-
- endpoints_sync.unlock ();
-}
-
-zmq::socket_base_t *zmq::ctx_t::find_endpoint (const char *addr_)
-{
- endpoints_sync.lock ();
-
- endpoints_t::iterator it = endpoints.find (addr_);
- if (it == endpoints.end ()) {
- endpoints_sync.unlock ();
- errno = ECONNREFUSED;
- return NULL;
- }
- socket_base_t *endpoint = it->second;
-
- // Increment the command sequence number of the peer so that it won't
- // get deallocated until "bind" command is issued by the caller.
- // The subsequent 'bind' has to be called with inc_seqnum parameter
- // set to false, so that the seqnum isn't incremented twice.
- endpoint->inc_seqnum ();
-
- endpoints_sync.unlock ();
- return endpoint;
-}
-
diff --git a/util/network/zeromq/src/ctx.hpp b/util/network/zeromq/src/ctx.hpp
deleted file mode 100644
index c96a923f..00000000
--- a/util/network/zeromq/src/ctx.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_CTX_HPP_INCLUDED__
-#define __ZMQ_CTX_HPP_INCLUDED__
-
-#include <vector>
-#include <set>
-#include <map>
-#include <string>
-
-#include "signaler.hpp"
-#include "ypipe.hpp"
-#include "config.hpp"
-#include "mutex.hpp"
-#include "stdint.hpp"
-#include "thread.hpp"
-
-namespace zmq
-{
-
- // Context object encapsulates all the global state associated with
- // the library.
-
- class ctx_t
- {
- public:
-
- // Create the context object. The argument specifies the size
- // of I/O thread pool to create.
- ctx_t (uint32_t io_threads_);
-
- // This function is called when user invokes zmq_term. If there are
- // no more sockets open it'll cause all the infrastructure to be shut
- // down. If there are open sockets still, the deallocation happens
- // after the last one is closed.
- int term ();
-
- // Create a socket.
- class socket_base_t *create_socket (int type_);
-
- // Destroy a socket.
- void destroy_socket ();
-
- // Called by app_thread_t when it has no more sockets. The function
- // should disassociate the object from the current OS thread.
- void no_sockets (class app_thread_t *thread_);
-
- // Send command to the destination thread.
- void send_command (uint32_t destination_, const command_t &command_);
-
- // Receive command from another thread.
- bool recv_command (uint32_t thread_slot_, command_t *command_,
- bool block_);
-
- // Returns the I/O thread that is the least busy at the moment.
- // Taskset specifies which I/O threads are eligible (0 = all).
- class io_thread_t *choose_io_thread (uint64_t taskset_);
-
- // All pipes are registered with the context so that even the
- // orphaned pipes can be deallocated on the terminal shutdown.
- void register_pipe (class pipe_t *pipe_);
- void unregister_pipe (class pipe_t *pipe_);
-
- // Management of inproc endpoints.
- int register_endpoint (const char *addr_, class socket_base_t *socket_);
- void unregister_endpoints (class socket_base_t *socket_);
- class socket_base_t *find_endpoint (const char *addr_);
-
- private:
-
- ~ctx_t ();
-
- struct app_thread_info_t
- {
- // If false, 0MQ application thread is free, there's no associated
- // OS thread.
- bool associated;
-
- // ID of the associated OS thread. If 'associated' is false,
- // this field contains bogus data.
- thread_t::id_t tid;
-
- // Pointer to the 0MQ application thread object.
- class app_thread_t *app_thread;
- };
-
- // Application threads.
- typedef std::vector <app_thread_info_t> app_threads_t;
- app_threads_t app_threads;
-
- // Synchronisation of accesses to shared application thread data.
- mutex_t app_threads_sync;
-
- // I/O threads.
- typedef std::vector <class io_thread_t*> io_threads_t;
- io_threads_t io_threads;
-
- // Array of pointers to signalers for both application and I/O threads.
- int signalers_count;
- signaler_t **signalers;
-
- // As pipes may reside in orphaned state in particular moments
- // of the pipe shutdown process, i.e. neither pipe reader nor
- // pipe writer hold reference to the pipe, we have to hold references
- // to all pipes in context so that we can deallocate them
- // during terminal shutdown even though it conincides with the
- // pipe being in the orphaned state.
- typedef std::set <class pipe_t*> pipes_t;
- pipes_t pipes;
-
- // Synchronisation of access to the pipes repository.
- mutex_t pipes_sync;
-
- // Number of sockets alive.
- int sockets;
-
- // If true, zmq_term was already called. When last socket is closed
- // the whole 0MQ infrastructure should be deallocated.
- bool terminated;
-
- // Synchronisation of access to the termination data (socket count
- // and 'terminated' flag).
- mutex_t term_sync;
-
- // List of inproc endpoints within this context.
- typedef std::map <std::string, class socket_base_t*> endpoints_t;
- endpoints_t endpoints;
-
- // Synchronisation of access to the list of inproc endpoints.
- mutex_t endpoints_sync;
-
- ctx_t (const ctx_t&);
- void operator = (const ctx_t&);
- };
-
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/decoder.hpp b/util/network/zeromq/src/decoder.hpp
deleted file mode 100644
index f05f6515..00000000
--- a/util/network/zeromq/src/decoder.hpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_DECODER_HPP_INCLUDED__
-#define __ZMQ_DECODER_HPP_INCLUDED__
-
-#include <stddef.h>
-#include <string.h>
-#include <stdlib.h>
-#include <algorithm>
-
-#include "err.hpp"
-
-namespace zmq
-{
-
- // Helper base class for decoders that know the amount of data to read
- // in advance at any moment. Knowing the amount in advance is a property
- // of the protocol used. Both AMQP and backend protocol are based on
- // size-prefixed paradigm, therefore they are using decoder_t to parse
- // the messages. On the other hand, XML-based transports (like XMPP or
- // SOAP) don't allow for knowing the size of data to read in advance and
- // should use different decoding algorithms.
- //
- // Decoder implements the state machine that parses the incoming buffer.
- // Derived class should implement individual state machine actions.
-
- template <typename T> class decoder_t
- {
- public:
-
- inline decoder_t (size_t bufsize_) :
- read_pos (NULL),
- to_read (0),
- next (NULL),
- bufsize (bufsize_)
- {
- buf = (unsigned char*) malloc (bufsize_);
- zmq_assert (buf);
- }
-
- // The destructor doesn't have to be virtual. It is mad virtual
- // just to keep ICC and code checking tools from complaining.
- inline virtual ~decoder_t ()
- {
- free (buf);
- }
-
- // Returns a buffer to be filled with binary data.
- inline void get_buffer (unsigned char **data_, size_t *size_)
- {
- // If we are expected to read large message, we'll opt for zero-
- // copy, i.e. we'll ask caller to fill the data directly to the
- // message. Note that subsequent read(s) are non-blocking, thus
- // each single read reads at most SO_RCVBUF bytes at once not
- // depending on how large is the chunk returned from here.
- // As a consequence, large messages being received won't block
- // other engines running in the same I/O thread for excessive
- // amounts of time.
- if (to_read >= bufsize) {
- *data_ = read_pos;
- *size_ = to_read;
- return;
- }
-
- *data_ = buf;
- *size_ = bufsize;
- }
-
- // Processes the data in the buffer previously allocated using
- // get_buffer function. size_ argument specifies nemuber of bytes
- // actually filled into the buffer. Function returns number of
- // bytes actually processed.
- inline size_t process_buffer (unsigned char *data_, size_t size_)
- {
- // In case of zero-copy simply adjust the pointers, no copying
- // is required. Also, run the state machine in case all the data
- // were processed.
- if (data_ == read_pos) {
- read_pos += size_;
- to_read -= size_;
-
- while (!to_read)
- if (!(static_cast <T*> (this)->*next) ())
- return size_;
- return size_;
- }
-
- size_t pos = 0;
- while (true) {
-
- // Try to get more space in the message to fill in.
- // If none is available, return.
- while (!to_read)
- if (!(static_cast <T*> (this)->*next) ())
- return pos;
-
- // If there are no more data in the buffer, return.
- if (pos == size_)
- return pos;
-
- // Copy the data from buffer to the message.
- size_t to_copy = std::min (to_read, size_ - pos);
- memcpy (read_pos, data_ + pos, to_copy);
- read_pos += to_copy;
- pos += to_copy;
- to_read -= to_copy;
- }
- }
-
- protected:
-
- // Prototype of state machine action. Action should return false if
- // it is unable to push the data to the system.
- typedef bool (T::*step_t) ();
-
- // This function should be called from derived class to read data
- // from the buffer and schedule next state machine action.
- inline void next_step (void *read_pos_, size_t to_read_,
- step_t next_)
- {
- read_pos = (unsigned char*) read_pos_;
- to_read = to_read_;
- next = next_;
- }
-
- private:
-
- unsigned char *read_pos;
- size_t to_read;
- step_t next;
-
- size_t bufsize;
- unsigned char *buf;
-
- decoder_t (const decoder_t&);
- void operator = (const decoder_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/devpoll.cpp b/util/network/zeromq/src/devpoll.cpp
deleted file mode 100644
index 003f4655..00000000
--- a/util/network/zeromq/src/devpoll.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_HPUX
-
-#include <sys/devpoll.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <limits.h>
-#include <algorithm>
-
-#include "devpoll.hpp"
-#include "err.hpp"
-#include "config.hpp"
-#include "i_poll_events.hpp"
-
-zmq::devpoll_t::devpoll_t () :
- stopping (false)
-{
- // Get limit on open files
- struct rlimit rl;
- int rc = getrlimit (RLIMIT_NOFILE, &rl);
- errno_assert (rc != -1);
- fd_table.resize (rl.rlim_cur);
-
- for (rlim_t i = 0; i < rl.rlim_cur; i ++)
- fd_table [i].valid = false;
-
- devpoll_fd = open ("/dev/poll", O_RDWR);
- errno_assert (devpoll_fd != -1);
-}
-
-zmq::devpoll_t::~devpoll_t ()
-{
- worker.stop ();
-
- // Make sure there are no fds registered on shutdown.
- zmq_assert (load.get () == 0);
-
- close (devpoll_fd);
-}
-
-void zmq::devpoll_t::devpoll_ctl (fd_t fd_, short events_)
-{
- struct pollfd pfd = {fd_, events_, 0};
- ssize_t rc = write (devpoll_fd, &pfd, sizeof pfd);
- zmq_assert (rc == sizeof pfd);
-}
-
-zmq::devpoll_t::handle_t zmq::devpoll_t::add_fd (fd_t fd_,
- i_poll_events *reactor_)
-{
- assert (!fd_table [fd_].valid);
-
- fd_table [fd_].events = 0;
- fd_table [fd_].reactor = reactor_;
- fd_table [fd_].valid = true;
- fd_table [fd_].accepted = false;
-
- devpoll_ctl (fd_, 0);
- pending_list.push_back (fd_);
-
- // Increase the load metric of the thread.
- load.add (1);
-
- return fd_;
-}
-
-void zmq::devpoll_t::rm_fd (handle_t handle_)
-{
- assert (fd_table [handle_].valid);
-
- devpoll_ctl (handle_, POLLREMOVE);
- fd_table [handle_].valid = false;
-
- // Decrease the load metric of the thread.
- load.sub (1);
-}
-
-void zmq::devpoll_t::set_pollin (handle_t handle_)
-{
- devpoll_ctl (handle_, POLLREMOVE);
- fd_table [handle_].events |= POLLIN;
- devpoll_ctl (handle_, fd_table [handle_].events);
-}
-
-void zmq::devpoll_t::reset_pollin (handle_t handle_)
-{
- devpoll_ctl (handle_, POLLREMOVE);
- fd_table [handle_].events &= ~((short) POLLIN);
- devpoll_ctl (handle_, fd_table [handle_].events);
-}
-
-void zmq::devpoll_t::set_pollout (handle_t handle_)
-{
- devpoll_ctl (handle_, POLLREMOVE);
- fd_table [handle_].events |= POLLOUT;
- devpoll_ctl (handle_, fd_table [handle_].events);
-}
-
-void zmq::devpoll_t::reset_pollout (handle_t handle_)
-{
- devpoll_ctl (handle_, POLLREMOVE);
- fd_table [handle_].events &= ~((short) POLLOUT);
- devpoll_ctl (handle_, fd_table [handle_].events);
-}
-
-void zmq::devpoll_t::add_timer (i_poll_events *events_)
-{
- timers.push_back (events_);
-}
-
-void zmq::devpoll_t::cancel_timer (i_poll_events *events_)
-{
- timers_t::iterator it = std::find (timers.begin (), timers.end (), events_);
- if (it != timers.end ())
- timers.erase (it);
-}
-
-int zmq::devpoll_t::get_load ()
-{
- return load.get ();
-}
-
-void zmq::devpoll_t::start ()
-{
- worker.start (worker_routine, this);
-}
-
-void zmq::devpoll_t::stop ()
-{
- stopping = true;
-}
-
-void zmq::devpoll_t::loop ()
-{
- // According to the poll(7d) man page, we can retrieve
- // no more then (OPEN_MAX - 1) events.
- int nfds = std::min ((int) max_io_events, OPEN_MAX - 1);
-
- while (!stopping) {
-
- struct pollfd ev_buf [max_io_events];
- struct dvpoll poll_req;
-
- for (pending_list_t::size_type i = 0; i < pending_list.size (); i ++)
- fd_table [pending_list [i]].accepted = true;
- pending_list.clear ();
-
- poll_req.dp_fds = &ev_buf [0];
- poll_req.dp_nfds = nfds;
- poll_req.dp_timeout = timers.empty () ? -1 : max_timer_period;
-
- // Wait for events.
- int n = ioctl (devpoll_fd, DP_POLL, &poll_req);
- if (n == -1 && errno == EINTR)
- continue;
- errno_assert (n != -1);
-
- // Handle timer.
- if (!n) {
-
- // Use local list of timers as timer handlers may fill new timers
- // into the original array.
- timers_t t;
- std::swap (timers, t);
-
- // Trigger all the timers.
- for (timers_t::iterator it = t.begin (); it != t.end (); it ++)
- (*it)->timer_event ();
-
- continue;
- }
-
- for (int i = 0; i < n; i ++) {
-
- fd_entry_t *fd_ptr = &fd_table [ev_buf [i].fd];
- if (!fd_ptr->valid || !fd_ptr->accepted)
- continue;
- if (ev_buf [i].revents & (POLLERR | POLLHUP))
- fd_ptr->reactor->in_event ();
- if (!fd_ptr->valid || !fd_ptr->accepted)
- continue;
- if (ev_buf [i].revents & POLLOUT)
- fd_ptr->reactor->out_event ();
- if (!fd_ptr->valid || !fd_ptr->accepted)
- continue;
- if (ev_buf [i].revents & POLLIN)
- fd_ptr->reactor->in_event ();
- }
- }
-}
-
-void zmq::devpoll_t::worker_routine (void *arg_)
-{
- ((devpoll_t*) arg_)->loop ();
-}
-
-#endif
diff --git a/util/network/zeromq/src/devpoll.hpp b/util/network/zeromq/src/devpoll.hpp
deleted file mode 100644
index 019d2683..00000000
--- a/util/network/zeromq/src/devpoll.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_DEVPOLL_HPP_INCLUDED__
-#define __ZMQ_DEVPOLL_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_SOLARIS || ZMQ_HAVE_HPUX
-
-#include <vector>
-
-#include "fd.hpp"
-#include "thread.hpp"
-#include "atomic_counter.hpp"
-
-namespace zmq
-{
-
- // Implements socket polling mechanism using the Solaris-specific
- // "/dev/poll" interface.
-
- class devpoll_t
- {
- public:
-
- typedef fd_t handle_t;
-
- devpoll_t ();
- ~devpoll_t ();
-
- // "poller" concept.
- handle_t add_fd (fd_t fd_, struct i_poll_events *events_);
- void rm_fd (handle_t handle_);
- void set_pollin (handle_t handle_);
- void reset_pollin (handle_t handle_);
- void set_pollout (handle_t handle_);
- void reset_pollout (handle_t handle_);
- void add_timer (struct i_poll_events *events_);
- void cancel_timer (struct i_poll_events *events_);
- int get_load ();
- void start ();
- void stop ();
-
- private:
-
- // Main worker thread routine.
- static void worker_routine (void *arg_);
-
- // Main event loop.
- void loop ();
-
- // File descriptor referring to "/dev/poll" pseudo-device.
- fd_t devpoll_fd;
-
- struct fd_entry_t
- {
- short events;
- struct i_poll_events *reactor;
- bool valid;
- bool accepted;
- };
-
- std::vector <fd_entry_t> fd_table;
-
- typedef std::vector <fd_t> pending_list_t;
- pending_list_t pending_list;
-
- // Pollset manipulation function.
- void devpoll_ctl (fd_t fd_, short events_);
-
- // List of all the engines waiting for the timer event.
- typedef std::vector <struct i_poll_events*> timers_t;
- timers_t timers;
-
- // If true, thread is in the process of shutting down.
- bool stopping;
-
- // Handle of the physical thread doing the I/O work.
- thread_t worker;
-
- // Load of the poller. Currently number of file descriptors
- // registered with the poller.
- atomic_counter_t load;
-
- devpoll_t (const devpoll_t&);
- void operator = (const devpoll_t&);
- };
-
-}
-
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/encoder.hpp b/util/network/zeromq/src/encoder.hpp
deleted file mode 100644
index 0d5b6ba3..00000000
--- a/util/network/zeromq/src/encoder.hpp
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ENCODER_HPP_INCLUDED__
-#define __ZMQ_ENCODER_HPP_INCLUDED__
-
-#include "platform.hpp"
-#if defined ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include <stddef.h>
-#include <string.h>
-#include <stdlib.h>
-#include <algorithm>
-
-#include "err.hpp"
-
-namespace zmq
-{
-
- // Helper base class for encoders. It implements the state machine that
- // fills the outgoing buffer. Derived classes should implement individual
- // state machine actions.
-
- template <typename T> class encoder_t
- {
- public:
-
- inline encoder_t (size_t bufsize_) :
- bufsize (bufsize_)
- {
- buf = (unsigned char*) malloc (bufsize_);
- zmq_assert (buf);
- }
-
- // The destructor doesn't have to be virtual. It is mad virtual
- // just to keep ICC and code checking tools from complaining.
- inline virtual ~encoder_t ()
- {
- free (buf);
- }
-
- // The function returns a batch of binary data. The data
- // are filled to a supplied buffer. If no buffer is supplied (data_
- // points to NULL) decoder object will provide buffer of its own.
- // If offset is not NULL, it is filled by offset of the first message
- // in the batch.If there's no beginning of a message in the batch,
- // offset is set to -1.
- inline void get_data (unsigned char **data_, size_t *size_,
- int *offset_ = NULL)
- {
- unsigned char *buffer = !*data_ ? buf : *data_;
- size_t buffersize = !*data_ ? bufsize : *size_;
-
- size_t pos = 0;
- if (offset_)
- *offset_ = -1;
-
- while (true) {
-
- // If there are no more data to return, run the state machine.
- // If there are still no data, return what we already have
- // in the buffer.
- if (!to_write) {
- if (!(static_cast <T*> (this)->*next) ()) {
- *data_ = buffer;
- *size_ = pos;
- return;
- }
-
- // If beginning of the message was processed, adjust the
- // first-message-offset.
- if (beginning) {
- if (offset_ && *offset_ == -1)
- *offset_ = pos;
- beginning = false;
- }
- }
-
- // If there are no data in the buffer yet and we are able to
- // fill whole buffer in a single go, let's use zero-copy.
- // There's no disadvantage to it as we cannot stuck multiple
- // messages into the buffer anyway. Note that subsequent
- // write(s) are non-blocking, thus each single write writes
- // at most SO_SNDBUF bytes at once not depending on how large
- // is the chunk returned from here.
- // As a consequence, large messages being sent won't block
- // other engines running in the same I/O thread for excessive
- // amounts of time.
- if (!pos && !*data_ && to_write >= buffersize) {
- *data_ = write_pos;
- *size_ = to_write;
- write_pos = NULL;
- to_write = 0;
- return;
- }
-
- // Copy data to the buffer. If the buffer is full, return.
- size_t to_copy = std::min (to_write, buffersize - pos);
- memcpy (buffer + pos, write_pos, to_copy);
- pos += to_copy;
- write_pos += to_copy;
- to_write -= to_copy;
- if (pos == buffersize) {
- *data_ = buffer;
- *size_ = pos;
- return;
- }
- }
- }
-
- protected:
-
- // Prototype of state machine action.
- typedef bool (T::*step_t) ();
-
- // This function should be called from derived class to write the data
- // to the buffer and schedule next state machine action. Set beginning
- // to true when you are writing first byte of a message.
- inline void next_step (void *write_pos_, size_t to_write_,
- step_t next_, bool beginning_)
- {
- write_pos = (unsigned char*) write_pos_;
- to_write = to_write_;
- next = next_;
- beginning = beginning_;
- }
-
- private:
-
- unsigned char *write_pos;
- size_t to_write;
- step_t next;
- bool beginning;
-
- size_t bufsize;
- unsigned char *buf;
-
- encoder_t (const encoder_t&);
- void operator = (const encoder_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/epoll.cpp b/util/network/zeromq/src/epoll.cpp
deleted file mode 100644
index e22eb8c9..00000000
--- a/util/network/zeromq/src/epoll.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_LINUX
-
-#include <sys/epoll.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <algorithm>
-#include <new>
-
-#include "epoll.hpp"
-#include "err.hpp"
-#include "config.hpp"
-#include "i_poll_events.hpp"
-
-zmq::epoll_t::epoll_t () :
- stopping (false)
-{
- epoll_fd = epoll_create (1);
- errno_assert (epoll_fd != -1);
-}
-
-zmq::epoll_t::~epoll_t ()
-{
- // Wait till the worker thread exits.
- worker.stop ();
-
- // Make sure there are no fds registered on shutdown.
- zmq_assert (load.get () == 0);
-
- close (epoll_fd);
- for (retired_t::iterator it = retired.begin (); it != retired.end (); it ++)
- delete *it;
-}
-
-zmq::epoll_t::handle_t zmq::epoll_t::add_fd (fd_t fd_, i_poll_events *events_)
-{
- poll_entry_t *pe = new (std::nothrow) poll_entry_t;
- zmq_assert (pe != NULL);
-
- // The memset is not actually needed. It's here to prevent debugging
- // tools to complain about using uninitialised memory.
- memset (pe, 0, sizeof (poll_entry_t));
-
- pe->fd = fd_;
- pe->ev.events = 0;
- pe->ev.data.ptr = pe;
- pe->events = events_;
-
- int rc = epoll_ctl (epoll_fd, EPOLL_CTL_ADD, fd_, &pe->ev);
- errno_assert (rc != -1);
-
- // Increase the load metric of the thread.
- load.add (1);
-
- return pe;
-}
-
-void zmq::epoll_t::rm_fd (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- int rc = epoll_ctl (epoll_fd, EPOLL_CTL_DEL, pe->fd, &pe->ev);
- errno_assert (rc != -1);
- pe->fd = retired_fd;
- retired.push_back (pe);
-
- // Decrease the load metric of the thread.
- load.sub (1);
-}
-
-void zmq::epoll_t::set_pollin (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->ev.events |= EPOLLIN;
- int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
- errno_assert (rc != -1);
-}
-
-void zmq::epoll_t::reset_pollin (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->ev.events &= ~((short) EPOLLIN);
- int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
- errno_assert (rc != -1);
-}
-
-void zmq::epoll_t::set_pollout (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->ev.events |= EPOLLOUT;
- int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
- errno_assert (rc != -1);
-}
-
-void zmq::epoll_t::reset_pollout (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->ev.events &= ~((short) EPOLLOUT);
- int rc = epoll_ctl (epoll_fd, EPOLL_CTL_MOD, pe->fd, &pe->ev);
- errno_assert (rc != -1);
-}
-
-void zmq::epoll_t::add_timer (i_poll_events *events_)
-{
- timers.push_back (events_);
-}
-
-void zmq::epoll_t::cancel_timer (i_poll_events *events_)
-{
- timers_t::iterator it = std::find (timers.begin (), timers.end (), events_);
- if (it == timers.end ())
- return;
- timers.erase (it);
-}
-
-int zmq::epoll_t::get_load ()
-{
- return load.get ();
-}
-
-void zmq::epoll_t::start ()
-{
- worker.start (worker_routine, this);
-}
-
-void zmq::epoll_t::stop ()
-{
- stopping = true;
-}
-
-void zmq::epoll_t::loop ()
-{
- epoll_event ev_buf [max_io_events];
-
- while (!stopping) {
-
- // Wait for events.
- int n;
- while (true) {
- n = epoll_wait (epoll_fd, &ev_buf [0], max_io_events,
- timers.empty () ? -1 : max_timer_period);
- if (!(n == -1 && errno == EINTR)) {
- errno_assert (n != -1);
- break;
- }
- }
-
- // Handle timer.
- if (!n) {
-
- // Use local list of timers as timer handlers may fill new timers
- // into the original array.
- timers_t t;
- std::swap (timers, t);
-
- // Trigger all the timers.
- for (timers_t::iterator it = t.begin (); it != t.end (); it ++)
- (*it)->timer_event ();
-
- continue;
- }
-
- for (int i = 0; i < n; i ++) {
- poll_entry_t *pe = ((poll_entry_t*) ev_buf [i].data.ptr);
-
- if (pe->fd == retired_fd)
- continue;
- if (ev_buf [i].events & (EPOLLERR | EPOLLHUP))
- pe->events->in_event ();
- if (pe->fd == retired_fd)
- continue;
- if (ev_buf [i].events & EPOLLOUT)
- pe->events->out_event ();
- if (pe->fd == retired_fd)
- continue;
- if (ev_buf [i].events & EPOLLIN)
- pe->events->in_event ();
- }
-
- // Destroy retired event sources.
- for (retired_t::iterator it = retired.begin (); it != retired.end ();
- it ++)
- delete *it;
- retired.clear ();
- }
-}
-
-void zmq::epoll_t::worker_routine (void *arg_)
-{
- ((epoll_t*) arg_)->loop ();
-}
-
-#endif
diff --git a/util/network/zeromq/src/epoll.hpp b/util/network/zeromq/src/epoll.hpp
deleted file mode 100644
index 38175cbd..00000000
--- a/util/network/zeromq/src/epoll.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_EPOLL_HPP_INCLUDED__
-#define __ZMQ_EPOLL_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_LINUX
-
-#include <vector>
-#include <sys/epoll.h>
-
-#include "fd.hpp"
-#include "thread.hpp"
-#include "atomic_counter.hpp"
-
-namespace zmq
-{
-
- // This class implements socket polling mechanism using the Linux-specific
- // epoll mechanism.
-
- class epoll_t
- {
- public:
-
- typedef void* handle_t;
-
- epoll_t ();
- ~epoll_t ();
-
- // "poller" concept.
- handle_t add_fd (fd_t fd_, struct i_poll_events *events_);
- void rm_fd (handle_t handle_);
- void set_pollin (handle_t handle_);
- void reset_pollin (handle_t handle_);
- void set_pollout (handle_t handle_);
- void reset_pollout (handle_t handle_);
- void add_timer (struct i_poll_events *events_);
- void cancel_timer (struct i_poll_events *events_);
- int get_load ();
- void start ();
- void stop ();
-
- private:
-
- // Main worker thread routine.
- static void worker_routine (void *arg_);
-
- // Main event loop.
- void loop ();
-
- // Main epoll file descriptor
- fd_t epoll_fd;
-
- struct poll_entry_t
- {
- fd_t fd;
- epoll_event ev;
- struct i_poll_events *events;
- };
-
- // List of retired event sources.
- typedef std::vector <poll_entry_t*> retired_t;
- retired_t retired;
-
- // List of all the engines waiting for the timer event.
- typedef std::vector <struct i_poll_events*> timers_t;
- timers_t timers;
-
- // If true, thread is in the process of shutting down.
- bool stopping;
-
- // Handle of the physical thread doing the I/O work.
- thread_t worker;
-
- // Load of the poller. Currently number of file descriptors
- // registered with the poller.
- atomic_counter_t load;
-
- epoll_t (const epoll_t&);
- void operator = (const epoll_t&);
- };
-
-}
-
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/err.cpp b/util/network/zeromq/src/err.cpp
deleted file mode 100644
index 17a96891..00000000
--- a/util/network/zeromq/src/err.cpp
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "err.hpp"
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-
-const char *zmq::wsa_error()
-{
- int errcode = WSAGetLastError ();
- // TODO: This is not a generic way to handle this...
- if (errcode == WSAEWOULDBLOCK)
- return NULL;
-
- // TODO: It seems that list of Windows socket errors is longer than this.
- // Investigate whether there's a way to convert it into the string
- // automatically (wsaError->HRESULT->string?).
- return
- (errcode == WSABASEERR) ?
- "No Error" :
- (errcode == WSAEINTR) ?
- "Interrupted system call" :
- (errcode == WSAEBADF) ?
- "Bad file number" :
- (errcode == WSAEACCES) ?
- "Permission denied" :
- (errcode == WSAEFAULT) ?
- "Bad address" :
- (errcode == WSAEINVAL) ?
- "Invalid argument" :
- (errcode == WSAEMFILE) ?
- "Too many open files" :
- (errcode == WSAEWOULDBLOCK) ?
- "Operation would block" :
- (errcode == WSAEINPROGRESS) ?
- "Operation now in progress" :
- (errcode == WSAEALREADY) ?
- "Operation already in progress" :
- (errcode == WSAENOTSOCK) ?
- "Socket operation on non-socket" :
- (errcode == WSAEDESTADDRREQ) ?
- "Destination address required" :
- (errcode == WSAEMSGSIZE) ?
- "Message too long" :
- (errcode == WSAEPROTOTYPE) ?
- "Protocol wrong type for socket" :
- (errcode == WSAENOPROTOOPT) ?
- "Bad protocol option" :
- (errcode == WSAEPROTONOSUPPORT) ?
- "Protocol not supported" :
- (errcode == WSAESOCKTNOSUPPORT) ?
- "Socket type not supported" :
- (errcode == WSAEOPNOTSUPP) ?
- "Operation not supported on socket" :
- (errcode == WSAEPFNOSUPPORT) ?
- "Protocol family not supported" :
- (errcode == WSAEAFNOSUPPORT) ?
- "Address family not supported by protocol family" :
- (errcode == WSAEADDRINUSE) ?
- "Address already in use" :
- (errcode == WSAEADDRNOTAVAIL) ?
- "Can't assign requested address" :
- (errcode == WSAENETDOWN) ?
- "Network is down" :
- (errcode == WSAENETUNREACH) ?
- "Network is unreachable" :
- (errcode == WSAENETRESET) ?
- "Net dropped connection or reset" :
- (errcode == WSAECONNABORTED) ?
- "Software caused connection abort" :
- (errcode == WSAECONNRESET) ?
- "Connection reset by peer" :
- (errcode == WSAENOBUFS) ?
- "No buffer space available" :
- (errcode == WSAEISCONN) ?
- "Socket is already connected" :
- (errcode == WSAENOTCONN) ?
- "Socket is not connected" :
- (errcode == WSAESHUTDOWN) ?
- "Can't send after socket shutdown" :
- (errcode == WSAETOOMANYREFS) ?
- "Too many references can't splice" :
- (errcode == WSAETIMEDOUT) ?
- "Connection timed out" :
- (errcode == WSAECONNREFUSED) ?
- "Connection refused" :
- (errcode == WSAELOOP) ?
- "Too many levels of symbolic links" :
- (errcode == WSAENAMETOOLONG) ?
- "File name too long" :
- (errcode == WSAEHOSTDOWN) ?
- "Host is down" :
- (errcode == WSAEHOSTUNREACH) ?
- "No Route to Host" :
- (errcode == WSAENOTEMPTY) ?
- "Directory not empty" :
- (errcode == WSAEPROCLIM) ?
- "Too many processes" :
- (errcode == WSAEUSERS) ?
- "Too many users" :
- (errcode == WSAEDQUOT) ?
- "Disc Quota Exceeded" :
- (errcode == WSAESTALE) ?
- "Stale NFS file handle" :
- (errcode == WSAEREMOTE) ?
- "Too many levels of remote in path" :
- (errcode == WSASYSNOTREADY) ?
- "Network SubSystem is unavailable" :
- (errcode == WSAVERNOTSUPPORTED) ?
- "WINSOCK DLL Version out of range" :
- (errcode == WSANOTINITIALISED) ?
- "Successful WSASTARTUP not yet performed" :
- (errcode == WSAHOST_NOT_FOUND) ?
- "Host not found" :
- (errcode == WSATRY_AGAIN) ?
- "Non-Authoritative Host not found" :
- (errcode == WSANO_RECOVERY) ?
- "Non-Recoverable errors: FORMERR REFUSED NOTIMP" :
- (errcode == WSANO_DATA) ?
- "Valid name no data record of requested" :
- "error not defined";
-}
-void zmq::win_error (char *buffer_, size_t buffer_size_)
-{
- DWORD errcode = GetLastError ();
- DWORD rc = FormatMessageA (FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS, NULL, errcode, MAKELANGID(LANG_NEUTRAL,
- SUBLANG_DEFAULT), buffer_, buffer_size_, NULL );
- zmq_assert (rc);
-}
-
-void zmq::wsa_error_to_errno ()
-{
- int errcode = WSAGetLastError ();
- switch (errcode) {
- case WSAEINPROGRESS:
- errno = EAGAIN;
- return;
- case WSAEBADF:
- errno = EBADF;
- return;
- case WSAEINVAL:
- errno = EINVAL;
- return;
- case WSAEMFILE:
- errno = EMFILE;
- return;
- case WSAEFAULT:
- errno = EFAULT;
- return;
- case WSAEPROTONOSUPPORT:
- errno = EPROTONOSUPPORT;
- return;
- case WSAENOBUFS:
- errno = ENOBUFS;
- return;
- case WSAENETDOWN:
- errno = ENETDOWN;
- return;
- case WSAEADDRINUSE:
- errno = EADDRINUSE;
- return;
- case WSAEADDRNOTAVAIL:
- errno = EADDRNOTAVAIL;
- return;
- default:
- wsa_assert (false);
- }
-}
-
-#endif
diff --git a/util/network/zeromq/src/err.hpp b/util/network/zeromq/src/err.hpp
deleted file mode 100644
index 2b765694..00000000
--- a/util/network/zeromq/src/err.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ERR_HPP_INCLUDED__
-#define __ZMQ_ERR_HPP_INCLUDED__
-
-#include <assert.h>
-#include <errno.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "platform.hpp"
-#include "likely.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#else
-#include <netdb.h>
-#endif
-
-#ifdef ZMQ_HAVE_WINDOWS
-
-namespace zmq
-{
-
- const char *wsa_error ();
- void win_error (char *buffer_, size_t buffer_size_);
- void wsa_error_to_errno ();
-
-}
-
-// Provides convenient way to check WSA-style errors on Windows.
-#define wsa_assert(x) \
- do {\
- if (unlikely (!(x))) {\
- const char *errstr = zmq::wsa_error ();\
- if (errstr != NULL) {\
- fprintf (stderr, "Assertion failed: %s (%s:%d)\n", errstr, \
- __FILE__, __LINE__);\
- abort ();\
- }\
- }\
- } while (false)
-
-// Provides convenient way to check GetLastError-style errors on Windows.
-#define win_assert(x) \
- do {\
- if (unlikely (!(x))) {\
- char errstr [256];\
- zmq::win_error (errstr, 256);\
- fprintf (stderr, "Assertion failed: %s (%s:%d)\n", errstr, \
- __FILE__, __LINE__);\
- abort ();\
- }\
- } while (false)
-
-#endif
-
-// This macro works in exactly the same way as the normal assert. It is used
-// in its stead because standard assert on Win32 in broken - it prints nothing
-// when used within the scope of JNI library.
-#define zmq_assert(x) \
- do {\
- if (unlikely (!(x))) {\
- fprintf (stderr, "Assertion failed: %s (%s:%d)\n", #x, \
- __FILE__, __LINE__);\
- abort ();\
- }\
- } while (false)
-
-// Provides convenient way to check for errno-style errors.
-#define errno_assert(x) \
- do {\
- if (unlikely (!(x))) {\
- perror (NULL);\
- fprintf (stderr, "%s (%s:%d)\n", #x, __FILE__, __LINE__);\
- abort ();\
- }\
- } while (false)
-
-// Provides convenient way to check for POSIX errors.
-#define posix_assert(x) \
- do {\
- if (unlikely (x)) {\
- fprintf (stderr, "%s (%s:%d)\n", strerror (x), __FILE__, __LINE__);\
- abort ();\
- }\
- } while (false)
-
-// Provides convenient way to check for errors from getaddrinfo.
-#define gai_assert(x) \
- do {\
- if (unlikely (x)) {\
- const char *errstr = gai_strerror (x);\
- fprintf (stderr, "%s (%s:%d)\n", errstr, __FILE__, __LINE__);\
- abort ();\
- }\
- } while (false)
-
-#endif
-
-#define zmq_not_implemented() \
- do {\
- fprintf (stderr, "Hic sunt leones (%s:%d)\n", __FILE__, __LINE__);\
- abort ();\
- } while (false)
diff --git a/util/network/zeromq/src/fd.hpp b/util/network/zeromq/src/fd.hpp
deleted file mode 100644
index 6ad8252c..00000000
--- a/util/network/zeromq/src/fd.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_FD_HPP_INCLUDED__
-#define __ZMQ_FD_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-namespace zmq
-{
-#ifdef ZMQ_HAVE_WINDOWS
-#if defined _MSC_VER &&_MSC_VER <= 1400
- typedef UINT_PTR fd_t;
- enum {retired_fd = (fd_t)(~0)};
-#else
- typedef SOCKET fd_t;
- enum {retired_fd = INVALID_SOCKET};
-#endif
-#else
- typedef int fd_t;
- enum {retired_fd = -1};
-#endif
-}
-#endif
diff --git a/util/network/zeromq/src/forwarder.cpp b/util/network/zeromq/src/forwarder.cpp
deleted file mode 100644
index 503868bc..00000000
--- a/util/network/zeromq/src/forwarder.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "forwarder.hpp"
-#include "socket_base.hpp"
-#include "err.hpp"
-
-int zmq::forwarder (socket_base_t *insocket_, socket_base_t *outsocket_)
-{
- zmq_msg_t msg;
- int rc = zmq_msg_init (&msg);
- errno_assert (rc == 0);
-
- while (true) {
- rc = insocket_->recv (&msg, 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- rc = outsocket_->send (&msg, 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
- }
-
- return 0;
-}
diff --git a/util/network/zeromq/src/forwarder.hpp b/util/network/zeromq/src/forwarder.hpp
deleted file mode 100644
index 68827a4a..00000000
--- a/util/network/zeromq/src/forwarder.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_FORWARDER_HPP_INCLUDED__
-#define __ZMQ_FORWARDER_HPP_INCLUDED__
-
-namespace zmq
-{
-
- int forwarder (class socket_base_t *insocket_,
- class socket_base_t *outsocket_);
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/fq.cpp b/util/network/zeromq/src/fq.cpp
deleted file mode 100644
index 90288537..00000000
--- a/util/network/zeromq/src/fq.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "fq.hpp"
-#include "pipe.hpp"
-#include "err.hpp"
-
-zmq::fq_t::fq_t () :
- active (0),
- current (0),
- more (false)
-{
-}
-
-zmq::fq_t::~fq_t ()
-{
- for (pipes_t::size_type i = 0; i != pipes.size (); i++)
- pipes [i]->term ();
-}
-
-void zmq::fq_t::attach (reader_t *pipe_)
-{
- pipes.push_back (pipe_);
- pipes.swap (active, pipes.size () - 1);
- active++;
-}
-
-void zmq::fq_t::detach (reader_t *pipe_)
-{
- zmq_assert (!more || pipes [current] != pipe_);
-
- // Remove the pipe from the list; adjust number of active pipes
- // accordingly.
- if (pipes.index (pipe_) < active) {
- active--;
- if (current == active)
- current = 0;
- }
- pipes.erase (pipe_);
-}
-
-void zmq::fq_t::kill (reader_t *pipe_)
-{
- // Move the pipe to the list of inactive pipes.
- active--;
- if (current == active)
- current = 0;
- pipes.swap (pipes.index (pipe_), active);
-}
-
-void zmq::fq_t::revive (reader_t *pipe_)
-{
- // Move the pipe to the list of active pipes.
- pipes.swap (pipes.index (pipe_), active);
- active++;
-}
-
-int zmq::fq_t::recv (zmq_msg_t *msg_, int flags_)
-{
- // Deallocate old content of the message.
- zmq_msg_close (msg_);
-
- // Round-robin over the pipes to get the next message.
- for (int count = active; count != 0; count--) {
-
- // Try to fetch new message. If we've already read part of the message
- // subsequent part should be immediately available.
- bool fetched = pipes [current]->read (msg_);
- zmq_assert (!(more && !fetched));
-
- // Note that when message is not fetched, current pipe is killed and
- // replaced by another active pipe. Thus we don't have to increase
- // the 'current' pointer.
- if (fetched) {
- more = msg_->flags & ZMQ_MSG_MORE;
- if (!more) {
- current++;
- if (current >= active)
- current = 0;
- }
- return 0;
- }
- }
-
- // No message is available. Initialise the output parameter
- // to be a 0-byte message.
- zmq_msg_init (msg_);
- errno = EAGAIN;
- return -1;
-}
-
-bool zmq::fq_t::has_in ()
-{
- // There are subsequent parts of the partly-read message available.
- if (more)
- return true;
-
- // Note that messing with current doesn't break the fairness of fair
- // queueing algorithm. If there are no messages available current will
- // get back to its original value. Otherwise it'll point to the first
- // pipe holding messages, skipping only pipes with no messages available.
- for (int count = active; count != 0; count--) {
- if (pipes [current]->check_read ())
- return true;
- current++;
- if (current >= active)
- current = 0;
- }
-
- return false;
-}
-
diff --git a/util/network/zeromq/src/fq.hpp b/util/network/zeromq/src/fq.hpp
deleted file mode 100644
index 5c699eed..00000000
--- a/util/network/zeromq/src/fq.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_FQ_HPP_INCLUDED__
-#define __ZMQ_FQ_HPP_INCLUDED__
-
-#include "yarray.hpp"
-
-namespace zmq
-{
-
- // Class manages a set of inbound pipes. On receive it performs fair
- // queueing (RFC970) so that senders gone berserk won't cause denial of
- // service for decent senders.
- class fq_t
- {
- public:
-
- fq_t ();
- ~fq_t ();
-
- void attach (class reader_t *pipe_);
- void detach (class reader_t *pipe_);
- void kill (class reader_t *pipe_);
- void revive (class reader_t *pipe_);
- int recv (zmq_msg_t *msg_, int flags_);
- bool has_in ();
-
- private:
-
- // Inbound pipes.
- typedef yarray_t <class reader_t> pipes_t;
- pipes_t pipes;
-
- // Number of active pipes. All the active pipes are located at the
- // beginning of the pipes array.
- pipes_t::size_type active;
-
- // Index of the next bound pipe to read a message from.
- pipes_t::size_type current;
-
- // If true, part of a multipart message was already received, but
- // there are following parts still waiting in the current pipe.
- bool more;
-
- fq_t (const fq_t&);
- void operator = (const fq_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/i_endpoint.hpp b/util/network/zeromq/src/i_endpoint.hpp
deleted file mode 100644
index 0d14224d..00000000
--- a/util/network/zeromq/src/i_endpoint.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_I_ENDPOINT_HPP_INCLUDED__
-#define __ZMQ_I_ENDPOINT_HPP_INCLUDED__
-
-#include "blob.hpp"
-
-namespace zmq
-{
-
- struct i_endpoint
- {
- virtual ~i_endpoint () {}
-
- virtual void attach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_) = 0;
- virtual void detach_inpipe (class reader_t *pipe_) = 0;
- virtual void detach_outpipe (class writer_t *pipe_) = 0;
- virtual void kill (class reader_t *pipe_) = 0;
- virtual void revive (class reader_t *pipe_) = 0;
- virtual void revive (class writer_t *pipe_) = 0;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/i_engine.hpp b/util/network/zeromq/src/i_engine.hpp
deleted file mode 100644
index ea6b850d..00000000
--- a/util/network/zeromq/src/i_engine.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_I_ENGINE_HPP_INCLUDED__
-#define __ZMQ_I_ENGINE_HPP_INCLUDED__
-
-#include <stddef.h>
-
-namespace zmq
-{
-
- struct i_engine
- {
- virtual ~i_engine () {}
-
- // Plug the engine to the session.
- virtual void plug (struct i_inout *inout_) = 0;
-
- // Unplug the engine from the session.
- virtual void unplug () = 0;
-
- // This method is called by the session to signalise that there
- // are messages to send available.
- virtual void revive () = 0;
-
- // This method is called by the session to signalise that more
- // messages can be written to the pipe.
- virtual void resume_input () = 0;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/i_inout.hpp b/util/network/zeromq/src/i_inout.hpp
deleted file mode 100644
index 21d1838a..00000000
--- a/util/network/zeromq/src/i_inout.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_I_INOUT_HPP_INCLUDED__
-#define __ZMQ_I_INOUT_HPP_INCLUDED__
-
-#include "../include/zmq.h"
-
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- struct i_inout
- {
- virtual ~i_inout () {}
-
- // Engine asks to get a message to send to the network.
- virtual bool read (::zmq_msg_t *msg_) = 0;
-
- // Engine sends the incoming message further on downstream.
- virtual bool write (::zmq_msg_t *msg_) = 0;
-
- // Flush all the previously written messages downstream.
- virtual void flush () = 0;
-
- // Drop all the references to the engine. The parameter is the object
- // to use to reconnect. If reconnection is not required, the argument
- // is set to NULL.
- virtual void detach (class owned_t *reconnecter_) = 0;
-
- // Returns least loaded I/O thread.
- virtual class io_thread_t *get_io_thread () = 0;
-
- // Return pointer to the owning socket.
- virtual class socket_base_t *get_owner () = 0;
-
- // Return ordinal number of the session.
- virtual uint64_t get_ordinal () = 0;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/i_poll_events.hpp b/util/network/zeromq/src/i_poll_events.hpp
deleted file mode 100644
index 6d474b2f..00000000
--- a/util/network/zeromq/src/i_poll_events.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright (c) 2007-2010 iMatix Corporation
-
-This file is part of 0MQ.
-
-0MQ is free software; you can redistribute it and/or modify it under
-the terms of the Lesser GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
-(at your option) any later version.
-
-0MQ is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-Lesser GNU General Public License for more details.
-
-You should have received a copy of the Lesser GNU General Public License
-along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_I_POLL_EVENTS_HPP_INCLUDED__
-#define __ZMQ_I_POLL_EVENTS_HPP_INCLUDED__
-
-namespace zmq
-{
-
- // Virtual interface to be exposed by object that want to be notified
- // about events on file descriptors.
-
- struct i_poll_events
- {
- virtual ~i_poll_events () {}
-
- // Called by I/O thread when file descriptor is ready for reading.
- virtual void in_event () = 0;
-
- // Called by I/O thread when file descriptor is ready for writing.
- virtual void out_event () = 0;
-
- // Called when timer expires.
- virtual void timer_event () = 0;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/io_object.cpp b/util/network/zeromq/src/io_object.cpp
deleted file mode 100644
index 086f1730..00000000
--- a/util/network/zeromq/src/io_object.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "io_object.hpp"
-#include "io_thread.hpp"
-#include "err.hpp"
-
-zmq::io_object_t::io_object_t (io_thread_t *io_thread_)
-{
- // Retrieve the poller from the thread we are running in.
- poller = io_thread_->get_poller ();
-}
-
-zmq::io_object_t::~io_object_t ()
-{
-}
-
-void zmq::io_object_t::set_io_thread (io_thread_t *io_thread_)
-{
- poller = io_thread_->get_poller ();
-}
-
-zmq::io_object_t::handle_t zmq::io_object_t::add_fd (fd_t fd_)
-{
- return poller->add_fd (fd_, this);
-}
-
-void zmq::io_object_t::rm_fd (handle_t handle_)
-{
- poller->rm_fd (handle_);
-}
-
-void zmq::io_object_t::set_pollin (handle_t handle_)
-{
- poller->set_pollin (handle_);
-}
-
-void zmq::io_object_t::reset_pollin (handle_t handle_)
-{
- poller->reset_pollin (handle_);
-}
-
-void zmq::io_object_t::set_pollout (handle_t handle_)
-{
- poller->set_pollout (handle_);
-}
-
-void zmq::io_object_t::reset_pollout (handle_t handle_)
-{
- poller->reset_pollout (handle_);
-}
-
-void zmq::io_object_t::add_timer ()
-{
- poller->add_timer (this);
-}
-
-void zmq::io_object_t::cancel_timer ()
-{
- poller->cancel_timer (this);
-}
-
-void zmq::io_object_t::in_event ()
-{
- zmq_assert (false);
-}
-
-void zmq::io_object_t::out_event ()
-{
- zmq_assert (false);
-}
-
-void zmq::io_object_t::timer_event ()
-{
- zmq_assert (false);
-}
diff --git a/util/network/zeromq/src/io_object.hpp b/util/network/zeromq/src/io_object.hpp
deleted file mode 100644
index 655e7f58..00000000
--- a/util/network/zeromq/src/io_object.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_IO_OBJECT_HPP_INCLUDED__
-#define __ZMQ_IO_OBJECT_HPP_INCLUDED__
-
-#include <stddef.h>
-
-#include "stdint.hpp"
-#include "poller.hpp"
-#include "i_poll_events.hpp"
-
-namespace zmq
-{
-
- // Simple base class for objects that live in I/O threads.
- // It makes communication with the poller object easier and
- // makes defining unneeded event handlers unnecessary.
-
- class io_object_t : public i_poll_events
- {
- public:
-
- io_object_t (class io_thread_t *io_thread_ = NULL);
- ~io_object_t ();
-
- protected:
-
- typedef poller_t::handle_t handle_t;
-
- // Derived class can init/swap the underlying I/O thread.
- // Caution: Remove all the file descriptors from the old I/O thread
- // before swapping to the new one!
- void set_io_thread (class io_thread_t *io_thread_);
-
- // Methods to access underlying poller object.
- handle_t add_fd (fd_t fd_);
- void rm_fd (handle_t handle_);
- void set_pollin (handle_t handle_);
- void reset_pollin (handle_t handle_);
- void set_pollout (handle_t handle_);
- void reset_pollout (handle_t handle_);
- void add_timer ();
- void cancel_timer ();
-
- // i_poll_events interface implementation.
- void in_event ();
- void out_event ();
- void timer_event ();
-
- private:
-
- poller_t *poller;
-
- io_object_t (const io_object_t&);
- void operator = (const io_object_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/io_thread.cpp b/util/network/zeromq/src/io_thread.cpp
deleted file mode 100644
index fac6961d..00000000
--- a/util/network/zeromq/src/io_thread.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <new>
-
-#include "../include/zmq.h"
-
-#include "io_thread.hpp"
-#include "platform.hpp"
-#include "err.hpp"
-#include "ctx.hpp"
-
-zmq::io_thread_t::io_thread_t (ctx_t *ctx_,
- uint32_t thread_slot_) :
- object_t (ctx_, thread_slot_)
-{
- poller = new (std::nothrow) poller_t;
- zmq_assert (poller);
-
- signaler_handle = poller->add_fd (signaler.get_fd (), this);
- poller->set_pollin (signaler_handle);
-}
-
-zmq::io_thread_t::~io_thread_t ()
-{
- delete poller;
-}
-
-void zmq::io_thread_t::start ()
-{
- // Start the underlying I/O thread.
- poller->start ();
-}
-
-void zmq::io_thread_t::stop ()
-{
- send_stop ();
-}
-
-zmq::signaler_t *zmq::io_thread_t::get_signaler ()
-{
- return &signaler;
-}
-
-int zmq::io_thread_t::get_load ()
-{
- return poller->get_load ();
-}
-
-void zmq::io_thread_t::in_event ()
-{
- // TODO: Do we want to limit number of commands I/O thread can
- // process in a single go?
-
- while (true) {
-
- // Get the next command. If there is none, exit.
- command_t cmd;
- if (!signaler.recv (&cmd, false))
- break;
-
- // Process the command.
- cmd.destination->process_command (cmd);
- }
-}
-
-void zmq::io_thread_t::out_event ()
-{
- // We are never polling for POLLOUT here. This function is never called.
- zmq_assert (false);
-}
-
-void zmq::io_thread_t::timer_event ()
-{
- // No timers here. This function is never called.
- zmq_assert (false);
-}
-
-zmq::poller_t *zmq::io_thread_t::get_poller ()
-{
- zmq_assert (poller);
- return poller;
-}
-
-void zmq::io_thread_t::process_stop ()
-{
- poller->rm_fd (signaler_handle);
- poller->stop ();
-}
diff --git a/util/network/zeromq/src/io_thread.hpp b/util/network/zeromq/src/io_thread.hpp
deleted file mode 100644
index 3d832c0e..00000000
--- a/util/network/zeromq/src/io_thread.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_IO_THREAD_HPP_INCLUDED__
-#define __ZMQ_IO_THREAD_HPP_INCLUDED__
-
-#include <vector>
-
-#include "stdint.hpp"
-#include "object.hpp"
-#include "poller.hpp"
-#include "i_poll_events.hpp"
-#include "signaler.hpp"
-
-namespace zmq
-{
-
- // Generic part of the I/O thread. Polling-mechanism-specific features
- // are implemented in separate "polling objects".
-
- class io_thread_t : public object_t, public i_poll_events
- {
- public:
-
- io_thread_t (class ctx_t *ctx_, uint32_t thread_slot_);
-
- // Clean-up. If the thread was started, it's neccessary to call 'stop'
- // before invoking destructor. Otherwise the destructor would hang up.
- ~io_thread_t ();
-
- // Launch the physical thread.
- void start ();
-
- // Ask underlying thread to stop.
- void stop ();
-
- // Returns signaler associated with this I/O thread.
- signaler_t *get_signaler ();
-
- // i_poll_events implementation.
- void in_event ();
- void out_event ();
- void timer_event ();
-
- // Used by io_objects to retrieve the assciated poller object.
- poller_t *get_poller ();
-
- // Command handlers.
- void process_stop ();
-
- // Returns load experienced by the I/O thread.
- int get_load ();
-
- private:
-
- // Poll thread gets notifications about incoming commands using
- // this signaler.
- signaler_t signaler;
-
- // Handle associated with signaler's file descriptor.
- poller_t::handle_t signaler_handle;
-
- // I/O multiplexing is performed using a poller object.
- poller_t *poller;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/ip.cpp b/util/network/zeromq/src/ip.cpp
deleted file mode 100644
index f4910083..00000000
--- a/util/network/zeromq/src/ip.cpp
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdlib.h>
-#include <string>
-
-#include "ip.hpp"
-#include "platform.hpp"
-#include "err.hpp"
-#include "stdint.hpp"
-
-#if defined ZMQ_HAVE_SOLARIS
-
-#include <sys/sockio.h>
-#include <net/if.h>
-#include <unistd.h>
-
-// On Solaris platform, network interface name can be queried by ioctl.
-static int resolve_nic_name (in_addr* addr_, char const *interface_)
-{
- // Create a socket.
- int fd = socket (AF_INET, SOCK_DGRAM, 0);
- zmq_assert (fd != -1);
-
- // Retrieve number of interfaces.
- lifnum ifn;
- ifn.lifn_family = AF_UNSPEC;
- ifn.lifn_flags = 0;
- int rc = ioctl (fd, SIOCGLIFNUM, (char*) &ifn);
- zmq_assert (rc != -1);
-
- // Allocate memory to get interface names.
- size_t ifr_size = sizeof (struct lifreq) * ifn.lifn_count;
- char *ifr = (char*) malloc (ifr_size);
- errno_assert (ifr);
-
- // Retrieve interface names.
- lifconf ifc;
- ifc.lifc_family = AF_UNSPEC;
- ifc.lifc_flags = 0;
- ifc.lifc_len = ifr_size;
- ifc.lifc_buf = ifr;
- rc = ioctl (fd, SIOCGLIFCONF, (char*) &ifc);
- zmq_assert (rc != -1);
-
- // Find the interface with the specified name and AF_INET family.
- bool found = false;
- lifreq *ifrp = ifc.lifc_req;
- for (int n = 0; n < (int) (ifc.lifc_len / sizeof (lifreq));
- n ++, ifrp ++) {
- if (!strcmp (interface_, ifrp->lifr_name)) {
- rc = ioctl (fd, SIOCGLIFADDR, (char*) ifrp);
- zmq_assert (rc != -1);
- if (ifrp->lifr_addr.ss_family == AF_INET) {
- *addr_ = ((sockaddr_in*) &ifrp->lifr_addr)->sin_addr;
- found = true;
- break;
- }
- }
- }
-
- // Clean-up.
- free (ifr);
- close (fd);
-
- if (!found) {
- errno = ENODEV;
- return -1;
- }
-
- return 0;
-}
-
-#elif defined ZMQ_HAVE_AIX || ZMQ_HAVE_HPUX
-
-#include <sys/types.h>
-#include <unistd.h>
-#include <sys/ioctl.h>
-#include <net/if.h>
-
-static int resolve_nic_name (in_addr* addr_, char const *interface_)
-{
- // Create a socket.
- int sd = socket (AF_INET, SOCK_DGRAM, 0);
- zmq_assert (sd != -1);
-
- struct ifreq ifr;
-
- // Copy interface name for ioctl get.
- strncpy (ifr.ifr_name, interface_, sizeof (ifr.ifr_name));
-
- // Fetch interface address.
- int rc = ioctl (sd, SIOCGIFADDR, (caddr_t) &ifr, sizeof (struct ifreq));
-
- // Clean up.
- close (sd);
-
- if (rc == -1) {
- errno = ENODEV;
- return -1;
- }
-
- struct sockaddr *sa = (struct sockaddr *) &ifr.ifr_addr;
- *addr_ = ((sockaddr_in*)sa)->sin_addr;
- return 0;
-}
-
-#elif ((defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_OPENBSD ||\
- defined ZMQ_HAVE_QNXNTO || defined ZMQ_HAVE_NETBSD)\
- && defined ZMQ_HAVE_IFADDRS)
-
-#include <ifaddrs.h>
-
-// On these platforms, network interface name can be queried
-// using getifaddrs function.
-static int resolve_nic_name (in_addr* addr_, char const *interface_)
-{
- // Get the addresses.
- ifaddrs* ifa = NULL;
- int rc = getifaddrs (&ifa);
- zmq_assert (rc == 0);
- zmq_assert (ifa != NULL);
-
- // Find the corresponding network interface.
- bool found = false;
- for (ifaddrs *ifp = ifa; ifp != NULL ;ifp = ifp->ifa_next)
- if (ifp->ifa_addr && ifp->ifa_addr->sa_family == AF_INET
- && !strcmp (interface_, ifp->ifa_name))
- {
- *addr_ = ((sockaddr_in*) ifp->ifa_addr)->sin_addr;
- found = true;
- break;
- }
-
- // Clean-up;
- freeifaddrs (ifa);
-
- if (!found) {
- errno = ENODEV;
- return -1;
- }
-
- return 0;
-}
-
-#else
-
-// On other platforms we assume there are no sane interface names.
-// This is true especially of Windows.
-static int resolve_nic_name (in_addr* addr_, char const *interface_)
-{
- errno = ENODEV;
- return -1;
-}
-
-#endif
-
-int zmq::resolve_ip_interface (sockaddr_storage* addr_, socklen_t *addr_len_,
- char const *interface_)
-{
- // Find the ':' at end that separates NIC name from service.
- const char *delimiter = strrchr (interface_, ':');
- if (!delimiter) {
- errno = EINVAL;
- return -1;
- }
-
- // Separate the name/port.
- std::string iface (interface_, delimiter - interface_);
- std::string service (delimiter + 1);
-
- // Initialize the output parameter.
- memset (addr_, 0, sizeof (*addr_));
-
- // Initialise IPv4-format family/port.
- sockaddr_in ip4_addr;
- memset (&ip4_addr, 0, sizeof (ip4_addr));
- ip4_addr.sin_family = AF_INET;
- ip4_addr.sin_port = htons ((uint16_t) atoi (service.c_str()));
-
- // Initialize temporary output pointers with ip4_addr
- sockaddr *out_addr = (sockaddr *) &ip4_addr;
- size_t out_addrlen = sizeof (ip4_addr);
-
- // 0 is not a valid port.
- if (!ip4_addr.sin_port) {
- errno = EINVAL;
- return -1;
- }
-
- // * resolves to INADDR_ANY.
- if (iface.compare("*") == 0) {
- ip4_addr.sin_addr.s_addr = htonl (INADDR_ANY);
- zmq_assert (out_addrlen <= sizeof (*addr_));
- memcpy (addr_, out_addr, out_addrlen);
- *addr_len_ = out_addrlen;
- return 0;
- }
-
- // Try to resolve the string as a NIC name.
- int rc = resolve_nic_name (&ip4_addr.sin_addr, iface.c_str());
- if (rc != 0 && errno != ENODEV)
- return rc;
- if (rc == 0) {
- zmq_assert (out_addrlen <= sizeof (*addr_));
- memcpy (addr_, out_addr, out_addrlen);
- *addr_len_ = out_addrlen;
- return 0;
- }
-
- // There's no such interface name. Assume literal address.
- addrinfo *res = NULL;
-
- // Set up the query.
- addrinfo req;
- memset (&req, 0, sizeof (req));
-
- // We only support IPv4 addresses for now.
- req.ai_family = AF_INET;
-
- // Arbitrary, not used in the output, but avoids duplicate results.
- req.ai_socktype = SOCK_STREAM;
-
- // Restrict hostname/service to literals to avoid any DNS lookups or
- // service-name irregularity due to indeterminate socktype.
- req.ai_flags = AI_PASSIVE | AI_NUMERICHOST | AI_NUMERICSERV;
-
- // Resolve the literal address. Some of the error info is lost in case
- // of error, however, there's no way to report EAI errors via errno.
- rc = getaddrinfo (iface.c_str(), service.c_str(), &req, &res);
- if (rc) {
- errno = ENODEV;
- return -1;
- }
-
- // Use the first result.
- zmq_assert ((size_t) (res->ai_addrlen) <= sizeof (*addr_));
- memcpy (addr_, res->ai_addr, res->ai_addrlen);
- *addr_len_ = res->ai_addrlen;
-
- // Cleanup getaddrinfo after copying the possibly referenced result.
- if (res)
- freeaddrinfo (res);
-
- return 0;
-}
-
-int zmq::resolve_ip_hostname (sockaddr_storage *addr_, socklen_t *addr_len_,
- const char *hostname_)
-{
- // Find the ':' that separates hostname name from service.
- const char *delimiter = strchr (hostname_, ':');
- if (!delimiter) {
- errno = EINVAL;
- return -1;
- }
-
- // Separate the hostname and service.
- std::string hostname (hostname_, delimiter - hostname_);
- std::string service (delimiter + 1);
-
- // Set up the query.
- addrinfo req;
- memset (&req, 0, sizeof (req));
-
- // We only support IPv4 addresses for now.
- req.ai_family = AF_INET;
-
- // Need to choose one to avoid duplicate results from getaddrinfo() - this
- // doesn't really matter, since it's not included in the addr-output.
- req.ai_socktype = SOCK_STREAM;
-
- // Avoid named services due to unclear socktype.
- req.ai_flags = AI_NUMERICSERV;
-
- // Resolve host name. Some of the error info is lost in case of error,
- // however, there's no way to report EAI errors via errno.
- addrinfo *res;
- int rc = getaddrinfo (hostname.c_str (), service.c_str (), &req, &res);
- if (rc) {
- errno = EINVAL;
- return -1;
- }
-
- // Copy first result to output addr with hostname and service.
- zmq_assert ((size_t) (res->ai_addrlen) <= sizeof (*addr_));
- memcpy (addr_, res->ai_addr, res->ai_addrlen);
- *addr_len_ = res->ai_addrlen;
-
- freeaddrinfo (res);
-
- return 0;
-}
-
-#if !defined ZMQ_HAVE_WINDOWS && !defined ZMQ_HAVE_OPENVMS
-
-int zmq::resolve_local_path (sockaddr_storage *addr_, socklen_t *addr_len_,
- const char *path_)
-{
- sockaddr_un *un = (sockaddr_un*) addr_;
- if (strlen (path_) >= sizeof (un->sun_path))
- {
- errno = ENAMETOOLONG;
- return -1;
- }
- strcpy (un->sun_path, path_);
- un->sun_family = AF_UNIX;
- *addr_len_ = sizeof (sockaddr_un);
- return 0;
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/ip.hpp b/util/network/zeromq/src/ip.hpp
deleted file mode 100644
index d963df27..00000000
--- a/util/network/zeromq/src/ip.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_IP_HPP_INCLUDED__
-#define __ZMQ_IP_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#else
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#endif
-
-#if !defined ZMQ_HAVE_WINDOWS && !defined ZMQ_HAVE_OPENVMS
-#include <sys/un.h>
-#endif
-
-// Some platforms (notably Darwin/OSX and NetBSD) do not define all AI_
-// flags for getaddrinfo(). This can be worked around safely by defining
-// these to 0.
-#ifndef AI_ADDRCONFIG
-#define AI_ADDRCONFIG 0
-#endif
-#ifndef AI_NUMERICSERV
-#define AI_NUMERICSERV 0
-#endif
-
-namespace zmq
-{
-
- // Resolves network interface name in <nic-name>:<port> format. Symbol "*"
- // (asterisk) resolves to INADDR_ANY (all network interfaces).
- int resolve_ip_interface (sockaddr_storage *addr_, socklen_t *addr_len_,
- char const *interface_);
-
- // This function resolves a string in <hostname>:<port-number> format.
- // Hostname can be either the name of the host or its IP address.
- int resolve_ip_hostname (sockaddr_storage *addr_, socklen_t *addr_len_,
- const char *hostname_);
-
-#if !defined ZMQ_HAVE_WINDOWS && !defined ZMQ_HAVE_OPENVMS
- // This function sets up address for UNIX domain transport.
- int resolve_local_path (sockaddr_storage *addr_, socklen_t *addr_len_,
- const char* pathname_);
-#endif
-}
-
-#endif
diff --git a/util/network/zeromq/src/kqueue.cpp b/util/network/zeromq/src/kqueue.cpp
deleted file mode 100644
index e1fe2fa3..00000000
--- a/util/network/zeromq/src/kqueue.cpp
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_OPENBSD ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_NETBSD
-
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/event.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <algorithm>
-#include <new>
-
-#include "kqueue.hpp"
-#include "err.hpp"
-#include "config.hpp"
-#include "i_poll_events.hpp"
-
-// NetBSD defines (struct kevent).udata as intptr_t, everyone else
-// as void *.
-#if defined ZMQ_HAVE_NETBSD
-#define kevent_udata_t intptr_t
-#else
-#define kevent_udata_t void *
-#endif
-
-zmq::kqueue_t::kqueue_t () :
- stopping (false)
-{
- // Create event queue
- kqueue_fd = kqueue ();
- errno_assert (kqueue_fd != -1);
-}
-
-zmq::kqueue_t::~kqueue_t ()
-{
- worker.stop ();
-
- // Make sure there are no fds registered on shutdown.
- zmq_assert (load.get () == 0);
-
- close (kqueue_fd);
-}
-
-void zmq::kqueue_t::kevent_add (fd_t fd_, short filter_, void *udata_)
-{
- struct kevent ev;
-
- EV_SET (&ev, fd_, filter_, EV_ADD, 0, 0, (kevent_udata_t)udata_);
- int rc = kevent (kqueue_fd, &ev, 1, NULL, 0, NULL);
- errno_assert (rc != -1);
-}
-
-void zmq::kqueue_t::kevent_delete (fd_t fd_, short filter_)
-{
- struct kevent ev;
-
- EV_SET (&ev, fd_, filter_, EV_DELETE, 0, 0, (kevent_udata_t)NULL);
- int rc = kevent (kqueue_fd, &ev, 1, NULL, 0, NULL);
- errno_assert (rc != -1);
-}
-
-zmq::kqueue_t::handle_t zmq::kqueue_t::add_fd (fd_t fd_,
- i_poll_events *reactor_)
-{
- poll_entry_t *pe = new (std::nothrow) poll_entry_t;
- zmq_assert (pe != NULL);
-
- pe->fd = fd_;
- pe->flag_pollin = 0;
- pe->flag_pollout = 0;
- pe->reactor = reactor_;
-
- return pe;
-}
-
-void zmq::kqueue_t::rm_fd (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- if (pe->flag_pollin)
- kevent_delete (pe->fd, EVFILT_READ);
- if (pe->flag_pollout)
- kevent_delete (pe->fd, EVFILT_WRITE);
- pe->fd = retired_fd;
- retired.push_back (pe);
-}
-
-void zmq::kqueue_t::set_pollin (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->flag_pollin = true;
- kevent_add (pe->fd, EVFILT_READ, pe);
-}
-
-void zmq::kqueue_t::reset_pollin (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->flag_pollin = false;
- kevent_delete (pe->fd, EVFILT_READ);
-}
-
-void zmq::kqueue_t::set_pollout (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->flag_pollout = true;
- kevent_add (pe->fd, EVFILT_WRITE, pe);
-}
-
-void zmq::kqueue_t::reset_pollout (handle_t handle_)
-{
- poll_entry_t *pe = (poll_entry_t*) handle_;
- pe->flag_pollout = false;
- kevent_delete (pe->fd, EVFILT_WRITE);
-}
-
-void zmq::kqueue_t::add_timer (i_poll_events *events_)
-{
- timers.push_back (events_);
-}
-
-void zmq::kqueue_t::cancel_timer (i_poll_events *events_)
-{
- timers_t::iterator it = std::find (timers.begin (), timers.end (), events_);
- if (it != timers.end ())
- timers.erase (it);
-}
-
-int zmq::kqueue_t::get_load ()
-{
- return load.get ();
-}
-
-void zmq::kqueue_t::start ()
-{
- worker.start (worker_routine, this);
-}
-
-void zmq::kqueue_t::stop ()
-{
- stopping = true;
-}
-
-void zmq::kqueue_t::loop ()
-{
- while (!stopping) {
-
- struct kevent ev_buf [max_io_events];
-
- // Compute time interval to wait.
- timespec timeout = {max_timer_period / 1000,
- (max_timer_period % 1000) * 1000000};
-
- // Wait for events.
- int n = kevent (kqueue_fd, NULL, 0,
- &ev_buf [0], max_io_events, timers.empty () ? NULL : &timeout);
- if (n == -1 && errno == EINTR)
- continue;
- errno_assert (n != -1);
-
- // Handle timer.
- if (!n) {
-
- // Use local list of timers as timer handlers may fill new timers
- // into the original array.
- timers_t t;
- std::swap (timers, t);
-
- // Trigger all the timers.
- for (timers_t::iterator it = t.begin (); it != t.end (); it ++)
- (*it)->timer_event ();
-
- continue;
- }
-
- for (int i = 0; i < n; i ++) {
- poll_entry_t *pe = (poll_entry_t*) ev_buf [i].udata;
-
- if (pe->fd == retired_fd)
- continue;
- if (ev_buf [i].flags & EV_EOF)
- pe->reactor->in_event ();
- if (pe->fd == retired_fd)
- continue;
- if (ev_buf [i].filter == EVFILT_WRITE)
- pe->reactor->out_event ();
- if (pe->fd == retired_fd)
- continue;
- if (ev_buf [i].filter == EVFILT_READ)
- pe->reactor->in_event ();
- }
-
- // Destroy retired event sources.
- for (retired_t::iterator it = retired.begin (); it != retired.end ();
- it ++)
- delete *it;
- retired.clear ();
- }
-}
-
-void zmq::kqueue_t::worker_routine (void *arg_)
-{
- ((kqueue_t*) arg_)->loop ();
-}
-
-// Don't pollute namespace with defines local to this file
-#undef kevent_udata_t
-#endif
diff --git a/util/network/zeromq/src/kqueue.hpp b/util/network/zeromq/src/kqueue.hpp
deleted file mode 100644
index ac28a7d3..00000000
--- a/util/network/zeromq/src/kqueue.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_KQUEUE_HPP_INCLUDED__
-#define __ZMQ_KQUEUE_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_OPENBSD ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_NETBSD
-
-#include <vector>
-
-#include "fd.hpp"
-#include "thread.hpp"
-#include "atomic_counter.hpp"
-
-namespace zmq
-{
-
- // Implements socket polling mechanism using the BSD-specific
- // kqueue interface.
-
- class kqueue_t
- {
- public:
-
- typedef void* handle_t;
-
- kqueue_t ();
- ~kqueue_t ();
-
- // "poller" concept.
- handle_t add_fd (fd_t fd_, struct i_poll_events *events_);
- void rm_fd (handle_t handle_);
- void set_pollin (handle_t handle_);
- void reset_pollin (handle_t handle_);
- void set_pollout (handle_t handle_);
- void reset_pollout (handle_t handle_);
- void add_timer (struct i_poll_events *events_);
- void cancel_timer (struct i_poll_events *events_);
- int get_load ();
- void start ();
- void stop ();
-
- private:
-
- // Main worker thread routine.
- static void worker_routine (void *arg_);
-
- // Main event loop.
- void loop ();
-
- // File descriptor referring to the kernel event queue.
- fd_t kqueue_fd;
-
- // Adds the event to the kqueue.
- void kevent_add (fd_t fd_, short filter_, void *udata_);
-
- // Deletes the event from the kqueue.
- void kevent_delete (fd_t fd_, short filter_);
-
- struct poll_entry_t
- {
- fd_t fd;
- bool flag_pollin;
- bool flag_pollout;
- i_poll_events *reactor;
- };
-
- // List of retired event sources.
- typedef std::vector <poll_entry_t*> retired_t;
- retired_t retired;
-
- // List of all the engines waiting for the timer event.
- typedef std::vector <struct i_poll_events*> timers_t;
- timers_t timers;
-
- // If true, thread is in the process of shutting down.
- bool stopping;
-
- // Handle of the physical thread doing the I/O work.
- thread_t worker;
-
- // Load of the poller. Currently number of file descriptors
- // registered with the poller.
- atomic_counter_t load;
-
- kqueue_t (const kqueue_t&);
- void operator = (const kqueue_t&);
- };
-
-}
-
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/lb.cpp b/util/network/zeromq/src/lb.cpp
deleted file mode 100644
index ca93ba2a..00000000
--- a/util/network/zeromq/src/lb.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "lb.hpp"
-#include "pipe.hpp"
-#include "err.hpp"
-
-zmq::lb_t::lb_t () :
- active (0),
- current (0),
- more (false)
-{
-}
-
-zmq::lb_t::~lb_t ()
-{
- for (pipes_t::size_type i = 0; i != pipes.size (); i++)
- pipes [i]->term ();
-}
-
-void zmq::lb_t::attach (writer_t *pipe_)
-{
- pipes.push_back (pipe_);
- pipes.swap (active, pipes.size () - 1);
- active++;
-}
-
-void zmq::lb_t::detach (writer_t *pipe_)
-{
- zmq_assert (!more || pipes [current] != pipe_);
-
- // Remove the pipe from the list; adjust number of active pipes
- // accordingly.
- if (pipes.index (pipe_) < active) {
- active--;
- if (current == active)
- current = 0;
- }
- pipes.erase (pipe_);
-}
-
-void zmq::lb_t::revive (writer_t *pipe_)
-{
- // Move the pipe to the list of active pipes.
- pipes.swap (pipes.index (pipe_), active);
- active++;
-}
-
-int zmq::lb_t::send (zmq_msg_t *msg_, int flags_)
-{
- while (active > 0) {
- if (pipes [current]->write (msg_)) {
- more = msg_->flags & ZMQ_MSG_MORE;
- break;
- }
-
- zmq_assert (!more);
- active--;
- if (current < active)
- pipes.swap (current, active);
- else
- current = 0;
- }
-
- // If there are no pipes we cannot send the message.
- if (active == 0) {
- errno = EAGAIN;
- return -1;
- }
-
- // If it's final part of the message we can fluch it downstream and
- // continue round-robinning (load balance).
- if (!more) {
- pipes [current]->flush ();
- current = (current + 1) % active;
- }
-
- // Detach the message from the data buffer.
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
-
- return 0;
-}
-
-bool zmq::lb_t::has_out ()
-{
- // If one part of the message was already written we can definitely
- // write the rest of the message.
- if (more)
- return true;
-
- while (active > 0) {
- if (pipes [current]->check_write ())
- return true;
-
- active--;
- if (current < active)
- pipes.swap (current, active);
- else
- current = 0;
- }
-
- return false;
-}
-
diff --git a/util/network/zeromq/src/lb.hpp b/util/network/zeromq/src/lb.hpp
deleted file mode 100644
index 526a727d..00000000
--- a/util/network/zeromq/src/lb.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_LB_HPP_INCLUDED__
-#define __ZMQ_LB_HPP_INCLUDED__
-
-#include "yarray.hpp"
-
-namespace zmq
-{
-
- // Class manages a set of outbound pipes. On send it load balances
- // messages fairly among the pipes.
- class lb_t
- {
- public:
-
- lb_t ();
- ~lb_t ();
-
- void attach (class writer_t *pipe_);
- void detach (class writer_t *pipe_);
- void revive (class writer_t *pipe_);
- int send (zmq_msg_t *msg_, int flags_);
- bool has_out ();
-
- private:
-
- // List of outbound pipes.
- typedef yarray_t <class writer_t> pipes_t;
- pipes_t pipes;
-
- // Number of active pipes. All the active pipes are located at the
- // beginning of the pipes array.
- pipes_t::size_type active;
-
- // Points to the last pipe that the most recent message was sent to.
- pipes_t::size_type current;
-
- // True if last we are in the middle of a multipart message.
- bool more;
-
- lb_t (const lb_t&);
- void operator = (const lb_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/libzmq.pc b/util/network/zeromq/src/libzmq.pc
deleted file mode 100644
index 2b23f3ef..00000000
--- a/util/network/zeromq/src/libzmq.pc
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=/usr/local
-exec_prefix=${prefix}
-libdir=${exec_prefix}/lib
-includedir=${prefix}/include
-
-Name: libzmq
-Description: 0MQ c++ library
-Version: 2.0.8
-Libs: -L${libdir} -lzmq
-Cflags: -I${includedir}
diff --git a/util/network/zeromq/src/libzmq.pc.in b/util/network/zeromq/src/libzmq.pc.in
deleted file mode 100644
index ba155a38..00000000
--- a/util/network/zeromq/src/libzmq.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: libzmq
-Description: 0MQ c++ library
-Version: @VERSION@
-Libs: -L${libdir} -lzmq
-Cflags: -I${includedir}
diff --git a/util/network/zeromq/src/likely.hpp b/util/network/zeromq/src/likely.hpp
deleted file mode 100644
index b7a81711..00000000
--- a/util/network/zeromq/src/likely.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_LIKELY_HPP_INCLUDED__
-#define __ZMQ_LIKELY_HPP_INCLUDED__
-
-#if defined __GNUC__
-#define likely(x) __builtin_expect ((x), 1)
-#define unlikely(x) __builtin_expect ((x), 0)
-#else
-#define likely(x) (x)
-#define unlikely(x) (x)
-#endif
-
-
-#endif
diff --git a/util/network/zeromq/src/msg_content.hpp b/util/network/zeromq/src/msg_content.hpp
deleted file mode 100644
index d409d459..00000000
--- a/util/network/zeromq/src/msg_content.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_MSG_HPP_INCLUDE__
-#define __ZMQ_MSG_HPP_INCLUDE__
-
-#include <stddef.h>
-
-#include "../include/zmq.h"
-
-#include "atomic_counter.hpp"
-
-namespace zmq
-{
-
- // Shared message buffer. Message data are either allocated in one
- // continuous block along with this structure - thus avoiding one
- // malloc/free pair or they are stored in used-supplied memory.
- // In the latter case, ffn member stores pointer to the function to be
- // used to deallocate the data. If the buffer is actually shared (there
- // are at least 2 references to it) refcount member contains number of
- // references.
-
- struct msg_content_t
- {
- void *data;
- size_t size;
- zmq_free_fn *ffn;
- void *hint;
- zmq::atomic_counter_t refcnt;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/msg_store.cpp b/util/network/zeromq/src/msg_store.cpp
deleted file mode 100644
index aaf6dbef..00000000
--- a/util/network/zeromq/src/msg_store.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#include <io.h>
-#else
-#include <unistd.h>
-#endif
-
-#include "../include/zmq.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <string.h>
-#include <sstream>
-#include <algorithm>
-
-#include "atomic_counter.hpp"
-#include "msg_store.hpp"
-#include "err.hpp"
-
-zmq::msg_store_t::msg_store_t (int64_t filesize_, size_t block_size_) :
- fd (-1),
- filesize (filesize_),
- file_pos (0),
- write_pos (0),
- read_pos (0),
- block_size (block_size_),
- write_buf_start_addr (0)
-{
- zmq_assert (filesize > 0);
- zmq_assert (block_size > 0);
-
- buf1 = new (std::nothrow) char [block_size];
- zmq_assert (buf1);
-
- buf2 = new (std::nothrow) char [block_size];
- zmq_assert (buf2);
-
- read_buf = write_buf = buf1;
-}
-
-zmq::msg_store_t::~msg_store_t ()
-{
- delete [] buf1;
- delete [] buf2;
-
- if (fd == -1)
- return;
-
-#ifdef ZMQ_HAVE_WINDOWS
- int rc = _close (fd);
-#else
- int rc = close (fd);
-#endif
- errno_assert (rc == 0);
-
-#ifdef ZMQ_HAVE_WINDOWS
- rc = _unlink (filename.c_str ());
-#else
- rc = unlink (filename.c_str ());
-#endif
- errno_assert (rc == 0);
-}
-
-int zmq::msg_store_t::init ()
-{
- static zmq::atomic_counter_t seqnum (0);
-
- // Get process ID.
-#ifdef ZMQ_HAVE_WINDOWS
- int pid = GetCurrentThreadId ();
-#else
- pid_t pid = getpid ();
-#endif
-
- std::ostringstream outs;
- outs << "zmq_" << pid << '_' << seqnum.get () << ".swap";
- filename = outs.str ();
-
- seqnum.add (1);
-
- // Open the backing file.
-#ifdef ZMQ_HAVE_WINDOWS
- fd = _open (filename.c_str (), _O_RDWR | _O_CREAT, 0600);
-#else
- fd = open (filename.c_str (), O_RDWR | O_CREAT, 0600);
-#endif
- if (fd == -1)
- return -1;
-
-#ifdef ZMQ_HAVE_LINUX
- // Enable more aggresive read-ahead optimization.
- posix_fadvise (fd, 0, filesize, POSIX_FADV_SEQUENTIAL);
-#endif
- return 0;
-}
-
-bool zmq::msg_store_t::store (zmq_msg_t *msg_)
-{
- size_t msg_size = zmq_msg_size (msg_);
-
- // Check buffer space availability.
- // NOTE: We always keep one byte open.
- if (buffer_space () <= (int64_t) (sizeof msg_size + 1 + msg_size))
- return false;
-
- // Don't store the ZMQ_MSG_SHARED flag.
- uint8_t msg_flags = msg_->flags & ~ZMQ_MSG_SHARED;
-
- // Write message length, flags, and message body.
- copy_to_file (&msg_size, sizeof msg_size);
- copy_to_file (&msg_flags, sizeof msg_flags);
- copy_to_file (zmq_msg_data (msg_), msg_size);
-
- zmq_msg_close (msg_);
-
- return true;
-}
-
-void zmq::msg_store_t::fetch (zmq_msg_t *msg_)
-{
- // There must be at least one message available.
- zmq_assert (read_pos != write_pos);
-
- // Retrieve the message size.
- size_t msg_size;
- copy_from_file (&msg_size, sizeof msg_size);
-
- // Initialize the message.
- zmq_msg_init_size (msg_, msg_size);
-
- // Retrieve the message flags.
- copy_from_file (&msg_->flags, sizeof msg_->flags);
-
- // Retrieve the message payload.
- copy_from_file (zmq_msg_data (msg_), msg_size);
-}
-
-void zmq::msg_store_t::commit ()
-{
- commit_pos = write_pos;
-}
-
-void zmq::msg_store_t::rollback ()
-{
- if (commit_pos == write_pos || read_pos == write_pos)
- return;
-
- if (write_pos > read_pos)
- zmq_assert (read_pos <= commit_pos && commit_pos <= write_pos);
- else
- zmq_assert (read_pos <= commit_pos || commit_pos <= write_pos);
-
- if (commit_pos / block_size == read_pos / block_size) {
- write_buf_start_addr = commit_pos % block_size;
- write_buf = read_buf;
- }
- else if (commit_pos / block_size != write_pos / block_size) {
- write_buf_start_addr = commit_pos % block_size;
- fill_buf (write_buf, write_buf_start_addr);
- }
- write_pos = commit_pos;
-}
-
-bool zmq::msg_store_t::empty ()
-{
- return read_pos == write_pos;
-}
-
-bool zmq::msg_store_t::full ()
-{
- return buffer_space () == 1;
-}
-
-void zmq::msg_store_t::copy_from_file (void *buffer_, size_t count_)
-{
- char *dest_ptr = (char *) buffer_;
- size_t chunk_size, remainder = count_;
-
- while (remainder > 0) {
- chunk_size = std::min (remainder,
- std::min ((size_t) (filesize - read_pos),
- (size_t) (block_size - read_pos % block_size)));
-
- memcpy (dest_ptr, &read_buf [read_pos % block_size], chunk_size);
- dest_ptr += chunk_size;
-
- read_pos = (read_pos + chunk_size) % filesize;
- if (read_pos % block_size == 0) {
- if (read_pos / block_size == write_pos / block_size)
- read_buf = write_buf;
- else
- fill_buf (read_buf, read_pos);
- }
- remainder -= chunk_size;
- }
-}
-
-void zmq::msg_store_t::copy_to_file (const void *buffer_, size_t count_)
-{
- char *source_ptr = (char *) buffer_;
- size_t chunk_size, remainder = count_;
-
- while (remainder > 0) {
- chunk_size = std::min (remainder,
- std::min ((size_t) (filesize - write_pos),
- (size_t) (block_size - write_pos % block_size)));
-
- memcpy (&write_buf [write_pos % block_size], source_ptr, chunk_size);
- source_ptr += chunk_size;
-
- write_pos = (write_pos + chunk_size) % filesize;
- if (write_pos % block_size == 0) {
- save_write_buf ();
- write_buf_start_addr = write_pos;
-
- if (write_buf == read_buf) {
- if (read_buf == buf2)
- write_buf = buf1;
- else
- write_buf = buf2;
- }
- }
- remainder -= chunk_size;
- }
-}
-
-void zmq::msg_store_t::fill_buf (char *buf, int64_t pos)
-{
- if (file_pos != pos) {
-#ifdef ZMQ_HAVE_WINDOWS
- __int64 offset = _lseeki64 (fd, pos, SEEK_SET);
-#else
- off_t offset = lseek (fd, (off_t) pos, SEEK_SET);
-#endif
- errno_assert (offset == pos);
- file_pos = pos;
- }
- size_t octets_stored = 0;
- size_t octets_total = std::min (block_size, (size_t) (filesize - file_pos));
-
- while (octets_stored < octets_total) {
-#ifdef ZMQ_HAVE_WINDOWS
- int rc = _read (fd, &buf [octets_stored], octets_total - octets_stored);
-#else
- ssize_t rc = read (fd, &buf [octets_stored], octets_total - octets_stored);
-#endif
- errno_assert (rc > 0);
- octets_stored += rc;
- }
- file_pos += octets_total;
-}
-
-void zmq::msg_store_t::save_write_buf ()
-{
- if (file_pos != write_buf_start_addr) {
-#ifdef ZMQ_HAVE_WINDOWS
- __int64 offset = _lseeki64 (fd, write_buf_start_addr, SEEK_SET);
-#else
- off_t offset = lseek (fd, (off_t) write_buf_start_addr, SEEK_SET);
-#endif
- errno_assert (offset == write_buf_start_addr);
- file_pos = write_buf_start_addr;
- }
- size_t octets_stored = 0;
- size_t octets_total = std::min (block_size, (size_t) (filesize - file_pos));
-
- while (octets_stored < octets_total) {
-#ifdef ZMQ_HAVE_WINDOWS
- int rc = _write (fd, &write_buf [octets_stored], octets_total - octets_stored);
-#else
- ssize_t rc = write (fd, &write_buf [octets_stored], octets_total - octets_stored);
-#endif
- errno_assert (rc > 0);
- octets_stored += rc;
- }
- file_pos += octets_total;
-}
-
-int64_t zmq::msg_store_t::buffer_space ()
-{
- if (write_pos < read_pos)
- return read_pos - write_pos;
-
- return filesize - (write_pos - read_pos);
-}
diff --git a/util/network/zeromq/src/msg_store.hpp b/util/network/zeromq/src/msg_store.hpp
deleted file mode 100644
index 765fc601..00000000
--- a/util/network/zeromq/src/msg_store.hpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_MSG_STORE_HPP_INCLUDED__
-#define __ZMQ_MSG_STORE_HPP_INCLUDED__
-
-#include "../include/zmq.h"
-
-#include <string>
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- // This class implements a message store. Messages are retrieved from
- // the store in the same order as they entered it.
-
- class msg_store_t
- {
- public:
-
- enum { default_block_size = 8192 };
-
- // Creates message store.
- msg_store_t (int64_t filesize_, size_t block_size_ = default_block_size);
-
- ~msg_store_t ();
-
- int init ();
-
- // Stores the message into the message store. The function
- // returns false if the message store is full; true otherwise.
- bool store (zmq_msg_t *msg_);
-
- // Fetches the oldest message from the message store. It is an error
- // to call this function when the message store is empty.
- void fetch (zmq_msg_t *msg_);
-
- void commit ();
-
- void rollback ();
-
- // Returns true if the message store is empty; false otherwise.
- bool empty ();
-
- // Returns true if and only if the store is full.
- bool full ();
-
- private:
-
- // Copies data from a memory buffer to the backing file.
- // Wraps around when reaching maximum file size.
- void copy_from_file (void *buffer_, size_t count_);
-
- // Copies data from the backing file to the memory buffer.
- // Wraps around when reaching end-of-file.
- void copy_to_file (const void *buffer_, size_t count_);
-
- // Returns the buffer space available.
- int64_t buffer_space ();
-
- void fill_buf (char *buf, int64_t pos);
-
- void save_write_buf ();
-
- // File descriptor to the backing file.
- int fd;
-
- // Name of the backing file.
- std::string filename;
-
- // Maximum size of the backing file.
- int64_t filesize;
-
- // File offset associated with the fd file descriptor.
- int64_t file_pos;
-
- // File offset the next message will be stored at.
- int64_t write_pos;
-
- // File offset the next message will be read from.
- int64_t read_pos;
-
- int64_t commit_pos;
-
- size_t block_size;
-
- char *buf1;
- char *buf2;
- char *read_buf;
- char *write_buf;
-
- int64_t write_buf_start_addr;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/mutex.hpp b/util/network/zeromq/src/mutex.hpp
deleted file mode 100644
index 3306d2e4..00000000
--- a/util/network/zeromq/src/mutex.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_MUTEX_HPP_INCLUDED__
-#define __ZMQ_MUTEX_HPP_INCLUDED__
-
-#include "platform.hpp"
-#include "err.hpp"
-
-// Mutex class encapsulates OS mutex in a platform-independent way.
-
-#ifdef ZMQ_HAVE_WINDOWS
-
-#include "windows.hpp"
-
-namespace zmq
-{
-
- class mutex_t
- {
- public:
- inline mutex_t ()
- {
- InitializeCriticalSection (&cs);
- }
-
- inline ~mutex_t ()
- {
- DeleteCriticalSection (&cs);
- }
-
- inline void lock ()
- {
- EnterCriticalSection (&cs);
- }
-
- inline void unlock ()
- {
- LeaveCriticalSection (&cs);
- }
-
- private:
-
- CRITICAL_SECTION cs;
-
- // Disable copy construction and assignment.
- mutex_t (const mutex_t&);
- void operator = (const mutex_t&);
- };
-
-}
-
-#else
-
-#include <pthread.h>
-
-namespace zmq
-{
-
- class mutex_t
- {
- public:
- inline mutex_t ()
- {
- int rc = pthread_mutex_init (&mutex, NULL);
- if (rc)
- posix_assert (rc);
- }
-
- inline ~mutex_t ()
- {
- int rc = pthread_mutex_destroy (&mutex);
- if (rc)
- posix_assert (rc);
- }
-
- inline void lock ()
- {
- int rc = pthread_mutex_lock (&mutex);
- if (rc)
- posix_assert (rc);
- }
-
- inline void unlock ()
- {
- int rc = pthread_mutex_unlock (&mutex);
- if (rc)
- posix_assert (rc);
- }
-
- private:
-
- pthread_mutex_t mutex;
-
- // Disable copy construction and assignment.
- mutex_t (const mutex_t&);
- void operator = (const mutex_t&);
- };
-
-}
-
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/object.cpp b/util/network/zeromq/src/object.cpp
deleted file mode 100644
index 324450f9..00000000
--- a/util/network/zeromq/src/object.cpp
+++ /dev/null
@@ -1,374 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <string.h>
-
-#include "object.hpp"
-#include "ctx.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-#include "io_thread.hpp"
-#include "owned.hpp"
-#include "session.hpp"
-#include "socket_base.hpp"
-
-zmq::object_t::object_t (ctx_t *ctx_, uint32_t thread_slot_) :
- ctx (ctx_),
- thread_slot (thread_slot_)
-{
-}
-
-zmq::object_t::object_t (object_t *parent_) :
- ctx (parent_->ctx),
- thread_slot (parent_->thread_slot)
-{
-}
-
-zmq::object_t::~object_t ()
-{
-}
-
-uint32_t zmq::object_t::get_thread_slot ()
-{
- return thread_slot;
-}
-
-zmq::ctx_t *zmq::object_t::get_ctx ()
-{
- return ctx;
-}
-
-void zmq::object_t::process_command (command_t &cmd_)
-{
- switch (cmd_.type) {
-
- case command_t::revive:
- process_revive ();
- break;
-
- case command_t::stop:
- process_stop ();
- break;
-
- case command_t::plug:
- process_plug ();
- process_seqnum ();
- return;
-
- case command_t::own:
- process_own (cmd_.args.own.object);
- process_seqnum ();
- break;
-
- case command_t::attach:
- process_attach (cmd_.args.attach.engine,
- blob_t (cmd_.args.attach.peer_identity,
- cmd_.args.attach.peer_identity_size));
- process_seqnum ();
- break;
-
- case command_t::bind:
- process_bind (cmd_.args.bind.in_pipe, cmd_.args.bind.out_pipe,
- blob_t (cmd_.args.bind.peer_identity,
- cmd_.args.bind.peer_identity_size));
- process_seqnum ();
- break;
-
- case command_t::reader_info:
- process_reader_info (cmd_.args.reader_info.msgs_read);
- break;
-
- case command_t::pipe_term:
- process_pipe_term ();
- return;
-
- case command_t::pipe_term_ack:
- process_pipe_term_ack ();
- break;
-
- case command_t::term_req:
- process_term_req (cmd_.args.term_req.object);
- break;
-
- case command_t::term:
- process_term ();
- break;
-
- case command_t::term_ack:
- process_term_ack ();
- break;
-
- default:
- zmq_assert (false);
- }
-
- // The assumption here is that each command is processed once only,
- // so deallocating it after processing is all right.
- deallocate_command (&cmd_);
-}
-
-void zmq::object_t::register_pipe (class pipe_t *pipe_)
-{
- ctx->register_pipe (pipe_);
-}
-
-void zmq::object_t::unregister_pipe (class pipe_t *pipe_)
-{
- ctx->unregister_pipe (pipe_);
-}
-
-int zmq::object_t::register_endpoint (const char *addr_, socket_base_t *socket_)
-{
- return ctx->register_endpoint (addr_, socket_);
-}
-
-void zmq::object_t::unregister_endpoints (socket_base_t *socket_)
-{
- return ctx->unregister_endpoints (socket_);
-}
-
-zmq::socket_base_t *zmq::object_t::find_endpoint (const char *addr_)
-{
- return ctx->find_endpoint (addr_);
-}
-
-zmq::io_thread_t *zmq::object_t::choose_io_thread (uint64_t taskset_)
-{
- return ctx->choose_io_thread (taskset_);
-}
-
-void zmq::object_t::send_stop ()
-{
- // 'stop' command goes always from administrative thread to
- // the current object.
- command_t cmd;
- cmd.destination = this;
- cmd.type = command_t::stop;
- ctx->send_command (thread_slot, cmd);
-}
-
-void zmq::object_t::send_plug (owned_t *destination_, bool inc_seqnum_)
-{
- if (inc_seqnum_)
- destination_->inc_seqnum ();
-
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::plug;
- send_command (cmd);
-}
-
-void zmq::object_t::send_own (socket_base_t *destination_, owned_t *object_)
-{
- destination_->inc_seqnum ();
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::own;
- cmd.args.own.object = object_;
- send_command (cmd);
-}
-
-void zmq::object_t::send_attach (session_t *destination_, i_engine *engine_,
- const blob_t &peer_identity_, bool inc_seqnum_)
-{
- if (inc_seqnum_)
- destination_->inc_seqnum ();
-
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::attach;
- cmd.args.attach.engine = engine_;
- if (peer_identity_.empty ()) {
- cmd.args.attach.peer_identity_size = 0;
- cmd.args.attach.peer_identity = NULL;
- }
- else {
- zmq_assert (peer_identity_.size () <= 0xff);
- cmd.args.attach.peer_identity_size =
- (unsigned char) peer_identity_.size ();
- cmd.args.attach.peer_identity =
- (unsigned char*) malloc (peer_identity_.size ());
- zmq_assert (cmd.args.attach.peer_identity_size);
- memcpy (cmd.args.attach.peer_identity, peer_identity_.data (),
- peer_identity_.size ());
- }
- send_command (cmd);
-}
-
-void zmq::object_t::send_bind (socket_base_t *destination_,
- reader_t *in_pipe_, writer_t *out_pipe_, const blob_t &peer_identity_,
- bool inc_seqnum_)
-{
- if (inc_seqnum_)
- destination_->inc_seqnum ();
-
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::bind;
- cmd.args.bind.in_pipe = in_pipe_;
- cmd.args.bind.out_pipe = out_pipe_;
- if (peer_identity_.empty ()) {
- cmd.args.bind.peer_identity_size = 0;
- cmd.args.bind.peer_identity = NULL;
- }
- else {
- zmq_assert (peer_identity_.size () <= 0xff);
- cmd.args.bind.peer_identity_size =
- (unsigned char) peer_identity_.size ();
- cmd.args.bind.peer_identity =
- (unsigned char*) malloc (peer_identity_.size ());
- zmq_assert (cmd.args.bind.peer_identity_size);
- memcpy (cmd.args.bind.peer_identity, peer_identity_.data (),
- peer_identity_.size ());
- }
- send_command (cmd);
-}
-
-void zmq::object_t::send_revive (object_t *destination_)
-{
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::revive;
- send_command (cmd);
-}
-
-void zmq::object_t::send_reader_info (writer_t *destination_,
- uint64_t msgs_read_)
-{
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::reader_info;
- cmd.args.reader_info.msgs_read = msgs_read_;
- send_command (cmd);
-}
-
-void zmq::object_t::send_pipe_term (writer_t *destination_)
-{
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::pipe_term;
- send_command (cmd);
-}
-
-void zmq::object_t::send_pipe_term_ack (reader_t *destination_)
-{
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::pipe_term_ack;
- send_command (cmd);
-}
-
-void zmq::object_t::send_term_req (socket_base_t *destination_,
- owned_t *object_)
-{
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::term_req;
- cmd.args.term_req.object = object_;
- send_command (cmd);
-}
-
-void zmq::object_t::send_term (owned_t *destination_)
-{
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::term;
- send_command (cmd);
-}
-
-void zmq::object_t::send_term_ack (socket_base_t *destination_)
-{
- command_t cmd;
- cmd.destination = destination_;
- cmd.type = command_t::term_ack;
- send_command (cmd);
-}
-
-void zmq::object_t::process_stop ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_plug ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_own (owned_t *object_)
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_attach (i_engine *engine_,
- const blob_t &peer_identity_)
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_bind (reader_t *in_pipe_, writer_t *out_pipe_,
- const blob_t &peer_identity_)
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_revive ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_reader_info (uint64_t msgs_read_)
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_pipe_term ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_pipe_term_ack ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_term_req (owned_t *object_)
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_term ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_term_ack ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::process_seqnum ()
-{
- zmq_assert (false);
-}
-
-void zmq::object_t::send_command (command_t &cmd_)
-{
- ctx->send_command (cmd_.destination->get_thread_slot (), cmd_);
-}
-
diff --git a/util/network/zeromq/src/object.hpp b/util/network/zeromq/src/object.hpp
deleted file mode 100644
index a38b0a6d..00000000
--- a/util/network/zeromq/src/object.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_OBJECT_HPP_INCLUDED__
-#define __ZMQ_OBJECT_HPP_INCLUDED__
-
-#include "stdint.hpp"
-#include "blob.hpp"
-
-namespace zmq
-{
- // Base class for all objects that participate in inter-thread
- // communication.
-
- class object_t
- {
- public:
-
- object_t (class ctx_t *ctx_, uint32_t thread_slot_);
- object_t (object_t *parent_);
- virtual ~object_t ();
-
- uint32_t get_thread_slot ();
- ctx_t *get_ctx ();
- void process_command (struct command_t &cmd_);
-
- // Allow pipe to access corresponding context functions.
- void register_pipe (class pipe_t *pipe_);
- void unregister_pipe (class pipe_t *pipe_);
-
- protected:
-
- // Using following function, socket is able to access global
- // repository of inproc endpoints.
- int register_endpoint (const char *addr_, class socket_base_t *socket_);
- void unregister_endpoints (class socket_base_t *socket_);
- class socket_base_t *find_endpoint (const char *addr_);
-
- // Chooses least loaded I/O thread.
- class io_thread_t *choose_io_thread (uint64_t taskset_);
-
- // Derived object can use these functions to send commands
- // to other objects.
- void send_stop ();
- void send_plug (class owned_t *destination_, bool inc_seqnum_ = true);
- void send_own (class socket_base_t *destination_,
- class owned_t *object_);
- void send_attach (class session_t *destination_,
- struct i_engine *engine_, const blob_t &peer_identity_,
- bool inc_seqnum_ = true);
- void send_bind (class socket_base_t *destination_,
- class reader_t *in_pipe_, class writer_t *out_pipe_,
- const blob_t &peer_identity_, bool inc_seqnum_ = true);
- void send_revive (class object_t *destination_);
- void send_reader_info (class writer_t *destination_,
- uint64_t msgs_read_);
- void send_pipe_term (class writer_t *destination_);
- void send_pipe_term_ack (class reader_t *destination_);
- void send_term_req (class socket_base_t *destination_,
- class owned_t *object_);
- void send_term (class owned_t *destination_);
- void send_term_ack (class socket_base_t *destination_);
-
- // These handlers can be overloaded by the derived objects. They are
- // called when command arrives from another thread.
- virtual void process_stop ();
- virtual void process_plug ();
- virtual void process_own (class owned_t *object_);
- virtual void process_attach (struct i_engine *engine_,
- const blob_t &peer_identity_);
- virtual void process_bind (class reader_t *in_pipe_,
- class writer_t *out_pipe_, const blob_t &peer_identity_);
- virtual void process_revive ();
- virtual void process_reader_info (uint64_t msgs_read_);
- virtual void process_pipe_term ();
- virtual void process_pipe_term_ack ();
- virtual void process_term_req (class owned_t *object_);
- virtual void process_term ();
- virtual void process_term_ack ();
-
- // Special handler called after a command that requires a seqnum
- // was processed. The implementation should catch up with its counter
- // of processed commands here.
- virtual void process_seqnum ();
-
- private:
-
- // Context provides access to the global state.
- class ctx_t *ctx;
-
- // Slot ID of the thread the object belongs to.
- uint32_t thread_slot;
-
- void send_command (command_t &cmd_);
-
- object_t (const object_t&);
- void operator = (const object_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/options.cpp b/util/network/zeromq/src/options.cpp
deleted file mode 100644
index f6b24d67..00000000
--- a/util/network/zeromq/src/options.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <string.h>
-
-#include "../include/zmq.h"
-
-#include "options.hpp"
-#include "err.hpp"
-
-zmq::options_t::options_t () :
- hwm (0),
- swap (0),
- affinity (0),
- rate (100),
- recovery_ivl (10),
- use_multicast_loop (true),
- sndbuf (0),
- rcvbuf (0),
- requires_in (false),
- requires_out (false),
- immediate_connect (true)
-{
-}
-
-int zmq::options_t::setsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- switch (option_) {
-
- case ZMQ_HWM:
- if (optvallen_ != sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- hwm = *((uint64_t*) optval_);
- return 0;
-
- case ZMQ_SWAP:
- if (optvallen_ != sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- swap = *((int64_t*) optval_);
- return 0;
-
- case ZMQ_AFFINITY:
- if (optvallen_ != sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- affinity = *((uint64_t*) optval_);
- return 0;
-
- case ZMQ_IDENTITY:
-
- // Empty identity is invalid as well as identity longer than
- // 255 bytes. Identity starting with binary zero is invalid
- // as these are used for auto-generated identities.
- if (optvallen_ < 1 || optvallen_ > 255 ||
- *((const unsigned char*) optval_) == 0) {
- errno = EINVAL;
- return -1;
- }
- identity.assign ((const unsigned char*) optval_, optvallen_);
- return 0;
-
- case ZMQ_RATE:
- if (optvallen_ != sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- rate = (uint32_t) *((int64_t*) optval_);
- return 0;
-
- case ZMQ_RECOVERY_IVL:
- if (optvallen_ != sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- recovery_ivl = (uint32_t) *((int64_t*) optval_);
- return 0;
-
- case ZMQ_MCAST_LOOP:
- if (optvallen_ != sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- if ((int64_t) *((int64_t*) optval_) == 0)
- use_multicast_loop = false;
- else if ((int64_t) *((int64_t*) optval_) == 1)
- use_multicast_loop = true;
- else {
- errno = EINVAL;
- return -1;
- }
- return 0;
-
- case ZMQ_SNDBUF:
- if (optvallen_ != sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- sndbuf = *((uint64_t*) optval_);
- return 0;
-
- case ZMQ_RCVBUF:
- if (optvallen_ != sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- rcvbuf = *((uint64_t*) optval_);
- return 0;
- }
-
- errno = EINVAL;
- return -1;
-}
-
-int zmq::options_t::getsockopt (int option_, void *optval_, size_t *optvallen_)
-{
- switch (option_) {
-
- case ZMQ_HWM:
- if (*optvallen_ < sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((uint64_t*) optval_) = hwm;
- *optvallen_ = sizeof (uint64_t);
- return 0;
-
- case ZMQ_SWAP:
- if (*optvallen_ < sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((int64_t*) optval_) = swap;
- *optvallen_ = sizeof (int64_t);
- return 0;
-
- case ZMQ_AFFINITY:
- if (*optvallen_ < sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((uint64_t*) optval_) = affinity;
- *optvallen_ = sizeof (uint64_t);
- return 0;
-
- case ZMQ_IDENTITY:
- if (*optvallen_ < identity.size ()) {
- errno = EINVAL;
- return -1;
- }
- memcpy (optval_, identity.data (), identity.size ());
- *optvallen_ = identity.size ();
- return 0;
-
-
- case ZMQ_RATE:
- if (*optvallen_ < sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((int64_t*) optval_) = rate;
- *optvallen_ = sizeof (int64_t);
- return 0;
-
- case ZMQ_RECOVERY_IVL:
- if (*optvallen_ < sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((int64_t*) optval_) = recovery_ivl;
- *optvallen_ = sizeof (int64_t);
- return 0;
-
- case ZMQ_MCAST_LOOP:
- if (*optvallen_ < sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((int64_t*) optval_) = use_multicast_loop ? 1 : 0;
- *optvallen_ = sizeof (int64_t);
- return 0;
-
- case ZMQ_SNDBUF:
- if (*optvallen_ < sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((uint64_t*) optval_) = sndbuf;
- *optvallen_ = sizeof (uint64_t);
- return 0;
-
- case ZMQ_RCVBUF:
- if (*optvallen_ < sizeof (uint64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((uint64_t*) optval_) = rcvbuf;
- *optvallen_ = sizeof (uint64_t);
- return 0;
- }
-
- errno = EINVAL;
- return -1;
-}
diff --git a/util/network/zeromq/src/options.hpp b/util/network/zeromq/src/options.hpp
deleted file mode 100644
index 908b1667..00000000
--- a/util/network/zeromq/src/options.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_OPTIONS_HPP_INCLUDED__
-#define __ZMQ_OPTIONS_HPP_INCLUDED__
-
-#include "stddef.h"
-#include "stdint.hpp"
-#include "blob.hpp"
-
-namespace zmq
-{
-
- struct options_t
- {
- options_t ();
-
- int setsockopt (int option_, const void *optval_, size_t optvallen_);
- int getsockopt (int option_, void *optval_, size_t *optvallen_);
-
- uint64_t hwm;
- int64_t swap;
- uint64_t affinity;
- blob_t identity;
-
- // Maximum tranfer rate [kb/s]. Default 100kb/s.
- uint32_t rate;
-
- // Reliability time interval [s]. Default 10s.
- uint32_t recovery_ivl;
-
- // Enable multicast loopback. Default disabled (false).
- bool use_multicast_loop;
-
- uint64_t sndbuf;
- uint64_t rcvbuf;
-
- // These options are never set by the user directly. Instead they are
- // provided by the specific socket type.
- bool requires_in;
- bool requires_out;
-
- // If true, when connecting, pipes are created immediately without
- // waiting for the connection to be established. That way the socket
- // is not aware of the peer's identity, however, it is able to send
- // messages straight away.
- bool immediate_connect;
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/owned.cpp b/util/network/zeromq/src/owned.cpp
deleted file mode 100644
index d6be4449..00000000
--- a/util/network/zeromq/src/owned.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "owned.hpp"
-#include "err.hpp"
-
-zmq::owned_t::owned_t (object_t *parent_, socket_base_t *owner_) :
- object_t (parent_),
- owner (owner_),
- sent_seqnum (0),
- processed_seqnum (0),
- shutting_down (false)
-{
-}
-
-zmq::owned_t::~owned_t ()
-{
-}
-
-void zmq::owned_t::inc_seqnum ()
-{
- // NB: This function may be called from a different thread!
- sent_seqnum.add (1);
-}
-
-void zmq::owned_t::term ()
-{
- send_term_req (owner, this);
-}
-
-void zmq::owned_t::process_term ()
-{
- zmq_assert (!shutting_down);
- shutting_down = true;
- finalise ();
-}
-
-void zmq::owned_t::process_seqnum ()
-{
- // Catch up with counter of processed commands.
- processed_seqnum++;
- finalise ();
-}
-
-void zmq::owned_t::finalise ()
-{
- // If termination request was already received and there are no more
- // commands to wait for, terminate the object.
- if (shutting_down && processed_seqnum == sent_seqnum.get ()) {
- process_unplug ();
- send_term_ack (owner);
- delete this;
- }
-}
-
diff --git a/util/network/zeromq/src/owned.hpp b/util/network/zeromq/src/owned.hpp
deleted file mode 100644
index 91189a15..00000000
--- a/util/network/zeromq/src/owned.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_OWNED_HPP_INCLUDED__
-#define __ZMQ_OWNED_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-#include "atomic_counter.hpp"
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- // Base class for objects owned by individual sockets. Handles
- // initialisation and destruction of such objects.
-
- class owned_t : public object_t
- {
- public:
-
- // The object will live in parent's thread, however, its lifetime
- // will be managed by its owner socket.
- owned_t (object_t *parent_, socket_base_t *owner_);
-
- // When another owned object wants to send command to this object
- // it calls this function to let it know it should not shut down
- // before the command is delivered.
- void inc_seqnum ();
-
- protected:
-
- // Ask owner socket to terminate this object.
- void term ();
-
- // Derived object destroys owned_t. No point in allowing others to
- // invoke the destructor. At the same time, it has to be virtual so
- // that generic owned_t deallocation mechanism destroys specific type
- // of the owned object correctly.
- virtual ~owned_t ();
-
- // io_object_t defines a new handler used to disconnect the object
- // from the poller object. Implement the handlen in the derived
- // classes to ensure sane cleanup.
- virtual void process_unplug () = 0;
-
- // Socket owning this object. When the socket is being closed it's
- // responsible for shutting down this object.
- socket_base_t *owner;
-
- private:
-
- // Handlers for incoming commands.
- void process_term ();
- void process_seqnum ();
-
- void finalise ();
-
- // Sequence number of the last command sent to this object.
- atomic_counter_t sent_seqnum;
-
- // Sequence number of the last command processed by this object.
- uint64_t processed_seqnum;
-
- // If true, the object is already shutting down.
- bool shutting_down;
-
- owned_t (const owned_t&);
- void operator = (const owned_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/pair.cpp b/util/network/zeromq/src/pair.cpp
deleted file mode 100644
index 3872b288..00000000
--- a/util/network/zeromq/src/pair.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "pair.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-
-zmq::pair_t::pair_t (class app_thread_t *parent_) :
- socket_base_t (parent_),
- inpipe (NULL),
- outpipe (NULL),
- alive (true)
-{
- options.requires_in = true;
- options.requires_out = true;
-}
-
-zmq::pair_t::~pair_t ()
-{
- if (inpipe)
- inpipe->term ();
- if (outpipe)
- outpipe->term ();
-}
-
-void zmq::pair_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (!inpipe && !outpipe);
- inpipe = inpipe_;
- outpipe = outpipe_;
- outpipe_alive = true;
-}
-
-void zmq::pair_t::xdetach_inpipe (class reader_t *pipe_)
-{
- zmq_assert (pipe_ == inpipe);
- inpipe = NULL;
-}
-
-void zmq::pair_t::xdetach_outpipe (class writer_t *pipe_)
-{
- zmq_assert (pipe_ == outpipe);
- outpipe = NULL;
-}
-
-void zmq::pair_t::xkill (class reader_t *pipe_)
-{
- zmq_assert (alive);
- alive = false;
-}
-
-void zmq::pair_t::xrevive (class reader_t *pipe_)
-{
- zmq_assert (!alive);
- alive = true;
-}
-
-void zmq::pair_t::xrevive (class writer_t *pipe_)
-{
- zmq_assert (!outpipe_alive);
- outpipe_alive = true;
-}
-
-int zmq::pair_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- errno = EINVAL;
- return -1;
-}
-
-int zmq::pair_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- if (outpipe == NULL || !outpipe_alive) {
- errno = EAGAIN;
- return -1;
- }
-
- if (!outpipe->write (msg_)) {
- outpipe_alive = false;
- errno = EAGAIN;
- return -1;
- }
-
- outpipe->flush ();
-
- // Detach the original message from the data buffer.
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
-
- return 0;
-}
-
-int zmq::pair_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- // Deallocate old content of the message.
- zmq_msg_close (msg_);
-
- if (!alive || !inpipe || !inpipe->read (msg_)) {
- // No message is available. Initialise the output parameter
- // to be a 0-byte message.
- zmq_msg_init (msg_);
- errno = EAGAIN;
- return -1;
- }
- return 0;
-}
-
-bool zmq::pair_t::xhas_in ()
-{
- if (alive && inpipe && inpipe->check_read ())
- return true;
- return false;
-}
-
-bool zmq::pair_t::xhas_out ()
-{
- if (outpipe == NULL || !outpipe_alive)
- return false;
-
- outpipe_alive = outpipe->check_write ();
- return outpipe_alive;
-}
-
diff --git a/util/network/zeromq/src/pair.hpp b/util/network/zeromq/src/pair.hpp
deleted file mode 100644
index aea249f4..00000000
--- a/util/network/zeromq/src/pair.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PAIR_HPP_INCLUDED__
-#define __ZMQ_PAIR_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-
-namespace zmq
-{
-
- class pair_t : public socket_base_t
- {
- public:
-
- pair_t (class app_thread_t *parent_);
- ~pair_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- class reader_t *inpipe;
- class writer_t *outpipe;
-
- bool alive;
- bool outpipe_alive;
-
- pair_t (const pair_t&);
- void operator = (const pair_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/pgm_receiver.cpp b/util/network/zeromq/src/pgm_receiver.cpp
deleted file mode 100644
index 048c5294..00000000
--- a/util/network/zeromq/src/pgm_receiver.cpp
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_OPENPGM
-
-#include <new>
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include "pgm_receiver.hpp"
-#include "err.hpp"
-#include "stdint.hpp"
-#include "wire.hpp"
-#include "i_inout.hpp"
-
-zmq::pgm_receiver_t::pgm_receiver_t (class io_thread_t *parent_,
- const options_t &options_) :
- io_object_t (parent_),
- pgm_socket (true, options_),
- options (options_),
- inout (NULL),
- mru_decoder (NULL),
- pending_bytes (0)
-{
-}
-
-zmq::pgm_receiver_t::~pgm_receiver_t ()
-{
- // Destructor should not be called before unplug.
- zmq_assert (peers.empty ());
-}
-
-int zmq::pgm_receiver_t::init (bool udp_encapsulation_, const char *network_)
-{
- return pgm_socket.init (udp_encapsulation_, network_);
-}
-
-void zmq::pgm_receiver_t::plug (i_inout *inout_)
-{
- // Retrieve PGM fds and start polling.
- int socket_fd;
- int waiting_pipe_fd;
- pgm_socket.get_receiver_fds (&socket_fd, &waiting_pipe_fd);
- socket_handle = add_fd (socket_fd);
- pipe_handle = add_fd (waiting_pipe_fd);
- set_pollin (pipe_handle);
- set_pollin (socket_handle);
-
- inout = inout_;
-}
-
-void zmq::pgm_receiver_t::unplug ()
-{
- // Delete decoders.
- for (peers_t::iterator it = peers.begin (); it != peers.end (); it++) {
- if (it->second.decoder != NULL)
- delete it->second.decoder;
- }
- peers.clear ();
-
- mru_decoder = NULL;
- pending_bytes = 0;
-
- // Stop polling.
- rm_fd (socket_handle);
- rm_fd (pipe_handle);
-
- inout = NULL;
-}
-
-void zmq::pgm_receiver_t::revive ()
-{
- zmq_assert (false);
-}
-
-void zmq::pgm_receiver_t::resume_input ()
-{
- // It is possible that the most recently used decoder
- // processed the whole buffer but failed to write
- // the last message into the pipe.
- if (pending_bytes == 0) {
- if (mru_decoder != NULL)
- mru_decoder->process_buffer (NULL, 0);
- return;
- }
-
- zmq_assert (mru_decoder != NULL);
- zmq_assert (pending_ptr != NULL);
-
- // Ask the decoder to process remaining data.
- size_t n = mru_decoder->process_buffer (pending_ptr, pending_bytes);
- pending_bytes -= n;
-
- if (pending_bytes > 0)
- return;
-
- // Resume polling.
- set_pollin (pipe_handle);
- set_pollin (socket_handle);
-
- in_event ();
-}
-
-void zmq::pgm_receiver_t::in_event ()
-{
- // Read data from the underlying pgm_socket.
- unsigned char *data = NULL;
- const pgm_tsi_t *tsi = NULL;
-
- zmq_assert (pending_bytes == 0);
-
- // TODO: This loop can effectively block other engines in the same I/O
- // thread in the case of high load.
- while (true) {
-
- // Get new batch of data.
- ssize_t received = pgm_socket.receive ((void**) &data, &tsi);
-
- // No data to process. This may happen if the packet received is
- // neither ODATA nor ODATA.
- if (received == 0)
- break;
-
- // Find the peer based on its TSI.
- peers_t::iterator it = peers.find (*tsi);
-
- // Data loss. Delete decoder and mark the peer as disjoint.
- if (received == -1) {
- if (it != peers.end ()) {
- it->second.joined = false;
- if (it->second.decoder == mru_decoder)
- mru_decoder = NULL;
- if (it->second.decoder != NULL) {
- delete it->second.decoder;
- it->second.decoder = NULL;
- }
- }
- break;
- }
-
- // New peer. Add it to the list of know but unjoint peers.
- if (it == peers.end ()) {
- peer_info_t peer_info = {false, NULL};
- it = peers.insert (std::make_pair (*tsi, peer_info)).first;
- }
-
- // Read the offset of the fist message in the current packet.
- zmq_assert ((size_t) received >= sizeof (uint16_t));
- uint16_t offset = get_uint16 (data);
- data += sizeof (uint16_t);
- received -= sizeof (uint16_t);
-
- // Join the stream if needed.
- if (!it->second.joined) {
-
- // There is no beginning of the message in current packet.
- // Ignore the data.
- if (offset == 0xffff)
- continue;
-
- zmq_assert (offset <= received);
- zmq_assert (it->second.decoder == NULL);
-
- // We have to move data to the begining of the first message.
- data += offset;
- received -= offset;
-
- // Mark the stream as joined.
- it->second.joined = true;
-
- // Create and connect decoder for the peer.
- it->second.decoder = new (std::nothrow) zmq_decoder_t (0);
- it->second.decoder->set_inout (inout);
- }
-
- mru_decoder = it->second.decoder;
-
- // Push all the data to the decoder.
- ssize_t processed = it->second.decoder->process_buffer (data, received);
- if (processed < received) {
- // Save some state so we can resume the decoding process later.
- pending_bytes = received - processed;
- pending_ptr = data + processed;
- // Stop polling.
- reset_pollin (pipe_handle);
- reset_pollin (socket_handle);
-
- break;
- }
- }
-
- // Flush any messages decoder may have produced.
- inout->flush ();
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/pgm_receiver.hpp b/util/network/zeromq/src/pgm_receiver.hpp
deleted file mode 100644
index 1b367bfc..00000000
--- a/util/network/zeromq/src/pgm_receiver.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PGM_RECEIVER_HPP_INCLUDED__
-#define __ZMQ_PGM_RECEIVER_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_OPENPGM
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include <map>
-#include <algorithm>
-
-#include "io_object.hpp"
-#include "i_engine.hpp"
-#include "options.hpp"
-#include "zmq_decoder.hpp"
-#include "pgm_socket.hpp"
-
-namespace zmq
-{
-
- class pgm_receiver_t : public io_object_t, public i_engine
- {
-
- public:
-
- pgm_receiver_t (class io_thread_t *parent_, const options_t &options_);
- ~pgm_receiver_t ();
-
- int init (bool udp_encapsulation_, const char *network_);
-
- // i_engine interface implementation.
- void plug (struct i_inout *inout_);
- void unplug ();
- void revive ();
- void resume_input ();
-
- // i_poll_events interface implementation.
- void in_event ();
-
- private:
-
- // If joined is true we are already getting messages from the peer.
- // It it's false, we are getting data but still we haven't seen
- // beginning of a message.
- struct peer_info_t
- {
- bool joined;
- zmq_decoder_t *decoder;
- };
-
- struct tsi_comp
- {
- inline bool operator () (const pgm_tsi_t &ltsi,
- const pgm_tsi_t &rtsi) const
- {
- if (ltsi.sport < rtsi.sport)
- return true;
-
- return (std::lexicographical_compare (ltsi.gsi.identifier,
- ltsi.gsi.identifier + 6,
- rtsi.gsi.identifier, rtsi.gsi.identifier + 6));
- }
- };
-
- typedef std::map <pgm_tsi_t, peer_info_t, tsi_comp> peers_t;
- peers_t peers;
-
- // PGM socket.
- pgm_socket_t pgm_socket;
-
- // Socket options.
- options_t options;
-
- // Parent session.
- i_inout *inout;
-
- // Most recently used decoder.
- zmq_decoder_t *mru_decoder;
-
- // Number of bytes not consumed by the decoder due to pipe overflow.
- size_t pending_bytes;
-
- // Pointer to data still waiting to be processed by the decoder.
- unsigned char *pending_ptr;
-
- // Poll handle associated with PGM socket.
- handle_t socket_handle;
-
- // Poll handle associated with engine PGM waiting pipe.
- handle_t pipe_handle;
-
- pgm_receiver_t (const pgm_receiver_t&);
- void operator = (const pgm_receiver_t&);
- };
-
-}
-
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/pgm_sender.cpp b/util/network/zeromq/src/pgm_sender.cpp
deleted file mode 100644
index 9aeb7a98..00000000
--- a/util/network/zeromq/src/pgm_sender.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_OPENPGM
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include <stdlib.h>
-
-#include "io_thread.hpp"
-#include "pgm_sender.hpp"
-#include "err.hpp"
-#include "wire.hpp"
-#include "stdint.hpp"
-
-zmq::pgm_sender_t::pgm_sender_t (io_thread_t *parent_,
- const options_t &options_) :
- io_object_t (parent_),
- encoder (0),
- pgm_socket (false, options_),
- options (options_),
- out_buffer (NULL),
- out_buffer_size (0),
- write_size (0)
-{
-}
-
-int zmq::pgm_sender_t::init (bool udp_encapsulation_, const char *network_)
-{
- int rc = pgm_socket.init (udp_encapsulation_, network_);
- if (rc != 0)
- return rc;
-
- out_buffer_size = pgm_socket.get_max_tsdu_size ();
- out_buffer = (unsigned char*) malloc (out_buffer_size);
- zmq_assert (out_buffer);
-
- return rc;
-}
-
-void zmq::pgm_sender_t::plug (i_inout *inout_)
-{
- // Alocate 2 fds for PGM socket.
- int downlink_socket_fd = 0;
- int uplink_socket_fd = 0;
- int rdata_notify_fd = 0;
- int pending_notify_fd = 0;
-
- encoder.set_inout (inout_);
-
- // Fill fds from PGM transport and add them to the poller.
- pgm_socket.get_sender_fds (&downlink_socket_fd, &uplink_socket_fd,
- &rdata_notify_fd, &pending_notify_fd);
-
- handle = add_fd (downlink_socket_fd);
- uplink_handle = add_fd (uplink_socket_fd);
- rdata_notify_handle = add_fd (rdata_notify_fd);
- pending_notify_handle = add_fd (pending_notify_fd);
-
- // Set POLLIN. We wont never want to stop polling for uplink = we never
- // want to stop porocess NAKs.
- set_pollin (uplink_handle);
- set_pollin (rdata_notify_handle);
- set_pollin (pending_notify_handle);
-
- // Set POLLOUT for downlink_socket_handle.
- set_pollout (handle);
-}
-
-void zmq::pgm_sender_t::unplug ()
-{
- rm_fd (handle);
- rm_fd (uplink_handle);
- rm_fd (rdata_notify_handle);
- rm_fd (pending_notify_handle);
- encoder.set_inout (NULL);
-}
-
-void zmq::pgm_sender_t::revive ()
-{
- set_pollout (handle);
- out_event ();
-}
-
-void zmq::pgm_sender_t::resume_input ()
-{
- zmq_assert (false);
-}
-
-zmq::pgm_sender_t::~pgm_sender_t ()
-{
- if (out_buffer) {
- free (out_buffer);
- out_buffer = NULL;
- }
-}
-
-void zmq::pgm_sender_t::in_event ()
-{
- // In event on sender side means NAK or SPMR receiving from some peer.
- pgm_socket.process_upstream ();
-}
-
-void zmq::pgm_sender_t::out_event ()
-{
- // POLLOUT event from send socket. If write buffer is empty,
- // try to read new data from the encoder.
- if (write_size == 0) {
-
- // First two bytes (sizeof uint16_t) are used to store message
- // offset in following steps. Note that by passing our buffer to
- // the get data function we prevent it from returning its own buffer.
- unsigned char *bf = out_buffer + sizeof (uint16_t);
- size_t bfsz = out_buffer_size - sizeof (uint16_t);
- int offset = -1;
- encoder.get_data (&bf, &bfsz, &offset);
-
- // If there are no data to write stop polling for output.
- if (!bfsz) {
- reset_pollout (handle);
- return;
- }
-
- // Put offset information in the buffer.
- write_size = bfsz + sizeof (uint16_t);
- put_uint16 (out_buffer, offset == -1 ? 0xffff : (uint16_t) offset);
- }
-
- // Send the data.
- size_t nbytes = pgm_socket.send (out_buffer, write_size);
-
- // We can write either all data or 0 which means rate limit reached.
- if (nbytes == write_size)
- write_size = 0;
- else
- zmq_assert (nbytes == 0);
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/pgm_sender.hpp b/util/network/zeromq/src/pgm_sender.hpp
deleted file mode 100644
index 23a53bcd..00000000
--- a/util/network/zeromq/src/pgm_sender.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PGM_SENDER_HPP_INCLUDED__
-#define __ZMQ_PGM_SENDER_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_OPENPGM
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include "stdint.hpp"
-#include "io_object.hpp"
-#include "i_engine.hpp"
-#include "options.hpp"
-#include "pgm_socket.hpp"
-#include "zmq_encoder.hpp"
-
-namespace zmq
-{
-
- class pgm_sender_t : public io_object_t, public i_engine
- {
-
- public:
-
- pgm_sender_t (class io_thread_t *parent_, const options_t &options_);
- ~pgm_sender_t ();
-
- int init (bool udp_encapsulation_, const char *network_);
-
- // i_engine interface implementation.
- void plug (struct i_inout *inout_);
- void unplug ();
- void revive ();
- void resume_input ();
-
- // i_poll_events interface implementation.
- void in_event ();
- void out_event ();
-
- private:
-
- // Message encoder.
- zmq_encoder_t encoder;
-
- // PGM socket.
- pgm_socket_t pgm_socket;
-
- // Socket options.
- options_t options;
-
- // Poll handle associated with PGM socket.
- handle_t handle;
- handle_t uplink_handle;
- handle_t rdata_notify_handle;
- handle_t pending_notify_handle;
-
- // Output buffer from pgm_socket.
- unsigned char *out_buffer;
-
- // Output buffer size.
- size_t out_buffer_size;
-
- // Number of bytes in the buffer to be written to the socket.
- // If zero, there are no data to be sent.
- size_t write_size;
-
- pgm_sender_t (const pgm_sender_t&);
- void operator = (const pgm_sender_t&);
- };
-
-}
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/pgm_socket.cpp b/util/network/zeromq/src/pgm_socket.cpp
deleted file mode 100644
index 5a952a74..00000000
--- a/util/network/zeromq/src/pgm_socket.cpp
+++ /dev/null
@@ -1,538 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_OPENPGM
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#ifdef ZMQ_HAVE_LINUX
-#include <poll.h>
-#endif
-
-#include <stdlib.h>
-#include <string.h>
-#include <string>
-
-#include "options.hpp"
-#include "pgm_socket.hpp"
-#include "config.hpp"
-#include "err.hpp"
-#include "uuid.hpp"
-#include "stdint.hpp"
-
-zmq::pgm_socket_t::pgm_socket_t (bool receiver_, const options_t &options_) :
- transport (NULL),
- options (options_),
- receiver (receiver_),
- pgm_msgv (NULL),
- pgm_msgv_len (0),
- nbytes_rec (0),
- nbytes_processed (0),
- pgm_msgv_processed (0)
-{
-}
-
-int zmq::pgm_socket_t::init (bool udp_encapsulation_, const char *network_)
-{
- // Can not open transport before destroying old one.
- zmq_assert (transport == NULL);
-
- // Parse port number.
- const char *port_delim = strchr (network_, ':');
- if (!port_delim) {
- errno = EINVAL;
- return -1;
- }
-
- uint16_t port_number = atoi (port_delim + 1);
-
- char network [256];
- if (port_delim - network_ >= (int) sizeof (network) - 1) {
- errno = EINVAL;
- return -1;
- }
- memset (network, '\0', sizeof (network));
- memcpy (network, network_, port_delim - network_);
-
- // Zero counter used in msgrecv.
- nbytes_rec = 0;
- nbytes_processed = 0;
- pgm_msgv_processed = 0;
-
- int rc;
- GError *pgm_error = NULL;
-
- // PGM transport GSI.
- pgm_gsi_t gsi;
-
- std::string gsi_base;
-
- if (options.identity.size () > 0) {
-
- // Create gsi from identity.
- // TODO: We assume that identity is standard C string here.
- // What if it contains binary zeroes?
- gsi_base.assign ((const char*) options.identity.data (),
- options.identity.size ());
- } else {
-
- // Generate random gsi.
- gsi_base = uuid_t ().to_string ();
- }
-
- rc = pgm_gsi_create_from_string (&gsi, gsi_base.c_str (), -1);
- if (rc != TRUE) {
- errno = EINVAL;
- return -1;
- }
-
- struct pgm_transport_info_t *res = NULL;
- struct pgm_transport_info_t hint;
- memset (&hint, 0, sizeof (hint));
- hint.ti_family = AF_INET;
-
- if (!pgm_if_get_transport_info (network, &hint, &res, &pgm_error)) {
- if (pgm_error->domain == PGM_IF_ERROR && (
- pgm_error->code == PGM_IF_ERROR_INVAL ||
- pgm_error->code == PGM_IF_ERROR_XDEV ||
- pgm_error->code == PGM_IF_ERROR_NODEV ||
- pgm_error->code == PGM_IF_ERROR_NOTUNIQ ||
- pgm_error->code == PGM_IF_ERROR_ADDRFAMILY ||
- pgm_error->code == PGM_IF_ERROR_FAMILY ||
- pgm_error->code == PGM_IF_ERROR_NODATA ||
- pgm_error->code == PGM_IF_ERROR_NONAME ||
- pgm_error->code == PGM_IF_ERROR_SERVICE)) {
- g_error_free (pgm_error);
- errno = EINVAL;
- return -1;
- }
-
- zmq_assert (false);
- }
-
- res->ti_gsi = gsi;
- res->ti_dport = port_number;
-
- // If we are using UDP encapsulation update gsr or res.
- if (udp_encapsulation_) {
- res->ti_udp_encap_ucast_port = port_number;
- res->ti_udp_encap_mcast_port = port_number;
- }
-
- if (!pgm_transport_create (&transport, res, &pgm_error)) {
- if (pgm_error->domain == PGM_TRANSPORT_ERROR && (
- pgm_error->code == PGM_TRANSPORT_ERROR_INVAL ||
- pgm_error->code == PGM_TRANSPORT_ERROR_PERM ||
- pgm_error->code == PGM_TRANSPORT_ERROR_NODEV)) {
- pgm_if_free_transport_info (res);
- g_error_free (pgm_error);
- errno = EINVAL;
- return -1;
- }
-
- zmq_assert (false);
- }
-
- pgm_if_free_transport_info (res);
-
- // Common parameters for receiver and sender.
-
- // Set maximum transport protocol data unit size (TPDU).
- rc = pgm_transport_set_max_tpdu (transport, pgm_max_tpdu);
- if (rc != TRUE) {
- errno = EINVAL;
- return -1;
- }
-
- // Set maximum number of network hops to cross.
- rc = pgm_transport_set_hops (transport, 16);
- if (rc != TRUE) {
- errno = EINVAL;
- return -1;
- }
-
- // Set nonblocking send/recv sockets.
- if (!pgm_transport_set_nonblocking (transport, true)) {
- errno = EINVAL;
- return -1;
- }
-
- if (receiver) {
-
- // Receiver transport.
-
- // Note that NAKs are still generated by the transport.
- rc = pgm_transport_set_recv_only (transport, true, false);
- zmq_assert (rc == TRUE);
-
- if (options.rcvbuf) {
- rc = pgm_transport_set_rcvbuf (transport, (int) options.rcvbuf);
- if (rc != TRUE)
- return -1;
- }
-
- // Set NAK transmit back-off interval [us].
- rc = pgm_transport_set_nak_bo_ivl (transport, 50 * 1000);
- zmq_assert (rc == TRUE);
-
- // Set timeout before repeating NAK [us].
- rc = pgm_transport_set_nak_rpt_ivl (transport, 200 * 1000);
- zmq_assert (rc == TRUE);
-
- // Set timeout for receiving RDATA.
- rc = pgm_transport_set_nak_rdata_ivl (transport, 200 * 1000);
- zmq_assert (rc == TRUE);
-
- // Set retries for NAK without NCF/DATA (NAK_DATA_RETRIES).
- rc = pgm_transport_set_nak_data_retries (transport, 5);
- zmq_assert (rc == TRUE);
-
- // Set retries for NCF after NAK (NAK_NCF_RETRIES).
- rc = pgm_transport_set_nak_ncf_retries (transport, 2);
- zmq_assert (rc == TRUE);
-
- // Set timeout for removing a dead peer [us].
- rc = pgm_transport_set_peer_expiry (transport, 5 * 8192 * 1000);
- zmq_assert (rc == TRUE);
-
- // Set expiration time of SPM Requests [us].
- rc = pgm_transport_set_spmr_expiry (transport, 25 * 1000);
- zmq_assert (rc == TRUE);
-
- // Set the size of the receive window.
- // Data rate is in [B/s]. options.rate is in [kb/s].
- if (options.rate <= 0) {
- errno = EINVAL;
- return -1;
- }
- rc = pgm_transport_set_rxw_max_rte (transport,
- options.rate * 1000 / 8);
- if (rc != TRUE) {
- errno = EINVAL;
- return -1;
- }
-
- // Recovery interval [s].
- if (options.recovery_ivl <= 0) {
- errno = EINVAL;
- return -1;
- }
- rc = pgm_transport_set_rxw_secs (transport, options.recovery_ivl);
- if (rc != TRUE) {
- errno = EINVAL;
- return -1;
- }
-
- } else {
-
- // Sender transport.
-
- // Waiting pipe won't be read.
- rc = pgm_transport_set_send_only (transport, TRUE);
- zmq_assert (rc == TRUE);
-
- if (options.sndbuf) {
- rc = pgm_transport_set_sndbuf (transport, (int) options.sndbuf);
- if (rc != TRUE)
- return -1;
- }
-
- // Set the size of the send window.
- // Data rate is in [B/s] options.rate is in [kb/s].
- if (options.rate <= 0) {
- errno = EINVAL;
- return -1;
- }
- rc = pgm_transport_set_txw_max_rte (transport,
- options.rate * 1000 / 8);
- if (rc != TRUE) {
- errno = EINVAL;
- return -1;
- }
-
- // Recovery interval [s].
- if (options.recovery_ivl <= 0) {
- errno = EINVAL;
- return -1;
- }
- rc = pgm_transport_set_txw_secs (transport, options.recovery_ivl);
- if (rc != TRUE) {
- errno = EINVAL;
- return -1;
- }
-
- // Set interval of background SPM packets [us].
- rc = pgm_transport_set_ambient_spm (transport, 8192 * 1000);
- zmq_assert (rc == TRUE);
-
- // Set intervals of data flushing SPM packets [us].
- guint spm_heartbeat[] = {4 * 1000, 4 * 1000, 8 * 1000, 16 * 1000,
- 32 * 1000, 64 * 1000, 128 * 1000, 256 * 1000, 512 * 1000,
- 1024 * 1000, 2048 * 1000, 4096 * 1000, 8192 * 1000};
- rc = pgm_transport_set_heartbeat_spm (transport, spm_heartbeat,
- G_N_ELEMENTS(spm_heartbeat));
- zmq_assert (rc == TRUE);
- }
-
- // Enable multicast loopback.
- if (options.use_multicast_loop) {
- rc = pgm_transport_set_multicast_loop (transport, true);
- zmq_assert (rc == TRUE);
- }
-
- // Bind a transport to the specified network devices.
- if (!pgm_transport_bind (transport, &pgm_error)) {
- if (pgm_error->domain == PGM_IF_ERROR && (
- pgm_error->code == PGM_IF_ERROR_INVAL ||
- pgm_error->code == PGM_IF_ERROR_XDEV ||
- pgm_error->code == PGM_IF_ERROR_NODEV ||
- pgm_error->code == PGM_IF_ERROR_NOTUNIQ ||
- pgm_error->code == PGM_IF_ERROR_ADDRFAMILY ||
- pgm_error->code == PGM_IF_ERROR_FAMILY ||
- pgm_error->code == PGM_IF_ERROR_NODATA ||
- pgm_error->code == PGM_IF_ERROR_NONAME ||
- pgm_error->code == PGM_IF_ERROR_SERVICE)) {
- g_error_free (pgm_error);
- errno = EINVAL;
- return -1;
- }
- if (pgm_error->domain == PGM_TRANSPORT_ERROR && (
- pgm_error->code == PGM_TRANSPORT_ERROR_FAILED)) {
- g_error_free (pgm_error);
- errno = EINVAL;
- return -1;
- }
-
- zmq_assert (false);
- }
-
- // For receiver transport preallocate pgm_msgv array.
- // TODO: ?
- if (receiver) {
- zmq_assert (in_batch_size > 0);
- size_t max_tsdu_size = get_max_tsdu_size ();
- pgm_msgv_len = (int) in_batch_size / max_tsdu_size;
- if ((int) in_batch_size % max_tsdu_size)
- pgm_msgv_len++;
- zmq_assert (pgm_msgv_len);
-
- pgm_msgv = (pgm_msgv_t*) malloc (sizeof (pgm_msgv_t) * pgm_msgv_len);
- }
-
- return 0;
-}
-
-zmq::pgm_socket_t::~pgm_socket_t ()
-{
- if (pgm_msgv)
- free (pgm_msgv);
- if (transport)
- pgm_transport_destroy (transport, TRUE);
-}
-
-// Get receiver fds. recv_fd is from transport->recv_sock
-// waiting_pipe_fd is from transport->waiting_pipe [0]
-void zmq::pgm_socket_t::get_receiver_fds (int *receive_fd_,
- int *waiting_pipe_fd_)
-{
- zmq_assert (receive_fd_);
- zmq_assert (waiting_pipe_fd_);
-
- // recv_sock2 should not be used - check it.
- zmq_assert (transport->recv_sock2 == -1);
-
- // Check if transport can receive data and can not send.
- zmq_assert (transport->can_recv_data);
- zmq_assert (!transport->can_send_data);
-
- // Take FDs directly from transport.
- *receive_fd_ = pgm_transport_get_recv_fd (transport);
- *waiting_pipe_fd_ = pgm_transport_get_pending_fd (transport);
-}
-
-// Get fds and store them into user allocated memory.
-// sender_fd is from pgm_transport->send_sock.
-// receive_fd_ is from transport->recv_sock.
-// rdata_notify_fd_ is from transport->rdata_notify.
-// pending_notify_fd_ is from transport->pending_notify.
-void zmq::pgm_socket_t::get_sender_fds (int *send_fd_, int *receive_fd_,
- int *rdata_notify_fd_, int *pending_notify_fd_)
-{
- zmq_assert (send_fd_);
- zmq_assert (receive_fd_);
-
- zmq_assert (rdata_notify_fd_);
- zmq_assert (pending_notify_fd_);
-
- // recv_sock2 should not be used - check it.
- zmq_assert (transport->recv_sock2 == -1);
-
- // Check if transport can send data and can not receive.
- zmq_assert (transport->can_send_data);
- zmq_assert (!transport->can_recv_data);
-
- // Take FDs from transport.
- *send_fd_ = pgm_transport_get_send_fd (transport);
- *receive_fd_ = pgm_transport_get_recv_fd (transport);
-
- *rdata_notify_fd_ = pgm_transport_get_repair_fd (transport);
- *pending_notify_fd_ = pgm_transport_get_pending_fd (transport);
-}
-
-// Send one APDU, transmit window owned memory.
-size_t zmq::pgm_socket_t::send (unsigned char *data_, size_t data_len_)
-{
- size_t nbytes = 0;
-
- PGMIOStatus status = pgm_send (transport, data_, data_len_, &nbytes);
-
- if (nbytes != data_len_) {
- zmq_assert (status == PGM_IO_STATUS_RATE_LIMITED);
- zmq_assert (nbytes == 0);
- }
-
- // We have to write all data as one packet.
- if (nbytes > 0)
- zmq_assert ((ssize_t) nbytes == (ssize_t) data_len_);
-
- return nbytes;
-}
-
-// Return max TSDU size without fragmentation from current PGM transport.
-size_t zmq::pgm_socket_t::get_max_tsdu_size ()
-{
- return (size_t) pgm_transport_max_tsdu (transport, false);
-}
-
-// pgm_transport_recvmsgv is called to fill the pgm_msgv array up to
-// pgm_msgv_len. In subsequent calls data from pgm_msgv structure are
-// returned.
-ssize_t zmq::pgm_socket_t::receive (void **raw_data_, const pgm_tsi_t **tsi_)
-{
- size_t raw_data_len = 0;
-
- // We just sent all data from pgm_transport_recvmsgv up
- // and have to return 0 that another engine in this thread is scheduled.
- if (nbytes_rec == nbytes_processed && nbytes_rec > 0) {
-
- // Reset all the counters.
- nbytes_rec = 0;
- nbytes_processed = 0;
- pgm_msgv_processed = 0;
- return 0;
- }
-
- // If we have are going first time or if we have processed all pgm_msgv_t
- // structure previously read from the pgm socket.
- if (nbytes_rec == nbytes_processed) {
-
- // Check program flow.
- zmq_assert (pgm_msgv_processed == 0);
- zmq_assert (nbytes_processed == 0);
- zmq_assert (nbytes_rec == 0);
-
- // Receive a vector of Application Protocol Domain Unit's (APDUs)
- // from the transport.
- GError *pgm_error = NULL;
-
- const PGMIOStatus status = pgm_recvmsgv (transport, pgm_msgv,
- pgm_msgv_len, MSG_DONTWAIT, &nbytes_rec, &pgm_error);
-
- zmq_assert (status != PGM_IO_STATUS_ERROR);
-
- // In a case when no ODATA/RDATA fired POLLIN event (SPM...)
- // pgm_recvmsg returns ?.
- if (status == PGM_IO_STATUS_TIMER_PENDING) {
-
- zmq_assert (nbytes_rec == 0);
-
- // In case if no RDATA/ODATA caused POLLIN 0 is
- // returned.
- nbytes_rec = 0;
- return 0;
- }
-
- // Data loss.
- if (status == PGM_IO_STATUS_RESET) {
-
- pgm_peer_t* peer = (pgm_peer_t*) transport->peers_pending->data;
-
- // Save lost data TSI.
- *tsi_ = &peer->tsi;
- nbytes_rec = 0;
-
- // In case of dala loss -1 is returned.
- errno = EINVAL;
- g_error_free (pgm_error);
- return -1;
- }
-
- zmq_assert (status == PGM_IO_STATUS_NORMAL);
- }
- else
- {
- zmq_assert (pgm_msgv_processed <= pgm_msgv_len);
- }
-
- zmq_assert (nbytes_rec > 0);
-
- // Only one APDU per pgm_msgv_t structure is allowed.
- zmq_assert (pgm_msgv [pgm_msgv_processed].msgv_len == 1);
-
- struct pgm_sk_buff_t* skb =
- pgm_msgv [pgm_msgv_processed].msgv_skb [0];
-
- // Take pointers from pgm_msgv_t structure.
- *raw_data_ = skb->data;
- raw_data_len = skb->len;
-
- // Save current TSI.
- *tsi_ = &skb->tsi;
-
- // Move the the next pgm_msgv_t structure.
- pgm_msgv_processed++;
- zmq_assert (pgm_msgv_processed <= pgm_msgv_len);
- nbytes_processed +=raw_data_len;
-
- return raw_data_len;
-}
-
-void zmq::pgm_socket_t::process_upstream ()
-{
- pgm_msgv_t dummy_msg;
-
- size_t dummy_bytes = 0;
- GError *pgm_error = NULL;
-
- PGMIOStatus status = pgm_recvmsgv (transport, &dummy_msg,
- 1, MSG_DONTWAIT, &dummy_bytes, &pgm_error);
-
- zmq_assert (status != PGM_IO_STATUS_ERROR);
-
- // No data should be returned.
- zmq_assert (dummy_bytes == 0 && (status == PGM_IO_STATUS_TIMER_PENDING ||
- status == PGM_IO_STATUS_RATE_LIMITED));
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/pgm_socket.hpp b/util/network/zeromq/src/pgm_socket.hpp
deleted file mode 100644
index b9f55d1f..00000000
--- a/util/network/zeromq/src/pgm_socket.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __PGM_SOCKET_HPP_INCLUDED__
-#define __PGM_SOCKET_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_OPENPGM
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include <pgm/pgm.h>
-
-#include "options.hpp"
-
-namespace zmq
-{
- // Encapsulates PGM socket.
- class pgm_socket_t
- {
-
- public:
- // If receiver_ is true PGM transport is not generating SPM packets.
- // interface format: iface;mcast_group:port for raw PGM socket
- // udp:iface;mcast_goup:port for UDP encapsulacion
- pgm_socket_t (bool receiver_, const options_t &options_);
-
- // Closes the transport.
- ~pgm_socket_t ();
-
- // Initialize PGM network structures (GSI, GSRs).
- int init (bool udp_encapsulation_, const char *network_);
-
- // Get receiver fds and store them into user allocated memory.
- void get_receiver_fds (int *receive_fd_, int *waiting_pipe_fd_);
-
- // Get sender and receiver fds and store it to user allocated
- // memory. Receive fd is used to process NAKs from peers.
- void get_sender_fds (int *send_fd_, int *receive_fd_,
- int *rdata_notify_fd_, int *pending_notify_fd_);
-
- // Send data as one APDU, transmit window owned memory.
- size_t send (unsigned char *data_, size_t data_len_);
-
- // Returns max tsdu size without fragmentation.
- size_t get_max_tsdu_size ();
-
- // Receive data from pgm socket.
- ssize_t receive (void **data_, const pgm_tsi_t **tsi_);
-
- // POLLIN on sender side should mean NAK or SPMR receiving.
- // process_upstream function is used to handle such a situation.
- void process_upstream ();
-
- private:
-
- // OpenPGM transport
- pgm_transport_t* transport;
-
- // Associated socket options.
- options_t options;
-
- // true when pgm_socket should create receiving side.
- bool receiver;
-
- // Array of pgm_msgv_t structures to store received data
- // from the socket (pgm_transport_recvmsgv).
- pgm_msgv_t *pgm_msgv;
-
- // Size of pgm_msgv array.
- size_t pgm_msgv_len;
-
- // How many bytes were read from pgm socket.
- size_t nbytes_rec;
-
- // How many bytes were processed from last pgm socket read.
- size_t nbytes_processed;
-
- // How many messages from pgm_msgv were already sent up.
- size_t pgm_msgv_processed;
- };
-}
-#endif
-
-#endif
-
diff --git a/util/network/zeromq/src/pipe.cpp b/util/network/zeromq/src/pipe.cpp
deleted file mode 100644
index 200beb09..00000000
--- a/util/network/zeromq/src/pipe.cpp
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "pipe.hpp"
-
-zmq::reader_t::reader_t (object_t *parent_, uint64_t lwm_) :
- object_t (parent_),
- pipe (NULL),
- peer (NULL),
- lwm (lwm_),
- msgs_read (0),
- endpoint (NULL)
-{}
-
-zmq::reader_t::~reader_t ()
-{
- if (pipe)
- unregister_pipe (pipe);
-}
-
-void zmq::reader_t::set_pipe (pipe_t *pipe_)
-{
- zmq_assert (!pipe);
- pipe = pipe_;
- peer = &pipe->writer;
- register_pipe (pipe);
-}
-
-bool zmq::reader_t::is_delimiter (zmq_msg_t &msg_)
-{
- unsigned char *offset = 0;
-
- return msg_.content == (void*) (offset + ZMQ_DELIMITER);
-}
-
-bool zmq::reader_t::check_read ()
-{
- // Check if there's an item in the pipe.
- // If not, deactivate the pipe.
- if (!pipe->check_read ()) {
- endpoint->kill (this);
- return false;
- }
-
- // If the next item in the pipe is message delimiter,
- // initiate its termination.
- if (pipe->probe (is_delimiter)) {
- if (endpoint)
- endpoint->detach_inpipe (this);
- term ();
- return false;
- }
-
- return true;
-}
-
-bool zmq::reader_t::read (zmq_msg_t *msg_)
-{
- if (!pipe->read (msg_)) {
- endpoint->kill (this);
- return false;
- }
-
- // If delimiter was read, start termination process of the pipe.
- unsigned char *offset = 0;
- if (msg_->content == (void*) (offset + ZMQ_DELIMITER)) {
- if (endpoint)
- endpoint->detach_inpipe (this);
- term ();
- return false;
- }
-
- if (!(msg_->flags & ZMQ_MSG_MORE))
- msgs_read++;
-
- if (lwm > 0 && msgs_read % lwm == 0)
- send_reader_info (peer, msgs_read);
-
- return true;
-}
-
-void zmq::reader_t::set_endpoint (i_endpoint *endpoint_)
-{
- endpoint = endpoint_;
-}
-
-void zmq::reader_t::term ()
-{
- endpoint = NULL;
- send_pipe_term (peer);
-}
-
-void zmq::reader_t::process_revive ()
-{
- // Beacuse of command throttling mechanism, incoming termination request
- // may not have been processed before subsequent send.
- // In that case endpoint is NULL.
- if (endpoint)
- endpoint->revive (this);
-}
-
-void zmq::reader_t::process_pipe_term_ack ()
-{
- peer = NULL;
- delete pipe;
-}
-
-zmq::writer_t::writer_t (object_t *parent_,
- uint64_t hwm_, int64_t swap_size_) :
- object_t (parent_),
- pipe (NULL),
- peer (NULL),
- hwm (hwm_),
- msgs_read (0),
- msgs_written (0),
- msg_store (NULL),
- extra_msg_flag (false),
- stalled (false),
- pending_close (false),
- endpoint (NULL)
-{
- if (swap_size_ > 0) {
- msg_store = new (std::nothrow) msg_store_t (swap_size_);
- if (msg_store != NULL) {
- if (msg_store->init () < 0) {
- delete msg_store;
- msg_store = NULL;
- }
- }
- }
-}
-
-void zmq::writer_t::set_endpoint (i_endpoint *endpoint_)
-{
- endpoint = endpoint_;
-}
-
-zmq::writer_t::~writer_t ()
-{
- if (extra_msg_flag)
- zmq_msg_close (&extra_msg);
-
- delete msg_store;
-}
-
-void zmq::writer_t::set_pipe (pipe_t *pipe_)
-{
- zmq_assert (!pipe);
- pipe = pipe_;
- peer = &pipe->reader;
-}
-
-bool zmq::writer_t::check_write ()
-{
- if (pipe_full () && (msg_store == NULL || msg_store->full () || extra_msg_flag)) {
- stalled = true;
- return false;
- }
-
- return true;
-}
-
-bool zmq::writer_t::write (zmq_msg_t *msg_)
-{
- if (!check_write ())
- return false;
-
- if (pipe_full ()) {
- if (msg_store->store (msg_)) {
- if (!(msg_->flags & ZMQ_MSG_MORE))
- msg_store->commit ();
- } else {
- extra_msg = *msg_;
- extra_msg_flag = true;
- }
- }
- else {
- pipe->write (*msg_, msg_->flags & ZMQ_MSG_MORE);
- if (!(msg_->flags & ZMQ_MSG_MORE))
- msgs_written++;
- }
-
- return true;
-}
-
-void zmq::writer_t::rollback ()
-{
- if (extra_msg_flag && extra_msg.flags & ZMQ_MSG_MORE) {
- zmq_msg_close (&extra_msg);
- extra_msg_flag = false;
- }
-
- if (msg_store != NULL)
- msg_store->rollback ();
-
- zmq_msg_t msg;
- // Remove all incomplete messages from the pipe.
- while (pipe->unwrite (&msg)) {
- zmq_assert (msg.flags & ZMQ_MSG_MORE);
- zmq_msg_close (&msg);
- }
-
- if (stalled && endpoint != NULL && check_write ()) {
- stalled = false;
- endpoint->revive (this);
- }
-}
-
-void zmq::writer_t::flush ()
-{
- if (!pipe->flush ())
- send_revive (peer);
-}
-
-void zmq::writer_t::term ()
-{
- endpoint = NULL;
-
- // Rollback any unfinished messages.
- rollback ();
-
- if (msg_store == NULL || (msg_store->empty () && !extra_msg_flag))
- write_delimiter ();
- else
- pending_close = true;
-}
-
-void zmq::writer_t::write_delimiter ()
-{
- // Push delimiter into the pipe.
- // Trick the compiler to belive that the tag is a valid pointer.
- zmq_msg_t msg;
- const unsigned char *offset = 0;
- msg.content = (void*) (offset + ZMQ_DELIMITER);
- msg.flags = 0;
- pipe->write (msg, false);
- flush ();
-}
-
-void zmq::writer_t::process_reader_info (uint64_t msgs_read_)
-{
- zmq_msg_t msg;
-
- msgs_read = msgs_read_;
- if (msg_store) {
-
- // Move messages from backing store into pipe.
- while (!pipe_full () && !msg_store->empty ()) {
- msg_store->fetch(&msg);
- // Write message into the pipe.
- pipe->write (msg, msg.flags & ZMQ_MSG_MORE);
- if (!(msg.flags & ZMQ_MSG_MORE))
- msgs_written++;
- }
-
- if (extra_msg_flag) {
- if (!pipe_full ()) {
- pipe->write (extra_msg, extra_msg.flags & ZMQ_MSG_MORE);
- if (!(extra_msg.flags & ZMQ_MSG_MORE))
- msgs_written++;
- extra_msg_flag = false;
- }
- else if (msg_store->store (&extra_msg)) {
- if (!(extra_msg.flags & ZMQ_MSG_MORE))
- msg_store->commit ();
- extra_msg_flag = false;
- }
- }
-
- if (pending_close && msg_store->empty () && !extra_msg_flag) {
- write_delimiter ();
- pending_close = false;
- }
-
- flush ();
- }
-
- if (stalled && endpoint != NULL) {
- stalled = false;
- endpoint->revive (this);
- }
-}
-
-void zmq::writer_t::process_pipe_term ()
-{
- if (endpoint)
- endpoint->detach_outpipe (this);
-
- reader_t *p = peer;
- peer = NULL;
- send_pipe_term_ack (p);
-}
-
-bool zmq::writer_t::pipe_full ()
-{
- return hwm > 0 && msgs_written - msgs_read == hwm;
-}
-
-zmq::pipe_t::pipe_t (object_t *reader_parent_, object_t *writer_parent_,
- uint64_t hwm_, int64_t swap_size_) :
- reader (reader_parent_, compute_lwm (hwm_)),
- writer (writer_parent_, hwm_, swap_size_)
-{
- reader.set_pipe (this);
- writer.set_pipe (this);
-}
-
-zmq::pipe_t::~pipe_t ()
-{
- // Deallocate all the unread messages in the pipe. We have to do it by
- // hand because zmq_msg_t is a POD, not a class, so there's no associated
- // destructor.
- zmq_msg_t msg;
- while (read (&msg))
- zmq_msg_close (&msg);
-}
-
-uint64_t zmq::pipe_t::compute_lwm (uint64_t hwm_)
-{
- // Following point should be taken into consideration when computing
- // low watermark:
- //
- // 1. LWM has to be less than HWM.
- // 2. LWM cannot be set to very low value (such as zero) as after filling
- // the queue it would start to refill only after all the messages are
- // read from it and thus unnecessarily hold the progress back.
- // 3. LWM cannot be set to very high value (such as HWM-1) as it would
- // result in lock-step filling of the queue - if a single message is read
- // from a full queue, writer thread is resumed to write exactly one
- // message to the queue and go back to sleep immediately. This would
- // result in low performance.
- //
- // Given the 3. it would be good to keep HWM and LWM as far apart as
- // possible to reduce the thread switching overhead to almost zero,
- // say HWM-LWM should be 500 (max_wm_delta).
- //
- // That done, we still we have to account for the cases where HWM<500 thus
- // driving LWM to negative numbers. Let's make LWM 1/2 of HWM in such cases.
-
- if (hwm_ > max_wm_delta * 2)
- return hwm_ - max_wm_delta;
- else
- return (hwm_ + 1) / 2;
-}
-
diff --git a/util/network/zeromq/src/pipe.hpp b/util/network/zeromq/src/pipe.hpp
deleted file mode 100644
index ece678ab..00000000
--- a/util/network/zeromq/src/pipe.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PIPE_HPP_INCLUDED__
-#define __ZMQ_PIPE_HPP_INCLUDED__
-
-#include "../include/zmq.h"
-
-#include "stdint.hpp"
-#include "i_endpoint.hpp"
-#include "yarray_item.hpp"
-#include "ypipe.hpp"
-#include "msg_store.hpp"
-#include "config.hpp"
-#include "object.hpp"
-
-namespace zmq
-{
-
- class reader_t : public object_t, public yarray_item_t
- {
- public:
-
- reader_t (class object_t *parent_, uint64_t lwm_);
- ~reader_t ();
-
- void set_pipe (class pipe_t *pipe_);
- void set_endpoint (i_endpoint *endpoint_);
-
- // Returns true if there is at least one message to read in the pipe.
- bool check_read ();
-
- // Reads a message to the underlying pipe.
- bool read (zmq_msg_t *msg_);
-
- // Ask pipe to terminate.
- void term ();
-
- private:
-
- // Command handlers.
- void process_revive ();
- void process_pipe_term_ack ();
-
- // Returns true if the message is delimiter; false otherwise.
- static bool is_delimiter (zmq_msg_t &msg_);
-
- // The underlying pipe.
- class pipe_t *pipe;
-
- // Pipe writer associated with the other side of the pipe.
- class writer_t *peer;
-
- // Low watermark for in-memory storage (in bytes).
- uint64_t lwm;
-
- // Number of messages read so far.
- uint64_t msgs_read;
-
- // Endpoint (either session or socket) the pipe is attached to.
- i_endpoint *endpoint;
-
- reader_t (const reader_t&);
- void operator = (const reader_t&);
- };
-
- class writer_t : public object_t, public yarray_item_t
- {
- public:
-
- writer_t (class object_t *parent_, uint64_t hwm_, int64_t swap_size_);
- ~writer_t ();
-
- void set_pipe (class pipe_t *pipe_);
- void set_endpoint (i_endpoint *endpoint_);
-
- // Checks whether a message can be written to the pipe.
- // If writing the message would cause high watermark to be
- // exceeded, the function returns false.
- bool check_write ();
-
- // Writes a message to the underlying pipe. Returns false if the
- // message cannot be written because high watermark was reached.
- bool write (zmq_msg_t *msg_);
-
- // Remove unfinished part of a message from the pipe.
- void rollback ();
-
- // Flush the messages downsteam.
- void flush ();
-
- // Ask pipe to terminate.
- void term ();
-
- private:
-
- void process_reader_info (uint64_t msgs_read_);
-
- // Command handlers.
- void process_pipe_term ();
-
- // Tests whether the pipe is already full.
- bool pipe_full ();
-
- // Write special message to the pipe so that the reader
- // can find out we are finished.
- void write_delimiter ();
-
- // The underlying pipe.
- class pipe_t *pipe;
-
- // Pipe reader associated with the other side of the pipe.
- class reader_t *peer;
-
- // High watermark for in-memory storage (in bytes).
- uint64_t hwm;
-
- // Last confirmed number of messages read from the pipe.
- // The actual number can be higher.
- uint64_t msgs_read;
-
- // Number of messages we have written so far.
- uint64_t msgs_written;
-
- // Pointer to backing store. If NULL, messages are always
- // kept in main memory.
- msg_store_t *msg_store;
-
- bool extra_msg_flag;
-
- zmq_msg_t extra_msg;
-
- // True iff the last attempt to write a message has failed.
- bool stalled;
-
- bool pending_close;
-
- // Endpoint (either session or socket) the pipe is attached to.
- i_endpoint *endpoint;
-
- writer_t (const writer_t&);
- void operator = (const writer_t&);
- };
-
- // Message pipe.
- class pipe_t : public ypipe_t <zmq_msg_t, message_pipe_granularity>
- {
- public:
-
- pipe_t (object_t *reader_parent_, object_t *writer_parent_,
- uint64_t hwm_, int64_t swap_size_);
- ~pipe_t ();
-
- reader_t reader;
- writer_t writer;
-
- private:
-
- uint64_t compute_lwm (uint64_t hwm_);
-
- pipe_t (const pipe_t&);
- void operator = (const pipe_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/platform.hpp b/util/network/zeromq/src/platform.hpp
deleted file mode 100644
index 94e7564b..00000000
--- a/util/network/zeromq/src/platform.hpp
+++ /dev/null
@@ -1,228 +0,0 @@
-/* src/platform.hpp. Generated from platform.hpp.in by configure. */
-/* src/platform.hpp.in. Generated from configure.in by autoheader. */
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#define HAVE_ARPA_INET_H 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#define HAVE_DLFCN_H 1
-
-/* Define to 1 if you have the <errno.h> header file. */
-#define HAVE_ERRNO_H 1
-
-/* Define to 1 if you have the `freeifaddrs' function. */
-#define HAVE_FREEIFADDRS 1
-
-/* Define to 1 if you have the `getifaddrs' function. */
-#define HAVE_GETIFADDRS 1
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#define HAVE_GETTIMEOFDAY 1
-
-/* Define to 1 if you have the <ifaddrs.h> header file. */
-#define HAVE_IFADDRS_H 1
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#define HAVE_INTTYPES_H 1
-
-/* Define to 1 if you have the `crypto' library (-lcrypto). */
-/* #undef HAVE_LIBCRYPTO */
-
-/* Define to 1 if you have the `iphlpapi' library (-liphlpapi). */
-/* #undef HAVE_LIBIPHLPAPI */
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-/* #undef HAVE_LIBNSL */
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#define HAVE_LIBPTHREAD 1
-
-/* Define to 1 if you have the `rpcrt4' library (-lrpcrt4). */
-/* #undef HAVE_LIBRPCRT4 */
-
-/* Define to 1 if you have the `rt' library (-lrt). */
-/* #undef HAVE_LIBRT */
-
-/* Define to 1 if you have the `socket' library (-lsocket). */
-/* #undef HAVE_LIBSOCKET */
-
-/* Define to 1 if you have the `uuid' library (-luuid). */
-#define HAVE_LIBUUID 1
-
-/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
-/* #undef HAVE_LIBWS2_32 */
-
-/* Define to 1 if you have the <limits.h> header file. */
-#define HAVE_LIMITS_H 1
-
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
-
-/* Define to 1 if you have the `memset' function. */
-#define HAVE_MEMSET 1
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#define HAVE_NETINET_IN_H 1
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#define HAVE_NETINET_TCP_H 1
-
-/* Define to 1 if you have the `perror' function. */
-#define HAVE_PERROR 1
-
-/* Define to 1 if you have the `socket' function. */
-#define HAVE_SOCKET 1
-
-/* Define to 1 if stdbool.h conforms to C99. */
-#define HAVE_STDBOOL_H 1
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#define HAVE_STDDEF_H 1
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#define HAVE_STDINT_H 1
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#define HAVE_STDLIB_H 1
-
-/* Define to 1 if you have the <strings.h> header file. */
-#define HAVE_STRINGS_H 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#define HAVE_SYS_SOCKET_H 1
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#define HAVE_SYS_STAT_H 1
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#define HAVE_SYS_TIME_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#define HAVE_UNISTD_H 1
-
-/* Define to 1 if you have the <windows.h> header file. */
-/* #undef HAVE_WINDOWS_H */
-
-/* Define to 1 if the system has the type `_Bool'. */
-/* #undef HAVE__BOOL */
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Name of package */
-#define PACKAGE "zeromq"
-
-/* Define to the address where bug reports for this package should be sent. */
-#define PACKAGE_BUGREPORT "zeromq-dev@lists.zeromq.org"
-
-/* Define to the full name of this package. */
-#define PACKAGE_NAME "zeromq"
-
-/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "zeromq 2.0.8"
-
-/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME "zeromq"
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "2.0.8"
-
-/* 0MQ major version */
-#define PACKAGE_VERSION_MAJOR 2
-
-/* 0MQ minor version */
-#define PACKAGE_VERSION_MINOR 0
-
-/* 0MQ patchlevel */
-#define PACKAGE_VERSION_PATCH 8
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#define RETSIGTYPE void
-
-/* Define to 1 if you have the ANSI C header files. */
-#define STDC_HEADERS 1
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#define TIME_WITH_SYS_TIME 1
-
-/* Version number of package */
-#define VERSION "2.0.8"
-
-/* Force to use mutexes */
-/* #undef ZMQ_FORCE_MUTEXES */
-
-/* Have AIX OS */
-/* #undef ZMQ_HAVE_AIX */
-
-/* Have Cygwin */
-/* #undef ZMQ_HAVE_CYGWIN */
-
-/* Have FreeBSD OS */
-/* #undef ZMQ_HAVE_FREEBSD */
-
-/* Have HPUX OS */
-/* #undef ZMQ_HAVE_HPUX */
-
-/* Have ifaddrs.h header. */
-#define ZMQ_HAVE_IFADDRS 1
-
-/* Have Linux OS */
-#define ZMQ_HAVE_LINUX 1
-
-/* Have MinGW32 */
-/* #undef ZMQ_HAVE_MINGW32 */
-
-/* Have NetBSD OS */
-/* #undef ZMQ_HAVE_NETBSD */
-
-/* Have OpenBSD OS */
-/* #undef ZMQ_HAVE_OPENBSD */
-
-/* Have OpenPGM extension */
-/* #undef ZMQ_HAVE_OPENPGM */
-
-/* Have DarwinOSX OS */
-/* #undef ZMQ_HAVE_OSX */
-
-/* Have QNX Neutrino OS */
-/* #undef ZMQ_HAVE_QNXNTO */
-
-/* Have Solaris OS */
-/* #undef ZMQ_HAVE_SOLARIS */
-
-/* Have Windows OS */
-/* #undef ZMQ_HAVE_WINDOWS */
-
-/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
- <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
- #define below would cause a syntax error. */
-/* #undef _UINT32_T */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-/* #undef inline */
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-/* Define to `int' if <sys/types.h> does not define. */
-/* #undef ssize_t */
-
-/* Define to the type of an unsigned integer type of width exactly 32 bits if
- such a type exists and the standard includes do not define it. */
-/* #undef uint32_t */
-
-/* Define to empty if the keyword `volatile' does not work. Warning: valid
- code using `volatile' can become incorrect without. Disable with care. */
-/* #undef volatile */
diff --git a/util/network/zeromq/src/platform.hpp.in b/util/network/zeromq/src/platform.hpp.in
deleted file mode 100644
index 9f5a9ac8..00000000
--- a/util/network/zeromq/src/platform.hpp.in
+++ /dev/null
@@ -1,227 +0,0 @@
-/* src/platform.hpp.in. Generated from configure.in by autoheader. */
-
-/* Define to 1 if you have the <arpa/inet.h> header file. */
-#undef HAVE_ARPA_INET_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define to 1 if you have the `freeifaddrs' function. */
-#undef HAVE_FREEIFADDRS
-
-/* Define to 1 if you have the `getifaddrs' function. */
-#undef HAVE_GETIFADDRS
-
-/* Define to 1 if you have the `gettimeofday' function. */
-#undef HAVE_GETTIMEOFDAY
-
-/* Define to 1 if you have the <ifaddrs.h> header file. */
-#undef HAVE_IFADDRS_H
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the `crypto' library (-lcrypto). */
-#undef HAVE_LIBCRYPTO
-
-/* Define to 1 if you have the `iphlpapi' library (-liphlpapi). */
-#undef HAVE_LIBIPHLPAPI
-
-/* Define to 1 if you have the `nsl' library (-lnsl). */
-#undef HAVE_LIBNSL
-
-/* Define to 1 if you have the `pthread' library (-lpthread). */
-#undef HAVE_LIBPTHREAD
-
-/* Define to 1 if you have the `rpcrt4' library (-lrpcrt4). */
-#undef HAVE_LIBRPCRT4
-
-/* Define to 1 if you have the `rt' library (-lrt). */
-#undef HAVE_LIBRT
-
-/* Define to 1 if you have the `socket' library (-lsocket). */
-#undef HAVE_LIBSOCKET
-
-/* Define to 1 if you have the `uuid' library (-luuid). */
-#undef HAVE_LIBUUID
-
-/* Define to 1 if you have the `ws2_32' library (-lws2_32). */
-#undef HAVE_LIBWS2_32
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the <netinet/in.h> header file. */
-#undef HAVE_NETINET_IN_H
-
-/* Define to 1 if you have the <netinet/tcp.h> header file. */
-#undef HAVE_NETINET_TCP_H
-
-/* Define to 1 if you have the `perror' function. */
-#undef HAVE_PERROR
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if stdbool.h conforms to C99. */
-#undef HAVE_STDBOOL_H
-
-/* Define to 1 if you have the <stddef.h> header file. */
-#undef HAVE_STDDEF_H
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the <sys/socket.h> header file. */
-#undef HAVE_SYS_SOCKET_H
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the <windows.h> header file. */
-#undef HAVE_WINDOWS_H
-
-/* Define to 1 if the system has the type `_Bool'. */
-#undef HAVE__BOOL
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* 0MQ major version */
-#undef PACKAGE_VERSION_MAJOR
-
-/* 0MQ minor version */
-#undef PACKAGE_VERSION_MINOR
-
-/* 0MQ patchlevel */
-#undef PACKAGE_VERSION_PATCH
-
-/* Define as the return type of signal handlers (`int' or `void'). */
-#undef RETSIGTYPE
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Version number of package */
-#undef VERSION
-
-/* Force to use mutexes */
-#undef ZMQ_FORCE_MUTEXES
-
-/* Have AIX OS */
-#undef ZMQ_HAVE_AIX
-
-/* Have Cygwin */
-#undef ZMQ_HAVE_CYGWIN
-
-/* Have FreeBSD OS */
-#undef ZMQ_HAVE_FREEBSD
-
-/* Have HPUX OS */
-#undef ZMQ_HAVE_HPUX
-
-/* Have ifaddrs.h header. */
-#undef ZMQ_HAVE_IFADDRS
-
-/* Have Linux OS */
-#undef ZMQ_HAVE_LINUX
-
-/* Have MinGW32 */
-#undef ZMQ_HAVE_MINGW32
-
-/* Have NetBSD OS */
-#undef ZMQ_HAVE_NETBSD
-
-/* Have OpenBSD OS */
-#undef ZMQ_HAVE_OPENBSD
-
-/* Have OpenPGM extension */
-#undef ZMQ_HAVE_OPENPGM
-
-/* Have DarwinOSX OS */
-#undef ZMQ_HAVE_OSX
-
-/* Have QNX Neutrino OS */
-#undef ZMQ_HAVE_QNXNTO
-
-/* Have Solaris OS */
-#undef ZMQ_HAVE_SOLARIS
-
-/* Have Windows OS */
-#undef ZMQ_HAVE_WINDOWS
-
-/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
- <pthread.h>, or <semaphore.h> is not used. If the typedef was allowed, the
- #define below would cause a syntax error. */
-#undef _UINT32_T
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
-
-/* Define to `int' if <sys/types.h> does not define. */
-#undef ssize_t
-
-/* Define to the type of an unsigned integer type of width exactly 32 bits if
- such a type exists and the standard includes do not define it. */
-#undef uint32_t
-
-/* Define to empty if the keyword `volatile' does not work. Warning: valid
- code using `volatile' can become incorrect without. Disable with care. */
-#undef volatile
diff --git a/util/network/zeromq/src/poll.cpp b/util/network/zeromq/src/poll.cpp
deleted file mode 100644
index 1b203db0..00000000
--- a/util/network/zeromq/src/poll.cpp
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
- defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
- defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
- defined ZMQ_HAVE_NETBSD
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#include <poll.h>
-#include <algorithm>
-
-#include "poll.hpp"
-#include "err.hpp"
-#include "config.hpp"
-#include "i_poll_events.hpp"
-
-zmq::poll_t::poll_t () :
- retired (false),
- stopping (false)
-{
- // Get the limit on open file descriptors. Resize fds so that it
- // can hold all descriptors.
- rlimit rl;
- int rc = getrlimit (RLIMIT_NOFILE, &rl);
- errno_assert (rc != -1);
- fd_table.resize (rl.rlim_cur);
-
- for (rlim_t i = 0; i < rl.rlim_cur; i ++)
- fd_table [i].index = retired_fd;
-}
-
-zmq::poll_t::~poll_t ()
-{
- worker.stop ();
-
- // Make sure there are no fds registered on shutdown.
- zmq_assert (load.get () == 0);
-}
-
-zmq::poll_t::handle_t zmq::poll_t::add_fd (fd_t fd_, i_poll_events *events_)
-{
- pollfd pfd = {fd_, 0, 0};
- pollset.push_back (pfd);
- assert (fd_table [fd_].index == retired_fd);
-
- fd_table [fd_].index = pollset.size() - 1;
- fd_table [fd_].events = events_;
-
- // Increase the load metric of the thread.
- load.add (1);
-
- return fd_;
-}
-
-void zmq::poll_t::rm_fd (handle_t handle_)
-{
- fd_t index = fd_table [handle_].index;
- assert (index != retired_fd);
-
- // Mark the fd as unused.
- pollset [index].fd = retired_fd;
- fd_table [handle_].index = retired_fd;
- retired = true;
-
- // Decrease the load metric of the thread.
- load.sub (1);
-}
-
-void zmq::poll_t::set_pollin (handle_t handle_)
-{
- int index = fd_table [handle_].index;
- pollset [index].events |= POLLIN;
-}
-
-void zmq::poll_t::reset_pollin (handle_t handle_)
-{
- int index = fd_table [handle_].index;
- pollset [index].events &= ~((short) POLLIN);
-}
-
-void zmq::poll_t::set_pollout (handle_t handle_)
-{
- int index = fd_table [handle_].index;
- pollset [index].events |= POLLOUT;
-}
-
-void zmq::poll_t::reset_pollout (handle_t handle_)
-{
- int index = fd_table [handle_].index;
- pollset [index].events &= ~((short) POLLOUT);
-}
-
-void zmq::poll_t::add_timer (i_poll_events *events_)
-{
- timers.push_back (events_);
-}
-
-void zmq::poll_t::cancel_timer (i_poll_events *events_)
-{
- timers_t::iterator it = std::find (timers.begin (), timers.end (), events_);
- if (it != timers.end ())
- timers.erase (it);
-}
-
-int zmq::poll_t::get_load ()
-{
- return load.get ();
-}
-
-void zmq::poll_t::start ()
-{
- worker.start (worker_routine, this);
-}
-
-void zmq::poll_t::stop ()
-{
- stopping = true;
-}
-
-void zmq::poll_t::loop ()
-{
- while (!stopping) {
-
- // Wait for events.
- int rc = poll (&pollset [0], pollset.size (),
- timers.empty () ? -1 : max_timer_period);
- if (rc == -1 && errno == EINTR)
- continue;
- errno_assert (rc != -1);
-
- // Handle timer.
- if (!rc) {
-
- // Use local list of timers as timer handlers may fill new timers
- // into the original array.
- timers_t t;
- std::swap (timers, t);
-
- // Trigger all the timers.
- for (timers_t::iterator it = t.begin (); it != t.end (); it ++)
- (*it)->timer_event ();
-
- continue;
- }
-
- for (pollset_t::size_type i = 0; i != pollset.size (); i++) {
-
- zmq_assert (!(pollset [i].revents & POLLNVAL));
- if (pollset [i].fd == retired_fd)
- continue;
- if (pollset [i].revents & (POLLERR | POLLHUP))
- fd_table [pollset [i].fd].events->in_event ();
- if (pollset [i].fd == retired_fd)
- continue;
- if (pollset [i].revents & POLLOUT)
- fd_table [pollset [i].fd].events->out_event ();
- if (pollset [i].fd == retired_fd)
- continue;
- if (pollset [i].revents & POLLIN)
- fd_table [pollset [i].fd].events->in_event ();
- }
-
- // Clean up the pollset and update the fd_table accordingly.
- if (retired) {
- pollset_t::size_type i = 0;
- while (i < pollset.size ()) {
- if (pollset [i].fd == retired_fd)
- pollset.erase (pollset.begin () + i);
- else {
- fd_table [pollset [i].fd].index = i;
- i ++;
- }
- }
- retired = false;
- }
- }
-}
-
-void zmq::poll_t::worker_routine (void *arg_)
-{
- ((poll_t*) arg_)->loop ();
-}
-
-#endif
diff --git a/util/network/zeromq/src/poll.hpp b/util/network/zeromq/src/poll.hpp
deleted file mode 100644
index f4ae35ab..00000000
--- a/util/network/zeromq/src/poll.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_POLL_HPP_INCLUDED__
-#define __ZMQ_POLL_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
- defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
- defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
- defined ZMQ_HAVE_NETBSD
-
-#include <poll.h>
-#include <stddef.h>
-#include <vector>
-
-#include "fd.hpp"
-#include "thread.hpp"
-#include "atomic_counter.hpp"
-
-namespace zmq
-{
-
- // Implements socket polling mechanism using the POSIX.1-2001
- // poll() system call.
-
- class poll_t
- {
- public:
-
- typedef fd_t handle_t;
-
- poll_t ();
- ~poll_t ();
-
- // "poller" concept.
- handle_t add_fd (fd_t fd_, struct i_poll_events *events_);
- void rm_fd (handle_t handle_);
- void set_pollin (handle_t handle_);
- void reset_pollin (handle_t handle_);
- void set_pollout (handle_t handle_);
- void reset_pollout (handle_t handle_);
- void add_timer (struct i_poll_events *events_);
- void cancel_timer (struct i_poll_events *events_);
- int get_load ();
- void start ();
- void stop ();
-
- private:
-
- // Main worker thread routine.
- static void worker_routine (void *arg_);
-
- // Main event loop.
- void loop ();
-
- struct fd_entry_t
- {
- fd_t index;
- struct i_poll_events *events;
- };
-
- // This table stores data for registered descriptors.
- std::vector <fd_entry_t> fd_table;
-
- // Pollset to pass to the poll function.
- typedef std::vector <pollfd> pollset_t;
- pollset_t pollset;
-
- // If true, there's at least one retired event source.
- bool retired;
-
- // List of all the engines waiting for the timer event.
- typedef std::vector <struct i_poll_events*> timers_t;
- timers_t timers;
-
- // If true, thread is in the process of shutting down.
- bool stopping;
-
- // Handle of the physical thread doing the I/O work.
- thread_t worker;
-
- // Load of the poller. Currently number of file descriptors
- // registered with the poller.
- atomic_counter_t load;
-
- poll_t (const poll_t&);
- void operator = (const poll_t&);
- };
-
-}
-
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/poller.hpp b/util/network/zeromq/src/poller.hpp
deleted file mode 100644
index 3c29603e..00000000
--- a/util/network/zeromq/src/poller.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_POLLER_HPP_INCLUDED__
-#define __ZMQ_POLLER_HPP_INCLUDED__
-
-#include "epoll.hpp"
-#include "poll.hpp"
-#include "select.hpp"
-#include "devpoll.hpp"
-#include "kqueue.hpp"
-
-namespace zmq
-{
-
-#if defined ZMQ_FORCE_SELECT
- typedef select_t poller_t;
-#elif defined ZMQ_FORCE_POLL
- typedef poll_t poller_t;
-#elif defined ZMQ_FORCE_EPOLL
- typedef epoll_t poller_t;
-#elif defined ZMQ_FORCE_DEVPOLL
- typedef devpoll_t poller_t;
-#elif defined ZMQ_FORCE_KQUEUE
- typedef kqueue_t poller_t;
-#elif defined ZMQ_HAVE_LINUX
- typedef epoll_t poller_t;
-#elif defined ZMQ_HAVE_WINDOWS
- typedef select_t poller_t;
-#elif defined ZMQ_HAVE_FREEBSD
- typedef kqueue_t poller_t;
-#elif defined ZMQ_HAVE_OPENBSD
- typedef kqueue_t poller_t;
-#elif defined ZMQ_HAVE_NETBSD
- typedef kqueue_t poller_t;
-#elif defined ZMQ_HAVE_SOLARIS
- typedef devpoll_t poller_t;
-#elif defined ZMQ_HAVE_OSX
- typedef kqueue_t poller_t;
-#elif defined ZMQ_HAVE_QNXNTO
- typedef poll_t poller_t;
-#elif defined ZMQ_HAVE_AIX
- typedef poll_t poller_t;
-#elif defined ZMQ_HAVE_HPUX
- typedef devpoll_t poller_t;
-#elif defined ZMQ_HAVE_OPENVMS
- typedef select_t poller_t;
-#elif defined ZMQ_HAVE_CYGWIN
- typedef select_t poller_t;
-#else
-#error Unsupported platform
-#endif
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/prefix_tree.cpp b/util/network/zeromq/src/prefix_tree.cpp
deleted file mode 100644
index 51225d67..00000000
--- a/util/network/zeromq/src/prefix_tree.cpp
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdlib.h>
-
-#include <new>
-#include <algorithm>
-
-#include "platform.hpp"
-#if defined ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include "err.hpp"
-#include "prefix_tree.hpp"
-
-zmq::prefix_tree_t::prefix_tree_t () :
- refcnt (0),
- min (0),
- count (0)
-{
-}
-
-zmq::prefix_tree_t::~prefix_tree_t ()
-{
- if (count == 1)
- delete next.node;
- else if (count > 1) {
- for (unsigned char i = 0; i != count; ++i)
- if (next.table [i])
- delete next.table [i];
- free (next.table);
- }
-}
-
-void zmq::prefix_tree_t::add (unsigned char *prefix_, size_t size_)
-{
- // We are at the node corresponding to the prefix. We are done.
- if (!size_) {
- ++refcnt;
- return;
- }
-
- unsigned char c = *prefix_;
- if (c < min || c >= min + count) {
-
- // The character is out of range of currently handled
- // charcters. We have to extend the table.
- if (!count) {
- min = c;
- count = 1;
- next.node = NULL;
- }
- else if (count == 1) {
- unsigned char oldc = min;
- prefix_tree_t *oldp = next.node;
- count = (min < c ? c - min : min - c) + 1;
- next.table = (prefix_tree_t**)
- malloc (sizeof (prefix_tree_t*) * count);
- zmq_assert (next.table);
- for (unsigned char i = 0; i != count; ++i)
- next.table [i] = 0;
- min = std::min (min, c);
- next.table [oldc - min] = oldp;
- }
- else if (min < c) {
-
- // The new character is above the current character range.
- unsigned char old_count = count;
- count = c - min + 1;
- next.table = (prefix_tree_t**) realloc ((void*) next.table,
- sizeof (prefix_tree_t*) * count);
- zmq_assert (next.table);
- for (unsigned char i = old_count; i != count; i++)
- next.table [i] = NULL;
- }
- else {
-
- // The new character is below the current character range.
- unsigned char old_count = count;
- count = (min + old_count) - c;
- next.table = (prefix_tree_t**) realloc ((void*) next.table,
- sizeof (prefix_tree_t*) * count);
- zmq_assert (next.table);
- memmove (next.table + min - c, next.table,
- old_count * sizeof (prefix_tree_t*));
- for (unsigned char i = 0; i != min - c; i++)
- next.table [i] = NULL;
- min = c;
- }
- }
-
- // If next node does not exist, create one.
- if (count == 1) {
- if (!next.node) {
- next.node = new (std::nothrow) prefix_tree_t;
- zmq_assert (next.node);
- }
- next.node->add (prefix_ + 1, size_ - 1);
- }
- else {
- if (!next.table [c - min]) {
- next.table [c - min] = new (std::nothrow) prefix_tree_t;
- zmq_assert (next.table [c - min]);
- }
- next.table [c - min]->add (prefix_ + 1, size_ - 1);
- }
-}
-
-bool zmq::prefix_tree_t::rm (unsigned char *prefix_, size_t size_)
-{
- if (!size_) {
- if (!refcnt)
- return false;
- refcnt--;
- return true;
- }
-
- unsigned char c = *prefix_;
- if (!count || c < min || c >= min + count)
- return false;
-
- prefix_tree_t *next_node =
- count == 1 ? next.node : next.table [c - min];
-
- if (!next_node)
- return false;
-
- return next_node->rm (prefix_ + 1, size_ - 1);
-}
-
-bool zmq::prefix_tree_t::check (unsigned char *data_, size_t size_)
-{
- // This function is on critical path. It deliberately doesn't use
- // recursion to get a bit better performance.
- prefix_tree_t *current = this;
- while (true) {
-
- // We've found a corresponding subscription!
- if (current->refcnt)
- return true;
-
- // We've checked all the data and haven't found matching subscription.
- if (!size_)
- return false;
-
- // If there's no corresponding slot for the first character
- // of the prefix, the message does not match.
- unsigned char c = *data_;
- if (c < current->min || c >= current->min + current->count)
- return false;
-
- // Move to the next character.
- if (current->count == 1)
- current = current->next.node;
- else {
- current = current->next.table [c - current->min];
- if (!current)
- return false;
- }
- data_++;
- size_--;
- }
-}
diff --git a/util/network/zeromq/src/prefix_tree.hpp b/util/network/zeromq/src/prefix_tree.hpp
deleted file mode 100644
index 53c7c183..00000000
--- a/util/network/zeromq/src/prefix_tree.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PREFIX_TREE_HPP_INCLUDED__
-#define __ZMQ_PREFIX_TREE_HPP_INCLUDED__
-
-#include <stddef.h>
-
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- class prefix_tree_t
- {
- public:
-
- prefix_tree_t ();
- ~prefix_tree_t ();
-
- void add (unsigned char *prefix_, size_t size_);
- bool rm (unsigned char *prefix_, size_t size_);
- bool check (unsigned char *data_, size_t size_);
-
- private:
-
- uint32_t refcnt;
- unsigned char min;
- unsigned char count;
- union {
- class prefix_tree_t *node;
- class prefix_tree_t **table;
- } next;
- };
-
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/pub.cpp b/util/network/zeromq/src/pub.cpp
deleted file mode 100644
index 4e73b194..00000000
--- a/util/network/zeromq/src/pub.cpp
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "pub.hpp"
-#include "err.hpp"
-#include "msg_content.hpp"
-#include "pipe.hpp"
-
-zmq::pub_t::pub_t (class app_thread_t *parent_) :
- socket_base_t (parent_),
- active (0)
-{
- options.requires_in = false;
- options.requires_out = true;
-}
-
-zmq::pub_t::~pub_t ()
-{
- for (pipes_t::size_type i = 0; i != pipes.size (); i++)
- pipes [i]->term ();
- pipes.clear ();
-}
-
-void zmq::pub_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (!inpipe_);
- pipes.push_back (outpipe_);
- pipes.swap (active, pipes.size () - 1);
- active++;
-}
-
-void zmq::pub_t::xdetach_inpipe (class reader_t *pipe_)
-{
- zmq_assert (false);
-}
-
-void zmq::pub_t::xdetach_outpipe (class writer_t *pipe_)
-{
- // Remove the pipe from the list; adjust number of active pipes
- // accordingly.
- if (pipes.index (pipe_) < active)
- active--;
- pipes.erase (pipe_);
-}
-
-void zmq::pub_t::xkill (class reader_t *pipe_)
-{
- zmq_assert (false);
-}
-
-void zmq::pub_t::xrevive (class reader_t *pipe_)
-{
- zmq_assert (false);
-}
-
-void zmq::pub_t::xrevive (class writer_t *pipe_)
-{
- // Move the pipe to the list of active pipes.
- pipes.swap (pipes.index (pipe_), active);
- active++;
-}
-
-int zmq::pub_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- errno = EINVAL;
- return -1;
-}
-
-int zmq::pub_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- // If there are no active pipes available, simply drop the message.
- if (active == 0) {
- int rc = zmq_msg_close (msg_);
- zmq_assert (rc == 0);
- rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
- return 0;
- }
-
- msg_content_t *content = (msg_content_t*) msg_->content;
-
- // For VSMs the copying is straighforward.
- if (content == (msg_content_t*) ZMQ_VSM) {
- for (pipes_t::size_type i = 0; i != active;)
- if (write (pipes [i], msg_))
- i++;
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
- return 0;
- }
-
- // Optimisation for the case when there's only a single pipe
- // to send the message to - no refcount adjustment i.e. no atomic
- // operations are needed.
- if (active == 1) {
- if (!write (pipes [0], msg_)) {
- int rc = zmq_msg_close (msg_);
- zmq_assert (rc == 0);
- }
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
- return 0;
- }
-
- // There are at least 2 destinations for the message. That means we have
- // to deal with reference counting. First add N-1 references to
- // the content (we are holding one reference anyway, that's why -1).
- if (msg_->flags & ZMQ_MSG_SHARED)
- content->refcnt.add (active - 1);
- else {
- content->refcnt.set (active);
- msg_->flags |= ZMQ_MSG_SHARED;
- }
-
- // Push the message to all destinations.
- for (pipes_t::size_type i = 0; i != active;) {
- if (!write (pipes [i], msg_))
- content->refcnt.sub (1);
- else
- i++;
- }
-
- // Detach the original message from the data buffer.
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
-
- return 0;
-}
-
-int zmq::pub_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- errno = ENOTSUP;
- return -1;
-}
-
-bool zmq::pub_t::xhas_in ()
-{
- return false;
-}
-
-bool zmq::pub_t::xhas_out ()
-{
- return true;
-}
-
-bool zmq::pub_t::write (class writer_t *pipe_, zmq_msg_t *msg_)
-{
- if (!pipe_->write (msg_)) {
- active--;
- pipes.swap (pipes.index (pipe_), active);
- return false;
- }
- if (!(msg_->flags & ZMQ_MSG_MORE))
- pipe_->flush ();
- return true;
-}
-
diff --git a/util/network/zeromq/src/pub.hpp b/util/network/zeromq/src/pub.hpp
deleted file mode 100644
index ac3924a2..00000000
--- a/util/network/zeromq/src/pub.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PUB_HPP_INCLUDED__
-#define __ZMQ_PUB_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-#include "yarray.hpp"
-
-namespace zmq
-{
-
- class pub_t : public socket_base_t
- {
- public:
-
- pub_t (class app_thread_t *parent_);
- ~pub_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- // Write the message to the pipe. Make the pipe inactive if writing
- // fails. In such a case false is returned.
- bool write (class writer_t *pipe_, zmq_msg_t *msg_);
-
- // Outbound pipes, i.e. those the socket is sending messages to.
- typedef yarray_t <class writer_t> pipes_t;
- pipes_t pipes;
-
- // Number of active pipes. All the active pipes are located at the
- // beginning of the pipes array.
- pipes_t::size_type active;
-
- pub_t (const pub_t&);
- void operator = (const pub_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/pull.cpp b/util/network/zeromq/src/pull.cpp
deleted file mode 100644
index b2413ee4..00000000
--- a/util/network/zeromq/src/pull.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "pull.hpp"
-#include "err.hpp"
-
-zmq::pull_t::pull_t (class app_thread_t *parent_) :
- socket_base_t (parent_)
-{
- options.requires_in = true;
- options.requires_out = false;
-}
-
-zmq::pull_t::~pull_t ()
-{
-}
-
-void zmq::pull_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (inpipe_ && !outpipe_);
- fq.attach (inpipe_);
-}
-
-void zmq::pull_t::xdetach_inpipe (class reader_t *pipe_)
-{
- zmq_assert (pipe_);
- fq.detach (pipe_);
-}
-
-void zmq::pull_t::xdetach_outpipe (class writer_t *pipe_)
-{
- // There are no outpipes, so this function shouldn't be called at all.
- zmq_assert (false);
-}
-
-void zmq::pull_t::xkill (class reader_t *pipe_)
-{
- fq.kill (pipe_);
-}
-
-void zmq::pull_t::xrevive (class reader_t *pipe_)
-{
- fq.revive (pipe_);
-}
-
-void zmq::pull_t::xrevive (class writer_t *pipe_)
-{
- zmq_assert (false);
-}
-
-int zmq::pull_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- // No special options for this socket type.
- errno = EINVAL;
- return -1;
-}
-
-int zmq::pull_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- errno = ENOTSUP;
- return -1;
-}
-
-int zmq::pull_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- return fq.recv (msg_, flags_);
-}
-
-bool zmq::pull_t::xhas_in ()
-{
- return fq.has_in ();
-}
-
-bool zmq::pull_t::xhas_out ()
-{
- return false;
-}
-
diff --git a/util/network/zeromq/src/pull.hpp b/util/network/zeromq/src/pull.hpp
deleted file mode 100644
index 7f249e90..00000000
--- a/util/network/zeromq/src/pull.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PULL_HPP_INCLUDED__
-#define __ZMQ_PULL_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-#include "fq.hpp"
-
-namespace zmq
-{
-
- class pull_t : public socket_base_t
- {
- public:
-
- pull_t (class app_thread_t *parent_);
- ~pull_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- // Fair queueing object for inbound pipes.
- fq_t fq;
-
- pull_t (const pull_t&);
- void operator = (const pull_t&);
-
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/push.cpp b/util/network/zeromq/src/push.cpp
deleted file mode 100644
index 522101f1..00000000
--- a/util/network/zeromq/src/push.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "push.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-
-zmq::push_t::push_t (class app_thread_t *parent_) :
- socket_base_t (parent_)
-{
- options.requires_in = false;
- options.requires_out = true;
-}
-
-zmq::push_t::~push_t ()
-{
-}
-
-void zmq::push_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (!inpipe_ && outpipe_);
- lb.attach (outpipe_);
-}
-
-void zmq::push_t::xdetach_inpipe (class reader_t *pipe_)
-{
- // There are no inpipes, so this function shouldn't be called at all.
- zmq_assert (false);
-}
-
-void zmq::push_t::xdetach_outpipe (class writer_t *pipe_)
-{
- zmq_assert (pipe_);
- lb.detach (pipe_);
-}
-
-void zmq::push_t::xkill (class reader_t *pipe_)
-{
- // There are no inpipes, so this function shouldn't be called at all.
- zmq_assert (false);
-}
-
-void zmq::push_t::xrevive (class reader_t *pipe_)
-{
- // There are no inpipes, so this function shouldn't be called at all.
- zmq_assert (false);
-}
-
-void zmq::push_t::xrevive (class writer_t *pipe_)
-{
- lb.revive (pipe_);
-}
-
-int zmq::push_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- // No special option for this socket type.
- errno = EINVAL;
- return -1;
-}
-
-int zmq::push_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- return lb.send (msg_, flags_);
-}
-
-int zmq::push_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- errno = ENOTSUP;
- return -1;
-}
-
-bool zmq::push_t::xhas_in ()
-{
- return false;
-}
-
-bool zmq::push_t::xhas_out ()
-{
- return lb.has_out ();
-}
-
diff --git a/util/network/zeromq/src/push.hpp b/util/network/zeromq/src/push.hpp
deleted file mode 100644
index b3c8d87e..00000000
--- a/util/network/zeromq/src/push.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_PUSH_HPP_INCLUDED__
-#define __ZMQ_PUSH_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-#include "lb.hpp"
-
-namespace zmq
-{
-
- class push_t : public socket_base_t
- {
- public:
-
- push_t (class app_thread_t *parent_);
- ~push_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- // Load balancer managing the outbound pipes.
- lb_t lb;
-
- push_t (const push_t&);
- void operator = (const push_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/queue.cpp b/util/network/zeromq/src/queue.cpp
deleted file mode 100644
index 311a8c1b..00000000
--- a/util/network/zeromq/src/queue.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stddef.h>
-
-#include "../include/zmq.h"
-
-#include "queue.hpp"
-#include "socket_base.hpp"
-#include "err.hpp"
-
-int zmq::queue (class socket_base_t *insocket_,
- class socket_base_t *outsocket_)
-{
- zmq_msg_t msg;
- int rc = zmq_msg_init (&msg);
- zmq_assert (rc == 0);
-
- int64_t more;
- size_t moresz;
-
- zmq_pollitem_t items [2];
- items [0].socket = insocket_;
- items [0].fd = 0;
- items [0].events = ZMQ_POLLIN;
- items [0].revents = 0;
- items [1].socket = outsocket_;
- items [1].fd = 0;
- items [1].events = ZMQ_POLLIN;
- items [1].revents = 0;
-
- while (true) {
-
- // Wait while there are either requests or replies to process.
- rc = zmq_poll (&items [0], 2, -1);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- // The algorithm below asumes ratio of request and replies processed
- // under full load to be 1:1. Although processing requests replies
- // first is tempting it is suspectible to DoS attacks (overloading
- // the system with unsolicited replies).
-
- // Process a request.
- if (items [0].revents & ZMQ_POLLIN) {
- while (true) {
-
- rc = insocket_->recv (&msg, 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- moresz = sizeof (more);
- rc = insocket_->getsockopt (ZMQ_RCVMORE, &more, &moresz);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- rc = outsocket_->send (&msg, more ? ZMQ_SNDMORE : 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- if (!more)
- break;
- }
- }
-
- // Process a reply.
- if (items [1].revents & ZMQ_POLLIN) {
- while (true) {
-
- rc = outsocket_->recv (&msg, 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- moresz = sizeof (more);
- rc = outsocket_->getsockopt (ZMQ_RCVMORE, &more, &moresz);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- rc = insocket_->send (&msg, more ? ZMQ_SNDMORE : 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- if (!more)
- break;
- }
- }
-
- }
-
- return 0;
-}
-
diff --git a/util/network/zeromq/src/queue.hpp b/util/network/zeromq/src/queue.hpp
deleted file mode 100644
index dc968cbb..00000000
--- a/util/network/zeromq/src/queue.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_QUEUE_HPP_INCLUDED__
-#define __ZMQ_QUEUE_HPP_INCLUDED__
-
-namespace zmq
-{
-
- int queue (class socket_base_t *insocket_,
- class socket_base_t *outsocket_);
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/rep.cpp b/util/network/zeromq/src/rep.cpp
deleted file mode 100644
index 34b77c40..00000000
--- a/util/network/zeromq/src/rep.cpp
+++ /dev/null
@@ -1,280 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "rep.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-
-zmq::rep_t::rep_t (class app_thread_t *parent_) :
- socket_base_t (parent_),
- active (0),
- current (0),
- sending_reply (false),
- more (false),
- reply_pipe (NULL)
-{
- options.requires_in = true;
- options.requires_out = true;
-
- // We don't need immediate connect. We'll be able to send messages
- // (replies) only when connection is established and thus requests
- // can arrive anyway.
- options.immediate_connect = false;
-}
-
-zmq::rep_t::~rep_t ()
-{
-}
-
-void zmq::rep_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (inpipe_ && outpipe_);
- zmq_assert (in_pipes.size () == out_pipes.size ());
-
- in_pipes.push_back (inpipe_);
- in_pipes.swap (active, in_pipes.size () - 1);
- out_pipes.push_back (outpipe_);
- out_pipes.swap (active, out_pipes.size () - 1);
- active++;
-}
-
-void zmq::rep_t::xdetach_inpipe (class reader_t *pipe_)
-{
- zmq_assert (sending_reply || !more || in_pipes [current] != pipe_);
-
- zmq_assert (pipe_);
- zmq_assert (in_pipes.size () == out_pipes.size ());
-
- in_pipes_t::size_type index = in_pipes.index (pipe_);
-
- if (index < active) {
- active--;
- if (current == active)
- current = 0;
- }
-
- if (out_pipes [index])
- out_pipes [index]->term ();
- in_pipes.erase (index);
- out_pipes.erase (index);
-}
-
-void zmq::rep_t::xdetach_outpipe (class writer_t *pipe_)
-{
- zmq_assert (pipe_);
- zmq_assert (in_pipes.size () == out_pipes.size ());
-
- out_pipes_t::size_type index = out_pipes.index (pipe_);
-
- // If the connection we've got the request from disconnects,
- // there's nowhere to send the reply. Forget about the reply pipe.
- // Once the reply is sent it will be dropped.
- if (sending_reply && pipe_ == reply_pipe)
- reply_pipe = NULL;
-
- if (out_pipes.index (pipe_) < active) {
- active--;
- if (current == active)
- current = 0;
- }
-
- if (in_pipes [index])
- in_pipes [index]->term ();
- in_pipes.erase (index);
- out_pipes.erase (index);
-}
-
-void zmq::rep_t::xkill (class reader_t *pipe_)
-{
- // Move the pipe to the list of inactive pipes.
- in_pipes_t::size_type index = in_pipes.index (pipe_);
- active--;
- in_pipes.swap (index, active);
- out_pipes.swap (index, active);
-}
-
-void zmq::rep_t::xrevive (class reader_t *pipe_)
-{
- // Move the pipe to the list of active pipes.
- in_pipes_t::size_type index = in_pipes.index (pipe_);
- in_pipes.swap (index, active);
- out_pipes.swap (index, active);
- active++;
-}
-
-void zmq::rep_t::xrevive (class writer_t *pipe_)
-{
-}
-
-int zmq::rep_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- errno = EINVAL;
- return -1;
-}
-
-int zmq::rep_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- if (!sending_reply) {
- errno = EFSM;
- return -1;
- }
-
- if (reply_pipe) {
-
- // Push message to the reply pipe.
- bool written = reply_pipe->write (msg_);
- zmq_assert (!more || written);
-
- // The pipe is full...
- // When this happens, we simply return an error.
- // This makes REP sockets vulnerable to DoS attack when
- // misbehaving requesters stop collecting replies.
- // TODO: Tear down the underlying connection (?)
- if (!written) {
- errno = EAGAIN;
- return -1;
- }
-
- more = msg_->flags & ZMQ_MSG_MORE;
- }
- else {
-
- // If the requester have disconnected in the meantime, drop the reply.
- more = msg_->flags & ZMQ_MSG_MORE;
- zmq_msg_close (msg_);
- }
-
- // Flush the reply to the requester.
- if (!more) {
- if (reply_pipe)
- reply_pipe->flush ();
- sending_reply = false;
- reply_pipe = NULL;
- }
-
- // Detach the message from the data buffer.
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
-
- return 0;
-}
-
-int zmq::rep_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- // If we are in middle of sending a reply, we cannot receive next request.
- if (sending_reply) {
- errno = EFSM;
- return -1;
- }
-
- // Deallocate old content of the message.
- zmq_msg_close (msg_);
-
- // We haven't started reading a request yet...
- if (!more) {
-
- // Round-robin over the pipes to get next message.
- int count;
- for (count = active; count != 0; count--) {
- if (in_pipes [current]->read (msg_))
- break;
- current++;
- if (current >= active)
- current = 0;
- }
-
- // No message is available. Initialise the output parameter
- // to be a 0-byte message.
- if (count == 0) {
- zmq_msg_init (msg_);
- errno = EAGAIN;
- return -1;
- }
-
- // We are aware of a new message now. Setup the reply pipe.
- reply_pipe = out_pipes [current];
-
- // Copy the routing info to the reply pipe.
- while (true) {
-
- // Push message to the reply pipe.
- // TODO: What if the pipe is full?
- // Tear down the underlying connection?
- bool written = reply_pipe->write (msg_);
- zmq_assert (written);
-
- // Message part of zero size delimits the traceback stack.
- if (zmq_msg_size (msg_) == 0)
- break;
-
- // Get next part of the message.
- bool fetched = in_pipes [current]->read (msg_);
- zmq_assert (fetched);
- }
- }
-
- // Now the routing info is processed. Get the first part
- // of the message payload and exit.
- bool fetched = in_pipes [current]->read (msg_);
- zmq_assert (fetched);
- more = msg_->flags & ZMQ_MSG_MORE;
- if (!more) {
- current++;
- if (current >= active)
- current = 0;
- sending_reply = true;
- }
- return 0;
-}
-
-bool zmq::rep_t::xhas_in ()
-{
- if (sending_reply)
- return false;
-
- if (more)
- return true;
-
- for (int count = active; count != 0; count--) {
- if (in_pipes [current]->check_read ())
- return !sending_reply;
- current++;
- if (current >= active)
- current = 0;
- }
-
- return false;
-}
-
-bool zmq::rep_t::xhas_out ()
-{
- if (!sending_reply)
- return false;
-
- if (more)
- return true;
-
- // TODO: No check for write here...
- return sending_reply;
-}
-
diff --git a/util/network/zeromq/src/rep.hpp b/util/network/zeromq/src/rep.hpp
deleted file mode 100644
index aef43184..00000000
--- a/util/network/zeromq/src/rep.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_REP_HPP_INCLUDED__
-#define __ZMQ_REP_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-#include "yarray.hpp"
-
-namespace zmq
-{
-
- class rep_t : public socket_base_t
- {
- public:
-
- rep_t (class app_thread_t *parent_);
- ~rep_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- // List in outbound and inbound pipes. Note that the two lists are
- // always in sync. I.e. outpipe with index N communicates with the
- // same session as inpipe with index N.
- typedef yarray_t <class writer_t> out_pipes_t;
- out_pipes_t out_pipes;
- typedef yarray_t <class reader_t> in_pipes_t;
- in_pipes_t in_pipes;
-
- // Number of active inpipes. All the active inpipes are located at the
- // beginning of the in_pipes array.
- in_pipes_t::size_type active;
-
- // Index of the next inbound pipe to read a request from.
- in_pipes_t::size_type current;
-
- // If true, request was already received and reply wasn't completely
- // sent yet.
- bool sending_reply;
-
- // True, if message processed at the moment (either sent or received)
- // is processed only partially.
- bool more;
-
- // Pipe we are going to send reply to.
- class writer_t *reply_pipe;
-
- rep_t (const rep_t&);
- void operator = (const rep_t&);
-
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/req.cpp b/util/network/zeromq/src/req.cpp
deleted file mode 100644
index f3695a29..00000000
--- a/util/network/zeromq/src/req.cpp
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "req.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-
-zmq::req_t::req_t (class app_thread_t *parent_) :
- socket_base_t (parent_),
- active (0),
- current (0),
- receiving_reply (false),
- reply_pipe_active (false),
- more (false),
- reply_pipe (NULL)
-{
- options.requires_in = true;
- options.requires_out = true;
-}
-
-zmq::req_t::~req_t ()
-{
-}
-
-void zmq::req_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (inpipe_ && outpipe_);
- zmq_assert (in_pipes.size () == out_pipes.size ());
-
- in_pipes.push_back (inpipe_);
- in_pipes.swap (active, in_pipes.size () - 1);
-
- out_pipes.push_back (outpipe_);
- out_pipes.swap (active, out_pipes.size () - 1);
-
- active++;
-}
-
-void zmq::req_t::xdetach_inpipe (class reader_t *pipe_)
-{
- zmq_assert (!receiving_reply || !more || reply_pipe != pipe_);
-
- zmq_assert (pipe_);
- zmq_assert (in_pipes.size () == out_pipes.size ());
-
- // TODO: The pipe we are awaiting the reply from is detached. What now?
- // Return ECONNRESET from subsequent recv?
- if (receiving_reply && pipe_ == reply_pipe) {
- zmq_assert (false);
- }
-
- in_pipes_t::size_type index = in_pipes.index (pipe_);
-
- if (out_pipes [index])
- out_pipes [index]->term ();
- in_pipes.erase (index);
- out_pipes.erase (index);
- if (index < active) {
- active--;
- if (current == active)
- current = 0;
- }
-}
-
-void zmq::req_t::xdetach_outpipe (class writer_t *pipe_)
-{
- zmq_assert (receiving_reply || !more || out_pipes [current] != pipe_);
-
- zmq_assert (pipe_);
- zmq_assert (in_pipes.size () == out_pipes.size ());
-
- out_pipes_t::size_type index = out_pipes.index (pipe_);
-
- if (in_pipes [index])
- in_pipes [index]->term ();
- in_pipes.erase (index);
- out_pipes.erase (index);
- if (index < active) {
- active--;
- if (current == active)
- current = 0;
- }
-}
-
-void zmq::req_t::xkill (class reader_t *pipe_)
-{
- zmq_assert (receiving_reply);
- zmq_assert (pipe_ == reply_pipe);
-
- reply_pipe_active = false;
-}
-
-void zmq::req_t::xrevive (class reader_t *pipe_)
-{
- // TODO: Actually, misbehaving peer can cause this kind of thing.
- // Handle it decently, presumably kill the offending connection.
- zmq_assert (pipe_ == reply_pipe);
- reply_pipe_active = true;
-}
-
-void zmq::req_t::xrevive (class writer_t *pipe_)
-{
- out_pipes_t::size_type index = out_pipes.index (pipe_);
- zmq_assert (index >= active);
-
- if (in_pipes [index] != NULL) {
- in_pipes.swap (index, active);
- out_pipes.swap (index, active);
- active++;
- }
-}
-
-int zmq::req_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- errno = EINVAL;
- return -1;
-}
-
-int zmq::req_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- // If we've sent a request and we still haven't got the reply,
- // we can't send another request.
- if (receiving_reply) {
- errno = EFSM;
- return -1;
- }
-
- while (active > 0) {
- if (out_pipes [current]->check_write ())
- break;
-
- zmq_assert (!more);
- active--;
- if (current < active) {
- in_pipes.swap (current, active);
- out_pipes.swap (current, active);
- }
- else
- current = 0;
- }
-
- if (active == 0) {
- errno = EAGAIN;
- return -1;
- }
-
- // If we are starting to send the request, generate a prefix.
- if (!more) {
- zmq_msg_t prefix;
- int rc = zmq_msg_init (&prefix);
- zmq_assert (rc == 0);
- prefix.flags |= ZMQ_MSG_MORE;
- bool written = out_pipes [current]->write (&prefix);
- zmq_assert (written);
- }
-
- // Push the message to the selected pipe.
- bool written = out_pipes [current]->write (msg_);
- zmq_assert (written);
- more = msg_->flags & ZMQ_MSG_MORE;
- if (!more) {
- out_pipes [current]->flush ();
- receiving_reply = true;
- reply_pipe = in_pipes [current];
-
- // We can safely assume that the reply pipe is active as the last time
- // we've used it we've read the reply and haven't tried to read from it
- // anymore.
- reply_pipe_active = true;
-
- // Move to the next pipe (load-balancing).
- current = (current + 1) % active;
- }
-
- // Detach the message from the data buffer.
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
-
- return 0;
-}
-
-int zmq::req_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- // Deallocate old content of the message.
- int rc = zmq_msg_close (msg_);
- zmq_assert (rc == 0);
-
- // If request wasn't send, we can't wait for reply.
- if (!receiving_reply) {
- zmq_msg_init (msg_);
- errno = EFSM;
- return -1;
- }
-
- // Get the reply from the reply pipe.
- if (!reply_pipe_active || !reply_pipe->read (msg_)) {
- zmq_msg_init (msg_);
- errno = EAGAIN;
- return -1;
- }
-
- // If we are starting to receive new reply, check whether prefix
- // is well-formed and drop it.
- if (!more) {
- zmq_assert (msg_->flags & ZMQ_MSG_MORE);
- zmq_assert (zmq_msg_size (msg_) == 0);
- rc = zmq_msg_close (msg_);
- zmq_assert (rc == 0);
-
- // Get the actual reply.
- bool recvd = reply_pipe->read (msg_);
- zmq_assert (recvd);
- }
-
- // If this was last part of the reply, switch to request phase.
- more = msg_->flags & ZMQ_MSG_MORE;
- if (!more) {
- receiving_reply = false;
- reply_pipe = NULL;
- }
-
- return 0;
-}
-
-bool zmq::req_t::xhas_in ()
-{
- if (receiving_reply && more)
- return true;
-
- if (!receiving_reply || !reply_pipe_active)
- return false;
-
- zmq_assert (reply_pipe);
- if (!reply_pipe->check_read ()) {
- reply_pipe_active = false;
- return false;
- }
-
- return true;
-}
-
-bool zmq::req_t::xhas_out ()
-{
- if (!receiving_reply && more)
- return true;
-
- if (receiving_reply)
- return false;
-
- while (active > 0) {
- if (out_pipes [current]->check_write ())
- return true;;
-
- active--;
- if (current < active) {
- in_pipes.swap (current, active);
- out_pipes.swap (current, active);
- }
- else
- current = 0;
- }
-
- return false;
-}
-
-
diff --git a/util/network/zeromq/src/req.hpp b/util/network/zeromq/src/req.hpp
deleted file mode 100644
index 5ab7bca0..00000000
--- a/util/network/zeromq/src/req.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_REQ_HPP_INCLUDED__
-#define __ZMQ_REQ_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-#include "yarray.hpp"
-
-namespace zmq
-{
-
- class req_t : public socket_base_t
- {
- public:
-
- req_t (class app_thread_t *parent_);
- ~req_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- // List in outbound and inbound pipes. Note that the two lists are
- // always in sync. I.e. outpipe with index N communicates with the
- // same session as inpipe with index N.
- //
- // TODO: Once we have queue limits in place, list of active outpipes
- // is to be held (presumably by stacking active outpipes at
- // the beginning of the array). We don't have to do the same thing for
- // inpipes, because we know which pipe we want to read the
- // reply from.
- typedef yarray_t <class writer_t> out_pipes_t;
- out_pipes_t out_pipes;
- typedef yarray_t <class reader_t> in_pipes_t;
- in_pipes_t in_pipes;
-
- // Number of active pipes.
- size_t active;
-
- // Req_t load-balances the requests - 'current' points to the session
- // that's processing the request at the moment.
- out_pipes_t::size_type current;
-
- // If true, request was already sent and reply wasn't received yet or
- // was raceived partially.
- bool receiving_reply;
-
- // True, if read can be attempted from the reply pipe.
- bool reply_pipe_active;
-
- // True, if message processed at the moment (either sent or received)
- // is processed only partially.
- bool more;
-
- // Pipe we are awaiting the reply from.
- class reader_t *reply_pipe;
-
- req_t (const req_t&);
- void operator = (const req_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/select.cpp b/util/network/zeromq/src/select.cpp
deleted file mode 100644
index be5cd47c..00000000
--- a/util/network/zeromq/src/select.cpp
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-
-#include <string.h>
-#include <algorithm>
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "winsock2.h"
-#elif defined ZMQ_HAVE_HPUX
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#elif defined ZMQ_HAVE_OPENVMS
-#include <sys/types.h>
-#include <sys/time.h>
-#else
-#include <sys/select.h>
-#endif
-
-#include "select.hpp"
-#include "err.hpp"
-#include "config.hpp"
-#include "i_poll_events.hpp"
-
-zmq::select_t::select_t () :
- maxfd (retired_fd),
- retired (false),
- stopping (false)
-{
- // Clear file descriptor sets.
- FD_ZERO (&source_set_in);
- FD_ZERO (&source_set_out);
- FD_ZERO (&source_set_err);
-}
-
-zmq::select_t::~select_t ()
-{
- worker.stop ();
-
- // Make sure there are no fds registered on shutdown.
- zmq_assert (load.get () == 0);
-}
-
-zmq::select_t::handle_t zmq::select_t::add_fd (fd_t fd_, i_poll_events *events_)
-{
- // Store the file descriptor.
- fd_entry_t entry = {fd_, events_};
- fds.push_back (entry);
-
- // Start polling on errors.
- FD_SET (fd_, &source_set_err);
-
- // Adjust maxfd if necessary.
- if (fd_ > maxfd)
- maxfd = fd_;
-
- // Increase the load metric of the thread.
- load.add (1);
-
- return fd_;
-}
-
-void zmq::select_t::rm_fd (handle_t handle_)
-{
- // Mark the descriptor as retired.
- fd_set_t::iterator it;
- for (it = fds.begin (); it != fds.end (); it ++)
- if (it->fd == handle_)
- break;
- zmq_assert (it != fds.end ());
- it->fd = retired_fd;
- retired = true;
-
- // Stop polling on the descriptor.
- FD_CLR (handle_, &source_set_in);
- FD_CLR (handle_, &source_set_out);
- FD_CLR (handle_, &source_set_err);
-
- // Discard all events generated on this file descriptor.
- FD_CLR (handle_, &readfds);
- FD_CLR (handle_, &writefds);
- FD_CLR (handle_, &exceptfds);
-
- // Adjust the maxfd attribute if we have removed the
- // highest-numbered file descriptor.
- if (handle_ == maxfd) {
- maxfd = retired_fd;
- for (fd_set_t::iterator it = fds.begin (); it != fds.end (); it ++)
- if (it->fd > maxfd)
- maxfd = it->fd;
- }
-
- // Decrease the load metric of the thread.
- load.sub (1);
-}
-
-void zmq::select_t::set_pollin (handle_t handle_)
-{
- FD_SET (handle_, &source_set_in);
-}
-
-void zmq::select_t::reset_pollin (handle_t handle_)
-{
- FD_CLR (handle_, &source_set_in);
-}
-
-void zmq::select_t::set_pollout (handle_t handle_)
-{
- FD_SET (handle_, &source_set_out);
-}
-
-void zmq::select_t::reset_pollout (handle_t handle_)
-{
- FD_CLR (handle_, &source_set_out);
-}
-
-void zmq::select_t::add_timer (i_poll_events *events_)
-{
- timers.push_back (events_);
-}
-
-void zmq::select_t::cancel_timer (i_poll_events *events_)
-{
- timers_t::iterator it = std::find (timers.begin (), timers.end (), events_);
- if (it != timers.end ())
- timers.erase (it);
-}
-
-int zmq::select_t::get_load ()
-{
- return load.get ();
-}
-
-void zmq::select_t::start ()
-{
- worker.start (worker_routine, this);
-}
-
-void zmq::select_t::stop ()
-{
- stopping = true;
-}
-
-void zmq::select_t::loop ()
-{
- while (!stopping) {
-
- // Intialise the pollsets.
- memcpy (&readfds, &source_set_in, sizeof source_set_in);
- memcpy (&writefds, &source_set_out, sizeof source_set_out);
- memcpy (&exceptfds, &source_set_err, sizeof source_set_err);
-
- // Compute the timout interval. Select is free to overwrite the
- // value so we have to compute it each time anew.
- timeval timeout = {max_timer_period / 1000,
- (max_timer_period % 1000) * 1000};
-
- // Wait for events.
- int rc = select (maxfd + 1, &readfds, &writefds, &exceptfds,
- timers.empty () ? NULL : &timeout);
-
-#ifdef ZMQ_HAVE_WINDOWS
- wsa_assert (rc != SOCKET_ERROR);
-#else
- if (rc == -1 && errno == EINTR)
- continue;
- errno_assert (rc != -1);
-#endif
-
- // Handle timer.
- if (!rc) {
-
- // Use local list of timers as timer handlers may fill new timers
- // into the original array.
- timers_t t;
- std::swap (timers, t);
-
- // Trigger all the timers.
- for (timers_t::iterator it = t.begin (); it != t.end (); it ++)
- (*it)->timer_event ();
-
- continue;
- }
-
- for (fd_set_t::size_type i = 0; i < fds.size (); i ++) {
- if (fds [i].fd == retired_fd)
- continue;
- if (FD_ISSET (fds [i].fd, &exceptfds))
- fds [i].events->in_event ();
- if (fds [i].fd == retired_fd)
- continue;
- if (FD_ISSET (fds [i].fd, &writefds))
- fds [i].events->out_event ();
- if (fds [i].fd == retired_fd)
- continue;
- if (FD_ISSET (fds [i].fd, &readfds))
- fds [i].events->in_event ();
- }
-
- // Destroy retired event sources.
- if (retired) {
- for (fd_set_t::size_type i = 0; i < fds.size (); i ++) {
- if (fds [i].fd == retired_fd) {
- fds.erase (fds.begin () + i);
- i --;
- }
- }
- retired = false;
- }
- }
-}
-
-void zmq::select_t::worker_routine (void *arg_)
-{
- ((select_t*) arg_)->loop ();
-}
diff --git a/util/network/zeromq/src/select.hpp b/util/network/zeromq/src/select.hpp
deleted file mode 100644
index 01e9fa89..00000000
--- a/util/network/zeromq/src/select.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_SELECT_HPP_INCLUDED__
-#define __ZMQ_SELECT_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#include <stddef.h>
-#include <vector>
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "winsock2.h"
-#elif defined ZMQ_HAVE_OPENVMS
-#include <sys/types.h>
-#include <sys/time.h>
-#else
-#include <sys/select.h>
-#endif
-
-#include "fd.hpp"
-#include "thread.hpp"
-#include "atomic_counter.hpp"
-
-namespace zmq
-{
-
- // Implements socket polling mechanism using POSIX.1-2001 select()
- // function.
-
- class select_t
- {
- public:
-
- typedef fd_t handle_t;
-
- select_t ();
- ~select_t ();
-
- // "poller" concept.
- handle_t add_fd (fd_t fd_, struct i_poll_events *events_);
- void rm_fd (handle_t handle_);
- void set_pollin (handle_t handle_);
- void reset_pollin (handle_t handle_);
- void set_pollout (handle_t handle_);
- void reset_pollout (handle_t handle_);
- void add_timer (struct i_poll_events *events_);
- void cancel_timer (struct i_poll_events *events_);
- int get_load ();
- void start ();
- void stop ();
-
- private:
-
- // Main worker thread routine.
- static void worker_routine (void *arg_);
-
- // Main event loop.
- void loop ();
-
- struct fd_entry_t
- {
- fd_t fd;
- struct i_poll_events *events;
- };
-
- // Set of file descriptors that are used to retreive
- // information for fd_set.
- typedef std::vector <fd_entry_t> fd_set_t;
- fd_set_t fds;
-
- fd_set source_set_in;
- fd_set source_set_out;
- fd_set source_set_err;
-
- fd_set readfds;
- fd_set writefds;
- fd_set exceptfds;
-
- // Maximum file descriptor.
- fd_t maxfd;
-
- // If true, at least one file descriptor has retired.
- bool retired;
-
- // List of all the engines waiting for the timer event.
- typedef std::vector <struct i_poll_events*> timers_t;
- timers_t timers;
-
- // If true, thread is shutting down.
- bool stopping;
-
- // Handle of the physical thread doing the I/O work.
- thread_t worker;
-
- // Load of the poller. Currently number of file descriptors
- // registered with the poller.
- atomic_counter_t load;
-
- select_t (const select_t&);
- void operator = (const select_t&);
- };
-
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/session.cpp b/util/network/zeromq/src/session.cpp
deleted file mode 100644
index f798877d..00000000
--- a/util/network/zeromq/src/session.cpp
+++ /dev/null
@@ -1,291 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <new>
-
-#include "session.hpp"
-#include "i_engine.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-
-zmq::session_t::session_t (object_t *parent_, socket_base_t *owner_,
- const options_t &options_) :
- owned_t (parent_, owner_),
- in_pipe (NULL),
- incomplete_in (false),
- active (true),
- out_pipe (NULL),
- engine (NULL),
- options (options_)
-{
- // It's possible to register the session at this point as it will be
- // searched for only on reconnect, i.e. no race condition (session found
- // before it is plugged into it's I/O thread) is possible.
- ordinal = owner->register_session (this);
-}
-
-zmq::session_t::session_t (object_t *parent_, socket_base_t *owner_,
- const options_t &options_, const blob_t &peer_identity_) :
- owned_t (parent_, owner_),
- in_pipe (NULL),
- incomplete_in (false),
- active (true),
- out_pipe (NULL),
- engine (NULL),
- ordinal (0),
- peer_identity (peer_identity_),
- options (options_)
-{
- if (!peer_identity.empty () && peer_identity [0] != 0) {
- if (!owner->register_session (peer_identity, this)) {
-
- // TODO: There's already a session with the specified
- // identity. We should presumably syslog it and drop the
- // session.
- zmq_assert (false);
- }
- }
-}
-
-zmq::session_t::~session_t ()
-{
- zmq_assert (!in_pipe);
- zmq_assert (!out_pipe);
-}
-
-bool zmq::session_t::read (::zmq_msg_t *msg_)
-{
- if (!in_pipe || !active)
- return false;
-
- if (!in_pipe->read (msg_))
- return false;
-
- incomplete_in = msg_->flags & ZMQ_MSG_MORE;
- return true;
-}
-
-bool zmq::session_t::write (::zmq_msg_t *msg_)
-{
- if (out_pipe && out_pipe->write (msg_)) {
- zmq_msg_init (msg_);
- return true;
- }
-
- return false;
-}
-
-void zmq::session_t::flush ()
-{
- if (out_pipe)
- out_pipe->flush ();
-}
-
-void zmq::session_t::detach (owned_t *reconnecter_)
-{
- // Plug in the reconnecter object if any.
- if (reconnecter_) {
- send_plug (reconnecter_);
- send_own (owner, reconnecter_);
- }
-
- // Engine is terminating itself. No need to deallocate it from here.
- engine = NULL;
-
- // Get rid of half-processed messages in the out pipe. Flush any
- // unflushed messages upstream.
- if (out_pipe) {
- out_pipe->rollback ();
- out_pipe->flush ();
- }
-
- // Remove any half-read message from the in pipe.
- if (in_pipe) {
- while (incomplete_in) {
- zmq_msg_t msg;
- zmq_msg_init (&msg);
- if (!read (&msg)) {
- zmq_assert (!incomplete_in);
- break;
- }
- zmq_msg_close (&msg);
- }
- }
-
- // Terminate transient session.
- if (!ordinal && (peer_identity.empty () || peer_identity [0] == 0))
- term ();
-}
-
-zmq::io_thread_t *zmq::session_t::get_io_thread ()
-{
- return choose_io_thread (options.affinity);
-}
-
-class zmq::socket_base_t *zmq::session_t::get_owner ()
-{
- return owner;
-}
-
-uint64_t zmq::session_t::get_ordinal ()
-{
- zmq_assert (ordinal);
- return ordinal;
-}
-
-void zmq::session_t::attach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- if (inpipe_) {
- zmq_assert (!in_pipe);
- in_pipe = inpipe_;
- active = true;
- in_pipe->set_endpoint (this);
- }
-
- if (outpipe_) {
- zmq_assert (!out_pipe);
- out_pipe = outpipe_;
- out_pipe->set_endpoint (this);
- }
-}
-
-void zmq::session_t::detach_inpipe (reader_t *pipe_)
-{
- active = false;
- in_pipe = NULL;
-}
-
-void zmq::session_t::detach_outpipe (writer_t *pipe_)
-{
- out_pipe = NULL;
-}
-
-void zmq::session_t::kill (reader_t *pipe_)
-{
- active = false;
-}
-
-void zmq::session_t::revive (reader_t *pipe_)
-{
- zmq_assert (in_pipe == pipe_);
- active = true;
- if (engine)
- engine->revive ();
-}
-
-void zmq::session_t::revive (writer_t *pipe_)
-{
- zmq_assert (out_pipe == pipe_);
- if (engine)
- engine->resume_input ();
-}
-
-void zmq::session_t::process_plug ()
-{
-}
-
-void zmq::session_t::process_unplug ()
-{
- // Unregister the session from the socket.
- if (ordinal)
- owner->unregister_session (ordinal);
- else if (!peer_identity.empty () && peer_identity [0] != 0)
- owner->unregister_session (peer_identity);
-
- // Ask associated pipes to terminate.
- if (in_pipe) {
- in_pipe->term ();
- in_pipe = NULL;
- }
- if (out_pipe) {
- out_pipe->term ();
- out_pipe = NULL;
- }
-
- if (engine) {
- engine->unplug ();
- delete engine;
- engine = NULL;
- }
-}
-
-void zmq::session_t::process_attach (i_engine *engine_,
- const blob_t &peer_identity_)
-{
- if (!peer_identity.empty ()) {
-
- // If both IDs are temporary, no checking is needed.
- // TODO: Old ID should be reused in this case...
- if (peer_identity.empty () || peer_identity [0] != 0 ||
- peer_identity_.empty () || peer_identity_ [0] != 0) {
-
- // If we already know the peer name do nothing, just check whether
- // it haven't changed.
- zmq_assert (peer_identity == peer_identity_);
- }
- }
- else if (!peer_identity_.empty ()) {
-
- // Store the peer identity.
- peer_identity = peer_identity_;
-
- // If the session is not registered with the ordinal, let's register
- // it using the peer name.
- if (!ordinal) {
- if (!owner->register_session (peer_identity, this)) {
-
- // TODO: There's already a session with the specified
- // identity. We should presumably syslog it and drop the
- // session.
- zmq_assert (false);
- }
- }
- }
-
- // Check whether the required pipes already exist. If not so, we'll
- // create them and bind them to the socket object.
- reader_t *socket_reader = NULL;
- writer_t *socket_writer = NULL;
-
- if (options.requires_in && !out_pipe) {
- pipe_t *pipe = new (std::nothrow) pipe_t (owner, this, options.hwm, options.swap);
- zmq_assert (pipe);
- out_pipe = &pipe->writer;
- out_pipe->set_endpoint (this);
- socket_reader = &pipe->reader;
- }
-
- if (options.requires_out && !in_pipe) {
- pipe_t *pipe = new (std::nothrow) pipe_t (this, owner, options.hwm, options.swap);
- zmq_assert (pipe);
- in_pipe = &pipe->reader;
- in_pipe->set_endpoint (this);
- socket_writer = &pipe->writer;
- }
-
- if (socket_reader || socket_writer)
- send_bind (owner, socket_reader, socket_writer, peer_identity);
-
- // Plug in the engine.
- zmq_assert (!engine);
- zmq_assert (engine_);
- engine = engine_;
- engine->plug (this);
-}
diff --git a/util/network/zeromq/src/session.hpp b/util/network/zeromq/src/session.hpp
deleted file mode 100644
index 9bda1ad2..00000000
--- a/util/network/zeromq/src/session.hpp
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_SESSION_HPP_INCLUDED__
-#define __ZMQ_SESSION_HPP_INCLUDED__
-
-#include "i_inout.hpp"
-#include "i_endpoint.hpp"
-#include "owned.hpp"
-#include "options.hpp"
-#include "blob.hpp"
-
-namespace zmq
-{
-
- class session_t : public owned_t, public i_inout, public i_endpoint
- {
- public:
-
- // Creates unnamed session.
- session_t (object_t *parent_, socket_base_t *owner_,
- const options_t &options_);
-
- // Creates named session.
- session_t (object_t *parent_, socket_base_t *owner_,
- const options_t &options_, const blob_t &peer_identity_);
-
- // i_inout interface implementation.
- bool read (::zmq_msg_t *msg_);
- bool write (::zmq_msg_t *msg_);
- void flush ();
- void detach (owned_t *reconnecter_);
- class io_thread_t *get_io_thread ();
- class socket_base_t *get_owner ();
- uint64_t get_ordinal ();
-
- // i_endpoint interface implementation.
- void attach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void detach_inpipe (class reader_t *pipe_);
- void detach_outpipe (class writer_t *pipe_);
- void kill (class reader_t *pipe_);
- void revive (class reader_t *pipe_);
- void revive (class writer_t *pipe_);
-
- private:
-
- ~session_t ();
-
- // Handlers for incoming commands.
- void process_plug ();
- void process_unplug ();
- void process_attach (struct i_engine *engine_,
- const blob_t &peer_identity_);
-
- // Inbound pipe, i.e. one the session is getting messages from.
- class reader_t *in_pipe;
-
- // This flag is true if the remainder of the message being processed
- // is still in the in pipe.
- bool incomplete_in;
-
- // If true, in_pipe is active. Otherwise there are no messages to get.
- bool active;
-
- // Outbound pipe, i.e. one the socket is sending messages to.
- class writer_t *out_pipe;
-
- struct i_engine *engine;
-
- // Session is identified by ordinal in the case when it was created
- // before connection to the peer was established and thus we are
- // unaware of peer's identity.
- uint64_t ordinal;
-
- // Identity of the peer.
- blob_t peer_identity;
-
- // Inherited socket options.
- options_t options;
-
- session_t (const session_t&);
- void operator = (const session_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/signaler.cpp b/util/network/zeromq/src/signaler.cpp
deleted file mode 100644
index d65957e6..00000000
--- a/util/network/zeromq/src/signaler.cpp
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "signaler.hpp"
-#include "platform.hpp"
-#include "err.hpp"
-#include "fd.hpp"
-#include "ip.hpp"
-
-#if defined ZMQ_HAVE_OPENVMS
-#include <netinet/tcp.h>
-#include <unistd.h>
-#elif defined ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#else
-#include <unistd.h>
-#include <fcntl.h>
-#include <limits.h>
-#endif
-
-zmq::fd_t zmq::signaler_t::get_fd ()
-{
- return r;
-}
-
-#if defined ZMQ_HAVE_WINDOWS
-
-zmq::signaler_t::signaler_t ()
-{
- // Windows have no 'socketpair' function. CreatePipe is no good as pipe
- // handles cannot be polled on. Here we create the socketpair by hand.
-
- struct sockaddr_in addr;
- SOCKET listener;
- int addrlen = sizeof (addr);
-
- w = INVALID_SOCKET;
- r = INVALID_SOCKET;
-
- fd_t rcs = (listener = socket (AF_INET, SOCK_STREAM, 0));
- wsa_assert (rcs != INVALID_SOCKET);
-
- memset (&addr, 0, sizeof (addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
- addr.sin_port = 0;
-
- int rc = bind (listener, (const struct sockaddr*) &addr, sizeof (addr));
- wsa_assert (rc != SOCKET_ERROR);
-
- rc = getsockname (listener, (struct sockaddr*) &addr, &addrlen);
- wsa_assert (rc != SOCKET_ERROR);
-
- // Listen for incomming connections.
- rc = listen (listener, 1);
- wsa_assert (rc != SOCKET_ERROR);
-
- // Create the socket.
- w = WSASocket (AF_INET, SOCK_STREAM, 0, NULL, 0, 0);
- wsa_assert (w != INVALID_SOCKET);
-
- // Connect to the remote peer.
- rc = connect (w, (sockaddr *) &addr, sizeof (addr));
- wsa_assert (rc != SOCKET_ERROR);
-
- // Accept connection from w.
- r = accept (listener, NULL, NULL);
- wsa_assert (r != INVALID_SOCKET);
-
- // Set the read site of the pair to non-blocking mode.
- unsigned long argp = 1;
- rc = ioctlsocket (r, FIONBIO, &argp);
- wsa_assert (rc != SOCKET_ERROR);
-
- // We don't need the listening socket anymore. Close it.
- rc = closesocket (listener);
- wsa_assert (rc != SOCKET_ERROR);
-}
-
-zmq::signaler_t::~signaler_t ()
-{
- int rc = closesocket (w);
- wsa_assert (rc != SOCKET_ERROR);
-
- rc = closesocket (r);
- wsa_assert (rc != SOCKET_ERROR);
-}
-
-void zmq::signaler_t::send (const command_t &cmd_)
-{
- // TODO: Note that send is a blocking operation.
- // How should we behave if the signal cannot be written to the signaler?
- // Even worse: What if half of a command is written?
- int rc = ::send (w, (char*) &cmd_, sizeof (command_t), 0);
- win_assert (rc != SOCKET_ERROR);
- zmq_assert (rc == sizeof (command_t));
-}
-
-bool zmq::signaler_t::recv (command_t *cmd_, bool block_)
-{
- if (block_) {
-
- // Switch to blocking mode.
- unsigned long argp = 0;
- int rc = ioctlsocket (r, FIONBIO, &argp);
- wsa_assert (rc != SOCKET_ERROR);
- }
-
- bool result;
- int nbytes = ::recv (r, (char*) cmd_, sizeof (command_t), 0);
- if (nbytes == -1 && WSAGetLastError () == WSAEWOULDBLOCK) {
- result = false;
- }
- else {
- wsa_assert (nbytes != -1);
-
- // Check whether we haven't got half of a signal.
- zmq_assert (nbytes % sizeof (uint32_t) == 0);
-
- result = true;
- }
-
- if (block_) {
-
- // Switch back to non-blocking mode.
- unsigned long argp = 1;
- int rc = ioctlsocket (r, FIONBIO, &argp);
- wsa_assert (rc != SOCKET_ERROR);
- }
-
- return result;
-}
-
-#elif defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX
-
-#include <sys/types.h>
-#include <sys/socket.h>
-
-zmq::signaler_t::signaler_t ()
-{
- int sv [2];
- int rc = socketpair (AF_UNIX, SOCK_STREAM, 0, sv);
- errno_assert (rc == 0);
- w = sv [0];
- r = sv [1];
-
- // Set the reader to non-blocking mode.
- int flags = fcntl (r, F_GETFL, 0);
- if (flags == -1)
- flags = 0;
- rc = fcntl (r, F_SETFL, flags | O_NONBLOCK);
- errno_assert (rc != -1);
-}
-
-zmq::signaler_t::~signaler_t ()
-{
- close (w);
- close (r);
-}
-
-void zmq::signaler_t::send (const command_t &cmd_)
-{
- ssize_t nbytes;
- do {
- nbytes = ::send (w, &cmd_, sizeof (command_t), 0);
- } while (nbytes == -1 && errno == EINTR);
- errno_assert (nbytes != -1);
- zmq_assert (nbytes == sizeof (command_t));
-}
-
-bool zmq::signaler_t::recv (command_t &cmd_, bool block_)
-{
- if (block_) {
-
- // Set the reader to blocking mode.
- int flags = fcntl (r, F_GETFL, 0);
- if (flags == -1)
- flags = 0;
- int rc = fcntl (r, F_SETFL, flags & ~O_NONBLOCK);
- errno_assert (rc != -1);
- }
-
- bool result;
- ssize_t nbytes;
- do {
- nbytes = ::recv (r, buffer, sizeof (command_t), 0);
- } while (nbytes == -1 && errno == EINTR);
- if (nbytes == -1 && errno == EAGAIN) {
- result = false;
- }
- else {
- zmq_assert (nbytes != -1);
-
- // Check whether we haven't got half of command.
- zmq_assert (nbytes == sizeof (command_t));
-
- result = true;
- }
-
- if (block_)
-
- // Set the reader to non-blocking mode.
- int flags = fcntl (r, F_GETFL, 0);
- if (flags == -1)
- flags = 0;
- int rc = fcntl (r, F_SETFL, flags | O_NONBLOCK);
- errno_assert (rc != -1);
- }
-
- return result;
-}
-
-#else
-
-#include <sys/types.h>
-#include <sys/socket.h>
-
-zmq::signaler_t::signaler_t ()
-{
- // Make sure that command can be written to the socket in atomic fashion.
- // If this wasn't guaranteed, commands from different threads would be
- // interleaved.
- zmq_assert (sizeof (command_t) <= PIPE_BUF);
-
- int sv [2];
- int rc = socketpair (AF_UNIX, SOCK_STREAM, 0, sv);
- errno_assert (rc == 0);
- w = sv [0];
- r = sv [1];
-}
-
-zmq::signaler_t::~signaler_t ()
-{
- close (w);
- close (r);
-}
-
-void zmq::signaler_t::send (const command_t &cmd_)
-{
- // TODO: Note that send is a blocking operation.
- // How should we behave if the command cannot be written to the signaler?
- ssize_t nbytes;
- do {
- nbytes = ::send (w, &cmd_, sizeof (command_t), 0);
- } while (nbytes == -1 && errno == EINTR);
- errno_assert (nbytes != -1);
-
- // This should never happen as we've already checked that command size is
- // less than PIPE_BUF.
- zmq_assert (nbytes == sizeof (command_t));
-}
-
-bool zmq::signaler_t::recv (command_t *cmd_, bool block_)
-{
- ssize_t nbytes;
- do {
- nbytes = ::recv (r, cmd_, sizeof (command_t),
- block_ ? 0 : MSG_DONTWAIT);
- } while (nbytes == -1 && errno == EINTR);
-
- // If there's no signal available return false.
- if (nbytes == -1 && errno == EAGAIN)
- return false;
-
- errno_assert (nbytes != -1);
-
- // Check whether we haven't got half of command.
- zmq_assert (nbytes == sizeof (command_t));
-
- return true;
-}
-
-#endif
-
-#if defined ZMQ_HAVE_OPENVMS
-
-int zmq::signaler_t::socketpair (int domain_, int type_, int protocol_,
- int sv_ [2])
-{
- int listener;
- sockaddr_in lcladdr;
- socklen_t lcladdr_len;
- int rc;
- int on = 1;
-
- zmq_assert (type_ == SOCK_STREAM);
-
- // Fill in the localhost address (127.0.0.1).
- memset (&lcladdr, 0, sizeof (lcladdr));
- lcladdr.sin_family = AF_INET;
- lcladdr.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
- lcladdr.sin_port = 0;
-
- listener = socket (AF_INET, SOCK_STREAM, 0);
- errno_assert (listener != -1);
-
- rc = setsockopt (listener, IPPROTO_TCP, TCP_NODELAY, &on, sizeof (on));
- errno_assert (rc != -1);
-
- rc = setsockopt (listener, IPPROTO_TCP, TCP_NODELACK, &on, sizeof (on));
- errno_assert (rc != -1);
-
- rc = bind(listener, (struct sockaddr*) &lcladdr, sizeof (lcladdr));
- errno_assert (rc != -1);
-
- lcladdr_len = sizeof (lcladdr);
-
- rc = getsockname (listener, (struct sockaddr*) &lcladdr, &lcladdr_len);
- errno_assert (rc != -1);
-
- rc = listen (listener, 1);
- errno_assert (rc != -1);
-
- sv_ [0] = socket (AF_INET, SOCK_STREAM, 0);
- errno_assert (rc != -1);
-
- rc = setsockopt (sv_ [0], IPPROTO_TCP, TCP_NODELAY, &on, sizeof (on));
- errno_assert (rc != -1);
-
- rc = setsockopt (sv_ [0], IPPROTO_TCP, TCP_NODELACK, &on, sizeof (on));
- errno_assert (rc != -1);
-
- rc = connect (sv_ [0], (struct sockaddr*) &lcladdr, sizeof (lcladdr));
- errno_assert (rc != -1);
-
- sv_ [1] = accept (listener, NULL, NULL);
- errno_assert (sv_ [1] != -1);
-
- close (listener);
-
- return 0;
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/signaler.hpp b/util/network/zeromq/src/signaler.hpp
deleted file mode 100644
index 64a18991..00000000
--- a/util/network/zeromq/src/signaler.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_SIGNALER_HPP_INCLUDED__
-#define __ZMQ_SIGNALER_HPP_INCLUDED__
-
-#include <stddef.h>
-
-#include "platform.hpp"
-#include "fd.hpp"
-#include "stdint.hpp"
-#include "config.hpp"
-#include "command.hpp"
-
-namespace zmq
-{
-
- class signaler_t
- {
- public:
-
- signaler_t ();
- ~signaler_t ();
-
- fd_t get_fd ();
- void send (const command_t &cmd_);
- bool recv (command_t *cmd_, bool block_);
-
- private:
-
-#if defined ZMQ_HAVE_OPENVMS
-
- // Whilst OpenVMS supports socketpair - it maps to AF_INET only.
- // Further, it does not set the socket options TCP_NODELAY and
- // TCP_NODELACK which can lead to performance problems. We'll
- // overload the socketpair function for this class.
- //
- // The bug will be fixed in V5.6 ECO4 and beyond. In the
- // meantime, we'll create the socket pair manually.
- static int socketpair (int domain_, int type_, int protocol_,
- int sv_ [2]);
-#endif
-
- // Write & read end of the socketpair.
- fd_t w;
- fd_t r;
-
- // Disable copying of fd_signeler object.
- signaler_t (const signaler_t&);
- void operator = (const signaler_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/socket_base.cpp b/util/network/zeromq/src/socket_base.cpp
deleted file mode 100644
index c9339541..00000000
--- a/util/network/zeromq/src/socket_base.cpp
+++ /dev/null
@@ -1,698 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <new>
-#include <string>
-#include <algorithm>
-
-#include "../include/zmq.h"
-
-#include "socket_base.hpp"
-#include "app_thread.hpp"
-
-#include "zmq_listener.hpp"
-#include "zmq_connecter.hpp"
-#include "io_thread.hpp"
-#include "session.hpp"
-#include "config.hpp"
-#include "owned.hpp"
-#include "pipe.hpp"
-#include "err.hpp"
-#include "ctx.hpp"
-#include "platform.hpp"
-#include "pgm_sender.hpp"
-#include "pgm_receiver.hpp"
-#include "likely.hpp"
-#include "uuid.hpp"
-
-zmq::socket_base_t::socket_base_t (app_thread_t *parent_) :
- object_t (parent_),
- pending_term_acks (0),
- ticks (0),
- rcvmore (false),
- app_thread (parent_),
- shutting_down (false),
- sent_seqnum (0),
- processed_seqnum (0),
- next_ordinal (1)
-{
-}
-
-zmq::socket_base_t::~socket_base_t ()
-{
-}
-
-int zmq::socket_base_t::setsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- if (unlikely (app_thread->is_terminated ())) {
- errno = ETERM;
- return -1;
- }
-
- // First, check whether specific socket type overloads the option.
- int rc = xsetsockopt (option_, optval_, optvallen_);
- if (rc == 0 || errno != EINVAL)
- return rc;
-
- // If the socket type doesn't support the option, pass it to
- // the generic option parser.
- return options.setsockopt (option_, optval_, optvallen_);
-}
-
-int zmq::socket_base_t::getsockopt (int option_, void *optval_,
- size_t *optvallen_)
-{
- if (unlikely (app_thread->is_terminated ())) {
- errno = ETERM;
- return -1;
- }
-
- if (option_ == ZMQ_RCVMORE) {
- if (*optvallen_ < sizeof (int64_t)) {
- errno = EINVAL;
- return -1;
- }
- *((int64_t*) optval_) = rcvmore ? 1 : 0;
- *optvallen_ = sizeof (int64_t);
- return 0;
- }
-
- return options.getsockopt (option_, optval_, optvallen_);
-}
-
-int zmq::socket_base_t::bind (const char *addr_)
-{
- if (unlikely (app_thread->is_terminated ())) {
- errno = ETERM;
- return -1;
- }
-
- // Parse addr_ string.
- std::string addr_type;
- std::string addr_args;
-
- std::string addr (addr_);
- std::string::size_type pos = addr.find ("://");
-
- if (pos == std::string::npos) {
- errno = EINVAL;
- return -1;
- }
-
- addr_type = addr.substr (0, pos);
- addr_args = addr.substr (pos + 3);
-
- if (addr_type == "inproc")
- return register_endpoint (addr_args.c_str (), this);
-
- if (addr_type == "tcp" || addr_type == "ipc") {
-
-#if defined ZMQ_HAVE_WINDOWS || defined ZMQ_HAVE_OPENVMS
- if (addr_type == "ipc") {
- errno = EPROTONOSUPPORT;
- return -1;
- }
-#endif
-
- zmq_listener_t *listener = new (std::nothrow) zmq_listener_t (
- choose_io_thread (options.affinity), this, options);
- zmq_assert (listener);
- int rc = listener->set_address (addr_type.c_str(), addr_args.c_str ());
- if (rc != 0) {
- delete listener;
- return -1;
- }
-
- send_plug (listener);
- send_own (this, listener);
- return 0;
- }
-
-#if defined ZMQ_HAVE_OPENPGM
- if (addr_type == "pgm" || addr_type == "epgm") {
- // In the case of PGM bind behaves the same like connect.
- return connect (addr_);
- }
-#endif
-
- // Unknown protocol.
- errno = EPROTONOSUPPORT;
- return -1;
-}
-
-int zmq::socket_base_t::connect (const char *addr_)
-{
- if (unlikely (app_thread->is_terminated ())) {
- errno = ETERM;
- return -1;
- }
-
- // Parse addr_ string.
- std::string addr_type;
- std::string addr_args;
-
- std::string addr (addr_);
- std::string::size_type pos = addr.find ("://");
-
- if (pos == std::string::npos) {
- errno = EINVAL;
- return -1;
- }
-
- addr_type = addr.substr (0, pos);
- addr_args = addr.substr (pos + 3);
-
- if (addr_type == "inproc") {
-
- // TODO: inproc connect is specific with respect to creating pipes
- // as there's no 'reconnect' functionality implemented. Once that
- // is in place we should follow generic pipe creation algorithm.
-
- // Find the peer socket.
- socket_base_t *peer = find_endpoint (addr_args.c_str ());
- if (!peer)
- return -1;
-
- pipe_t *in_pipe = NULL;
- pipe_t *out_pipe = NULL;
-
- // Create inbound pipe, if required.
- if (options.requires_in) {
- in_pipe = new (std::nothrow) pipe_t (this, peer, options.hwm, options.swap);
- zmq_assert (in_pipe);
- }
-
- // Create outbound pipe, if required.
- if (options.requires_out) {
- out_pipe = new (std::nothrow) pipe_t (peer, this, options.hwm, options.swap);
- zmq_assert (out_pipe);
- }
-
- // Attach the pipes to this socket object.
- attach_pipes (in_pipe ? &in_pipe->reader : NULL,
- out_pipe ? &out_pipe->writer : NULL, blob_t ());
-
- // Attach the pipes to the peer socket. Note that peer's seqnum
- // was incremented in find_endpoint function. The callee is notified
- // about the fact via the last parameter.
- send_bind (peer, out_pipe ? &out_pipe->reader : NULL,
- in_pipe ? &in_pipe->writer : NULL, options.identity, false);
-
- return 0;
- }
-
- // Create unnamed session.
- io_thread_t *io_thread = choose_io_thread (options.affinity);
- session_t *session = new (std::nothrow) session_t (io_thread,
- this, options);
- zmq_assert (session);
-
- // If 'immediate connect' feature is required, we'll created the pipes
- // to the session straight away. Otherwise, they'll be created by the
- // session once the connection is established.
- if (options.immediate_connect) {
-
- pipe_t *in_pipe = NULL;
- pipe_t *out_pipe = NULL;
-
- // Create inbound pipe, if required.
- if (options.requires_in) {
- in_pipe = new (std::nothrow) pipe_t (this, session, options.hwm, options.swap);
- zmq_assert (in_pipe);
-
- }
-
- // Create outbound pipe, if required.
- if (options.requires_out) {
- out_pipe = new (std::nothrow) pipe_t (session, this, options.hwm, options.swap);
- zmq_assert (out_pipe);
- }
-
- // Attach the pipes to the socket object.
- attach_pipes (in_pipe ? &in_pipe->reader : NULL,
- out_pipe ? &out_pipe->writer : NULL, blob_t ());
-
- // Attach the pipes to the session object.
- session->attach_pipes (out_pipe ? &out_pipe->reader : NULL,
- in_pipe ? &in_pipe->writer : NULL, blob_t ());
- }
-
- // Activate the session.
- send_plug (session);
- send_own (this, session);
-
- if (addr_type == "tcp" || addr_type == "ipc") {
-
-#if defined ZMQ_HAVE_WINDOWS || defined ZMQ_HAVE_OPENVMS
- // Windows named pipes are not compatible with Winsock API.
- // There's no UNIX domain socket implementation on OpenVMS.
- if (addr_type == "ipc") {
- errno = EPROTONOSUPPORT;
- return -1;
- }
-#endif
-
- // Create the connecter object. Supply it with the session name
- // so that it can bind the new connection to the session once
- // it is established.
- zmq_connecter_t *connecter = new (std::nothrow) zmq_connecter_t (
- choose_io_thread (options.affinity), this, options,
- session->get_ordinal (), false);
- zmq_assert (connecter);
- int rc = connecter->set_address (addr_type.c_str(), addr_args.c_str ());
- if (rc != 0) {
- delete connecter;
- return -1;
- }
- send_plug (connecter);
- send_own (this, connecter);
-
- return 0;
- }
-
-#if defined ZMQ_HAVE_OPENPGM
- if (addr_type == "pgm" || addr_type == "epgm") {
-
- // If the socket type requires bi-directional communication
- // multicast is not an option (it is uni-directional).
- if (options.requires_in && options.requires_out) {
- errno = ENOCOMPATPROTO;
- return -1;
- }
-
- // For epgm, pgm transport with UDP encapsulation is used.
- bool udp_encapsulation = (addr_type == "epgm");
-
- // At this point we'll create message pipes to the session straight
- // away. There's no point in delaying it as no concept of 'connect'
- // exists with PGM anyway.
- if (options.requires_out) {
-
- // PGM sender.
- pgm_sender_t *pgm_sender = new (std::nothrow) pgm_sender_t (
- choose_io_thread (options.affinity), options);
- zmq_assert (pgm_sender);
-
- int rc = pgm_sender->init (udp_encapsulation, addr_args.c_str ());
- if (rc != 0) {
- delete pgm_sender;
- return -1;
- }
-
- send_attach (session, pgm_sender, blob_t ());
- }
- else if (options.requires_in) {
-
- // PGM receiver.
- pgm_receiver_t *pgm_receiver = new (std::nothrow) pgm_receiver_t (
- choose_io_thread (options.affinity), options);
- zmq_assert (pgm_receiver);
-
- int rc = pgm_receiver->init (udp_encapsulation, addr_args.c_str ());
- if (rc != 0) {
- delete pgm_receiver;
- return -1;
- }
-
- send_attach (session, pgm_receiver, blob_t ());
- }
- else
- zmq_assert (false);
-
- return 0;
- }
-#endif
-
- // Unknown protoco.
- errno = EPROTONOSUPPORT;
- return -1;
-}
-
-int zmq::socket_base_t::send (::zmq_msg_t *msg_, int flags_)
-{
- // Process pending commands, if any.
- if (unlikely (!app_thread->process_commands (false, true))) {
- errno = ETERM;
- return -1;
- }
-
- // At this point we impose the MORE flag on the message.
- if (flags_ & ZMQ_SNDMORE)
- msg_->flags |= ZMQ_MSG_MORE;
-
- // Try to send the message.
- int rc = xsend (msg_, flags_);
- if (rc == 0)
- return 0;
-
- // In case of non-blocking send we'll simply propagate
- // the error - including EAGAIN - upwards.
- if (flags_ & ZMQ_NOBLOCK)
- return -1;
-
- // Oops, we couldn't send the message. Wait for the next
- // command, process it and try to send the message again.
- while (rc != 0) {
- if (errno != EAGAIN)
- return -1;
- if (unlikely (!app_thread->process_commands (true, false))) {
- errno = ETERM;
- return -1;
- }
- rc = xsend (msg_, flags_);
- }
- return 0;
-}
-
-int zmq::socket_base_t::recv (::zmq_msg_t *msg_, int flags_)
-{
- // Get the message.
- int rc = xrecv (msg_, flags_);
- int err = errno;
-
- // Once every inbound_poll_rate messages check for signals and process
- // incoming commands. This happens only if we are not polling altogether
- // because there are messages available all the time. If poll occurs,
- // ticks is set to zero and thus we avoid this code.
- //
- // Note that 'recv' uses different command throttling algorithm (the one
- // described above) from the one used by 'send'. This is because counting
- // ticks is more efficient than doing rdtsc all the time.
- if (++ticks == inbound_poll_rate) {
- if (unlikely (!app_thread->process_commands (false, false))) {
- errno = ETERM;
- return -1;
- }
- ticks = 0;
- }
-
- // If we have the message, return immediately.
- if (rc == 0) {
- rcvmore = msg_->flags & ZMQ_MSG_MORE;
- if (rcvmore)
- msg_->flags &= ~ZMQ_MSG_MORE;
- return 0;
- }
-
- // If we don't have the message, restore the original cause of the problem.
- errno = err;
-
- // If the message cannot be fetched immediately, there are two scenarios.
- // For non-blocking recv, commands are processed in case there's a revive
- // command already waiting int a command pipe. If it's not, return EAGAIN.
- if (flags_ & ZMQ_NOBLOCK) {
- if (errno != EAGAIN)
- return -1;
- if (unlikely (!app_thread->process_commands (false, false))) {
- errno = ETERM;
- return -1;
- }
- ticks = 0;
-
- rc = xrecv (msg_, flags_);
- if (rc == 0) {
- rcvmore = msg_->flags & ZMQ_MSG_MORE;
- if (rcvmore)
- msg_->flags &= ~ZMQ_MSG_MORE;
- }
- return rc;
- }
-
- // In blocking scenario, commands are processed over and over again until
- // we are able to fetch a message.
- while (rc != 0) {
- if (errno != EAGAIN)
- return -1;
- if (unlikely (!app_thread->process_commands (true, false))) {
- errno = ETERM;
- return -1;
- }
- rc = xrecv (msg_, flags_);
- ticks = 0;
- }
-
- rcvmore = msg_->flags & ZMQ_MSG_MORE;
- if (rcvmore)
- msg_->flags &= ~ZMQ_MSG_MORE;
- return 0;
-}
-
-int zmq::socket_base_t::close ()
-{
- shutting_down = true;
-
- // Let the thread know that the socket is no longer available.
- app_thread->remove_socket (this);
-
- // Pointer to the context must be retrieved before the socket is
- // deallocated. Afterwards it is not available.
- ctx_t *ctx = get_ctx ();
-
- // Unregister all inproc endpoints associated with this socket.
- // From this point we are sure that inc_seqnum won't be called again
- // on this object.
- ctx->unregister_endpoints (this);
-
- // Wait till all undelivered commands are delivered. This should happen
- // very quickly. There's no way to wait here for extensive period of time.
- while (processed_seqnum != sent_seqnum.get ())
- app_thread->process_commands (true, false);
-
- while (true) {
-
- // On third pass of the loop there should be no more I/O objects
- // because all connecters and listerners were destroyed during
- // the first pass and all engines delivered by delayed 'own' commands
- // are destroyed during the second pass.
- if (io_objects.empty () && !pending_term_acks)
- break;
-
- // Send termination request to all associated I/O objects.
- for (io_objects_t::iterator it = io_objects.begin ();
- it != io_objects.end (); it++)
- send_term (*it);
-
- // Move the objects to the list of pending term acks.
- pending_term_acks += io_objects.size ();
- io_objects.clear ();
-
- // Process commands till we get all the termination acknowledgements.
- while (pending_term_acks)
- app_thread->process_commands (true, false);
- }
-
- // Check whether there are no session leaks.
- sessions_sync.lock ();
- zmq_assert (named_sessions.empty ());
- zmq_assert (unnamed_sessions.empty ());
- sessions_sync.unlock ();
-
- delete this;
-
- // This function must be called after the socket is completely deallocated
- // as it may cause termination of the whole 0MQ infrastructure.
- ctx->destroy_socket ();
-
- return 0;
-}
-
-void zmq::socket_base_t::inc_seqnum ()
-{
- // NB: This function may be called from a different thread!
- sent_seqnum.add (1);
-}
-
-zmq::app_thread_t *zmq::socket_base_t::get_thread ()
-{
- return app_thread;
-}
-
-bool zmq::socket_base_t::has_in ()
-{
- return xhas_in ();
-}
-
-bool zmq::socket_base_t::has_out ()
-{
- return xhas_out ();
-}
-
-bool zmq::socket_base_t::register_session (const blob_t &peer_identity_,
- session_t *session_)
-{
- sessions_sync.lock ();
- bool registered = named_sessions.insert (
- std::make_pair (peer_identity_, session_)).second;
- sessions_sync.unlock ();
- return registered;
-}
-
-void zmq::socket_base_t::unregister_session (const blob_t &peer_identity_)
-{
- sessions_sync.lock ();
- named_sessions_t::iterator it = named_sessions.find (peer_identity_);
- zmq_assert (it != named_sessions.end ());
- named_sessions.erase (it);
- sessions_sync.unlock ();
-}
-
-zmq::session_t *zmq::socket_base_t::find_session (const blob_t &peer_identity_)
-{
- sessions_sync.lock ();
- named_sessions_t::iterator it = named_sessions.find (peer_identity_);
- if (it == named_sessions.end ()) {
- sessions_sync.unlock ();
- return NULL;
- }
- session_t *session = it->second;
-
- // Prepare the session for subsequent attach command.
- session->inc_seqnum ();
-
- sessions_sync.unlock ();
- return session;
-}
-
-uint64_t zmq::socket_base_t::register_session (session_t *session_)
-{
- sessions_sync.lock ();
- uint64_t ordinal = next_ordinal;
- next_ordinal++;
- unnamed_sessions.insert (std::make_pair (ordinal, session_));
- sessions_sync.unlock ();
- return ordinal;
-}
-
-void zmq::socket_base_t::unregister_session (uint64_t ordinal_)
-{
- sessions_sync.lock ();
- unnamed_sessions_t::iterator it = unnamed_sessions.find (ordinal_);
- zmq_assert (it != unnamed_sessions.end ());
- unnamed_sessions.erase (it);
- sessions_sync.unlock ();
-}
-
-zmq::session_t *zmq::socket_base_t::find_session (uint64_t ordinal_)
-{
- sessions_sync.lock ();
-
- unnamed_sessions_t::iterator it = unnamed_sessions.find (ordinal_);
- if (it == unnamed_sessions.end ()) {
- sessions_sync.unlock ();
- return NULL;
- }
- session_t *session = it->second;
-
- // Prepare the session for subsequent attach command.
- session->inc_seqnum ();
-
- sessions_sync.unlock ();
- return session;
-}
-
-void zmq::socket_base_t::kill (reader_t *pipe_)
-{
- xkill (pipe_);
-}
-
-void zmq::socket_base_t::revive (reader_t *pipe_)
-{
- xrevive (pipe_);
-}
-
-void zmq::socket_base_t::revive (writer_t *pipe_)
-{
- xrevive (pipe_);
-}
-
-void zmq::socket_base_t::attach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- if (inpipe_)
- inpipe_->set_endpoint (this);
- if (outpipe_)
- outpipe_->set_endpoint (this);
-
- // If the peer haven't specified it's identity, let's generate one.
- if (peer_identity_.size ()) {
- xattach_pipes (inpipe_, outpipe_, peer_identity_);
- }
- else {
- blob_t identity (1, 0);
- identity.append (uuid_t ().to_blob (), uuid_t::uuid_blob_len);
- xattach_pipes (inpipe_, outpipe_, identity);
- }
-}
-
-void zmq::socket_base_t::detach_inpipe (class reader_t *pipe_)
-{
- xdetach_inpipe (pipe_);
- pipe_->set_endpoint (NULL); // ?
-}
-
-void zmq::socket_base_t::detach_outpipe (class writer_t *pipe_)
-{
- xdetach_outpipe (pipe_);
- pipe_->set_endpoint (NULL); // ?
-}
-
-void zmq::socket_base_t::process_own (owned_t *object_)
-{
- io_objects.insert (object_);
-}
-
-void zmq::socket_base_t::process_bind (reader_t *in_pipe_, writer_t *out_pipe_,
- const blob_t &peer_identity_)
-{
- attach_pipes (in_pipe_, out_pipe_, peer_identity_);
-}
-
-void zmq::socket_base_t::process_term_req (owned_t *object_)
-{
- // When shutting down we can ignore termination requests from owned
- // objects. They are going to be terminated anyway.
- if (shutting_down)
- return;
-
- // If I/O object is well and alive ask it to terminate.
- io_objects_t::iterator it = std::find (io_objects.begin (),
- io_objects.end (), object_);
-
- // If not found, we assume that termination request was already sent to
- // the object so we can sagely ignore the request.
- if (it == io_objects.end ())
- return;
-
- pending_term_acks++;
- io_objects.erase (it);
- send_term (object_);
-}
-
-void zmq::socket_base_t::process_term_ack ()
-{
- zmq_assert (pending_term_acks);
- pending_term_acks--;
-}
-
-void zmq::socket_base_t::process_seqnum ()
-{
- processed_seqnum++;
-}
-
diff --git a/util/network/zeromq/src/socket_base.hpp b/util/network/zeromq/src/socket_base.hpp
deleted file mode 100644
index 3d95cec3..00000000
--- a/util/network/zeromq/src/socket_base.hpp
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_SOCKET_BASE_HPP_INCLUDED__
-#define __ZMQ_SOCKET_BASE_HPP_INCLUDED__
-
-#include <set>
-#include <map>
-#include <vector>
-
-#include "../include/zmq.h"
-
-#include "i_endpoint.hpp"
-#include "object.hpp"
-#include "yarray_item.hpp"
-#include "mutex.hpp"
-#include "options.hpp"
-#include "stdint.hpp"
-#include "atomic_counter.hpp"
-#include "stdint.hpp"
-#include "blob.hpp"
-
-namespace zmq
-{
-
- class socket_base_t :
- public object_t, public i_endpoint, public yarray_item_t
- {
- public:
-
- socket_base_t (class app_thread_t *parent_);
-
- // Interface for communication with the API layer.
- int setsockopt (int option_, const void *optval_, size_t optvallen_);
- int getsockopt (int option_, void *optval_, size_t *optvallen_);
- int bind (const char *addr_);
- int connect (const char *addr_);
- int send (zmq_msg_t *msg_, int flags_);
- int recv (zmq_msg_t *msg_, int flags_);
- int close ();
-
- // When another owned object wants to send command to this object
- // it calls this function to let it know it should not shut down
- // before the command is delivered.
- void inc_seqnum ();
-
- // This function is used by the polling mechanism to determine
- // whether the socket belongs to the application thread the poll
- // is called from.
- class app_thread_t *get_thread ();
-
- // These functions are used by the polling mechanism to determine
- // which events are to be reported from this socket.
- bool has_in ();
- bool has_out ();
-
- // The list of sessions cannot be accessed via inter-thread
- // commands as it is unacceptable to wait for the completion of the
- // action till user application yields control of the application
- // thread to 0MQ. Locking is used instead.
- // There are two distinct types of sessions: those identified by name
- // and those identified by ordinal number. Thus two sets of session
- // management functions.
- bool register_session (const blob_t &peer_identity_,
- class session_t *session_);
- void unregister_session (const blob_t &peer_identity_);
- class session_t *find_session (const blob_t &peer_identity_);
- uint64_t register_session (class session_t *session_);
- void unregister_session (uint64_t ordinal_);
- class session_t *find_session (uint64_t ordinal_);
-
- // i_endpoint interface implementation.
- void attach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void detach_inpipe (class reader_t *pipe_);
- void detach_outpipe (class writer_t *pipe_);
- void kill (class reader_t *pipe_);
- void revive (class reader_t *pipe_);
- void revive (class writer_t *pipe_);
-
- protected:
-
- // Destructor is protected. Socket is closed using 'close' function.
- virtual ~socket_base_t ();
-
- // Pipe management is done by individual socket types.
- virtual void xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_) = 0;
- virtual void xdetach_inpipe (class reader_t *pipe_) = 0;
- virtual void xdetach_outpipe (class writer_t *pipe_) = 0;
- virtual void xkill (class reader_t *pipe_) = 0;
- virtual void xrevive (class reader_t *pipe_) = 0;
- virtual void xrevive (class writer_t *pipe_) = 0;
-
- // Actual algorithms are to be defined by individual socket types.
- virtual int xsetsockopt (int option_, const void *optval_,
- size_t optvallen_) = 0;
- virtual int xsend (zmq_msg_t *msg_, int options_) = 0;
- virtual int xrecv (zmq_msg_t *msg_, int options_) = 0;
- virtual bool xhas_in () = 0;
- virtual bool xhas_out () = 0;
-
- // Socket options.
- options_t options;
-
- private:
-
- // Handlers for incoming commands.
- void process_own (class owned_t *object_);
- void process_bind (class reader_t *in_pipe_, class writer_t *out_pipe_,
- const blob_t &peer_identity_);
- void process_term_req (class owned_t *object_);
- void process_term_ack ();
- void process_seqnum ();
-
- // List of all I/O objects owned by this socket. The socket is
- // responsible for deallocating them before it quits.
- typedef std::set <class owned_t*> io_objects_t;
- io_objects_t io_objects;
-
- // Number of I/O objects that were already asked to terminate
- // but haven't acknowledged it yet.
- int pending_term_acks;
-
- // Number of messages received since last command processing.
- int ticks;
-
- // If true there's a half-read message in the socket.
- bool rcvmore;
-
- // Application thread the socket lives in.
- class app_thread_t *app_thread;
-
- // If true, socket is already shutting down. No new work should be
- // started.
- bool shutting_down;
-
- // Sequence number of the last command sent to this object.
- atomic_counter_t sent_seqnum;
-
- // Sequence number of the last command processed by this object.
- uint64_t processed_seqnum;
-
- // Lists of existing sessions. This lists are never referenced from
- // within the socket, instead they are used by I/O objects owned by
- // the socket. As those objects can live in different threads,
- // the access is synchronised by mutex.
- typedef std::map <blob_t, session_t*> named_sessions_t;
- named_sessions_t named_sessions;
- typedef std::map <uint64_t, session_t*> unnamed_sessions_t;
- unnamed_sessions_t unnamed_sessions;
- uint64_t next_ordinal;
- mutex_t sessions_sync;
-
- socket_base_t (const socket_base_t&);
- void operator = (const socket_base_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/stamp-h1 b/util/network/zeromq/src/stamp-h1
deleted file mode 100644
index 32b99178..00000000
--- a/util/network/zeromq/src/stamp-h1
+++ /dev/null
@@ -1 +0,0 @@
-timestamp for src/platform.hpp
diff --git a/util/network/zeromq/src/stdint.hpp b/util/network/zeromq/src/stdint.hpp
deleted file mode 100644
index fe1bff6c..00000000
--- a/util/network/zeromq/src/stdint.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_STDINT_HPP_INCLUDED__
-#define __ZMQ_STDINT_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_SOLARIS
-
-#include <inttypes.h>
-
-#elif defined _MSC_VER
-
-#ifndef int8_t
-typedef __int8 int8_t;
-#endif
-#ifndef int16_t
-typedef __int16 int16_t;
-#endif
-#ifndef int32_t
-typedef __int32 int32_t;
-#endif
-#ifndef int64_t
-typedef __int64 int64_t;
-#endif
-#ifndef uint8_t
-typedef unsigned __int8 uint8_t;
-#endif
-#ifndef uint16_t
-typedef unsigned __int16 uint16_t;
-#endif
-#ifndef uint32_t
-typedef unsigned __int32 uint32_t;
-#endif
-#ifndef uint64_t
-typedef unsigned __int64 uint64_t;
-#endif
-
-#elif defined ZMQ_HAVE_OPENVMS
-
-#include <types.h>
-typedef unsigned __int8 uint8_t;
-typedef unsigned __int16 uint16_t;
-typedef unsigned __int32 uint32_t;
-typedef unsigned __int64 uint64_t;
-
-#else
-
-#include <stdint.h>
-
-#endif
-
-#endif
diff --git a/util/network/zeromq/src/streamer.cpp b/util/network/zeromq/src/streamer.cpp
deleted file mode 100644
index 97990070..00000000
--- a/util/network/zeromq/src/streamer.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "streamer.hpp"
-#include "socket_base.hpp"
-#include "err.hpp"
-
-int zmq::streamer (socket_base_t *insocket_, socket_base_t *outsocket_)
-{
- zmq_msg_t msg;
- int rc = zmq_msg_init (&msg);
- errno_assert (rc == 0);
-
- while (true) {
- rc = insocket_->recv (&msg, 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
-
- rc = outsocket_->send (&msg, 0);
- if (rc < 0) {
- if (errno == ETERM)
- return -1;
- errno_assert (false);
- }
- }
-
- return 0;
-}
diff --git a/util/network/zeromq/src/streamer.hpp b/util/network/zeromq/src/streamer.hpp
deleted file mode 100644
index 8827cff0..00000000
--- a/util/network/zeromq/src/streamer.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_STREAMER_HPP_INCLUDED__
-#define __ZMQ_STREAMER_HPP_INCLUDED__
-
-namespace zmq
-{
-
- int streamer (class socket_base_t *insocket_,
- class socket_base_t *outsocket_);
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/sub.cpp b/util/network/zeromq/src/sub.cpp
deleted file mode 100644
index eeb50cdc..00000000
--- a/util/network/zeromq/src/sub.cpp
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <string.h>
-
-#include "../include/zmq.h"
-
-#include "sub.hpp"
-#include "err.hpp"
-
-zmq::sub_t::sub_t (class app_thread_t *parent_) :
- socket_base_t (parent_),
- has_message (false),
- more (false)
-{
- options.requires_in = true;
- options.requires_out = false;
- zmq_msg_init (&message);
-}
-
-zmq::sub_t::~sub_t ()
-{
- zmq_msg_close (&message);
-}
-
-void zmq::sub_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (inpipe_ && !outpipe_);
- fq.attach (inpipe_);
-}
-
-void zmq::sub_t::xdetach_inpipe (class reader_t *pipe_)
-{
- zmq_assert (pipe_);
- fq.detach (pipe_);
-}
-
-void zmq::sub_t::xdetach_outpipe (class writer_t *pipe_)
-{
- // SUB socket is read-only thus there should be no outpipes.
- zmq_assert (false);
-}
-
-void zmq::sub_t::xkill (class reader_t *pipe_)
-{
- fq.kill (pipe_);
-}
-
-void zmq::sub_t::xrevive (class reader_t *pipe_)
-{
- fq.revive (pipe_);
-}
-
-void zmq::sub_t::xrevive (class writer_t *pipe_)
-{
- zmq_assert (false);
-}
-
-int zmq::sub_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- if (option_ == ZMQ_SUBSCRIBE) {
- subscriptions.add ((unsigned char*) optval_, optvallen_);
- return 0;
- }
-
- if (option_ == ZMQ_UNSUBSCRIBE) {
- if (!subscriptions.rm ((unsigned char*) optval_, optvallen_)) {
- errno = EINVAL;
- return -1;
- }
- return 0;
- }
-
- errno = EINVAL;
- return -1;
-}
-
-int zmq::sub_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- errno = ENOTSUP;
- return -1;
-}
-
-int zmq::sub_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- // If there's already a message prepared by a previous call to zmq_poll,
- // return it straight ahead.
- if (has_message) {
- zmq_msg_move (msg_, &message);
- has_message = false;
- more = msg_->flags & ZMQ_MSG_MORE;
- return 0;
- }
-
- // TODO: This can result in infinite loop in the case of continuous
- // stream of non-matching messages which breaks the non-blocking recv
- // semantics.
- while (true) {
-
- // Get a message using fair queueing algorithm.
- int rc = fq.recv (msg_, flags_);
-
- // If there's no message available, return immediately.
- // The same when error occurs.
- if (rc != 0)
- return -1;
-
- // Check whether the message matches at least one subscription.
- // Non-initial parts of the message are passed
- if (more || match (msg_)) {
- more = msg_->flags & ZMQ_MSG_MORE;
- return 0;
- }
-
- // Message doesn't match. Pop any remaining parts of the message
- // from the pipe.
- while (msg_->flags & ZMQ_MSG_MORE) {
- rc = fq.recv (msg_, ZMQ_NOBLOCK);
- zmq_assert (rc == 0);
- }
- }
-}
-
-bool zmq::sub_t::xhas_in ()
-{
- // There are subsequent parts of the partly-read message available.
- if (more)
- return true;
-
- // If there's already a message prepared by a previous call to zmq_poll,
- // return straight ahead.
- if (has_message)
- return true;
-
- // TODO: This can result in infinite loop in the case of continuous
- // stream of non-matching messages.
- while (true) {
-
- // Get a message using fair queueing algorithm.
- int rc = fq.recv (&message, ZMQ_NOBLOCK);
-
- // If there's no message available, return immediately.
- // The same when error occurs.
- if (rc != 0) {
- zmq_assert (errno == EAGAIN);
- return false;
- }
-
- // Check whether the message matches at least one subscription.
- if (match (&message)) {
- has_message = true;
- return true;
- }
-
- // Message doesn't match. Pop any remaining parts of the message
- // from the pipe.
- while (message.flags & ZMQ_MSG_MORE) {
- rc = fq.recv (&message, ZMQ_NOBLOCK);
- zmq_assert (rc == 0);
- }
- }
-}
-
-bool zmq::sub_t::xhas_out ()
-{
- return false;
-}
-
-bool zmq::sub_t::match (zmq_msg_t *msg_)
-{
- return subscriptions.check ((unsigned char*) zmq_msg_data (msg_),
- zmq_msg_size (msg_));
-}
diff --git a/util/network/zeromq/src/sub.hpp b/util/network/zeromq/src/sub.hpp
deleted file mode 100644
index 7b997c9e..00000000
--- a/util/network/zeromq/src/sub.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_SUB_HPP_INCLUDED__
-#define __ZMQ_SUB_HPP_INCLUDED__
-
-#include "../include/zmq.h"
-
-#include "prefix_tree.hpp"
-#include "socket_base.hpp"
-#include "fq.hpp"
-
-namespace zmq
-{
-
- class sub_t : public socket_base_t
- {
- public:
-
- sub_t (class app_thread_t *parent_);
- ~sub_t ();
-
- protected:
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- // Check whether the message matches at least one subscription.
- bool match (zmq_msg_t *msg_);
-
- // Fair queueing object for inbound pipes.
- fq_t fq;
-
- // The repository of subscriptions.
- prefix_tree_t subscriptions;
-
- // If true, 'message' contains a matching message to return on the
- // next recv call.
- bool has_message;
- zmq_msg_t message;
-
- // If true, part of a multipart message was already received, but
- // there are following parts still waiting.
- bool more;
-
- sub_t (const sub_t&);
- void operator = (const sub_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/tcp_connecter.cpp b/util/network/zeromq/src/tcp_connecter.cpp
deleted file mode 100644
index dee71be7..00000000
--- a/util/network/zeromq/src/tcp_connecter.cpp
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <string.h>
-
-#include <string>
-
-#include "../include/zmq.h"
-
-#include "tcp_connecter.hpp"
-#include "platform.hpp"
-#include "ip.hpp"
-#include "err.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-
-zmq::tcp_connecter_t::tcp_connecter_t () :
- s (retired_fd)
-{
- memset (&addr, 0, sizeof (addr));
- addr_len = 0;
-}
-
-zmq::tcp_connecter_t::~tcp_connecter_t ()
-{
- if (s != retired_fd)
- close ();
-}
-
-int zmq::tcp_connecter_t::set_address (const char *protocol_, const char *addr_)
-{
- if (strcmp (protocol_, "tcp") == 0)
- return resolve_ip_hostname (&addr, &addr_len, addr_);
-
- errno = EPROTONOSUPPORT;
- return -1;
-}
-
-int zmq::tcp_connecter_t::open ()
-{
- zmq_assert (s == retired_fd);
-
- // Create the socket.
- s = socket (addr.ss_family, SOCK_STREAM, IPPROTO_TCP);
- if (s == INVALID_SOCKET) {
- wsa_error_to_errno ();
- return -1;
- }
-
- // Set to non-blocking mode.
- unsigned long argp = 1;
- int rc = ioctlsocket (s, FIONBIO, &argp);
- wsa_assert (rc != SOCKET_ERROR);
-
- // Disable Nagle's algorithm.
- int flag = 1;
- rc = setsockopt (s, IPPROTO_TCP, TCP_NODELAY, (char*) &flag,
- sizeof (int));
- wsa_assert (rc != SOCKET_ERROR);
-
- // Connect to the remote peer.
- rc = ::connect (s, (sockaddr*) &addr, addr_len);
-
- // Connect was successfull immediately.
- if (rc == 0)
- return 0;
-
- // Asynchronous connect was launched.
- if (rc == SOCKET_ERROR && (WSAGetLastError () == WSAEINPROGRESS ||
- WSAGetLastError () == WSAEWOULDBLOCK)) {
- errno = EAGAIN;
- return -1;
- }
-
- wsa_error_to_errno ();
- return -1;
-}
-
-int zmq::tcp_connecter_t::close ()
-{
- zmq_assert (s != retired_fd);
- int rc = closesocket (s);
- wsa_assert (rc != SOCKET_ERROR);
- s = retired_fd;
- return 0;
-}
-
-zmq::fd_t zmq::tcp_connecter_t::get_fd ()
-{
- return s;
-}
-
-zmq::fd_t zmq::tcp_connecter_t::connect ()
-{
- // Nonblocking connect have finished. Check whether an error occured.
- int err = 0;
- socklen_t len = sizeof err;
- int rc = getsockopt (s, SOL_SOCKET, SO_ERROR, (char*) &err, &len);
- zmq_assert (rc == 0);
- if (err != 0) {
-
- // Assert that the error was caused by the networking problems
- // rather than 0MQ bug.
- errno = err;
- errno_assert (errno == WSAECONNREFUSED || errno == WSAETIMEDOUT ||
- errno == WSAECONNABORTED || errno == WSAEHOSTUNREACH);
-
- return retired_fd;
- }
-
- // Return the newly connected socket.
- fd_t result = s;
- s = retired_fd;
- return result;
-}
-
-#else
-
-#include <unistd.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netinet/tcp.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <fcntl.h>
-
-#ifdef ZMQ_HAVE_OPENVMS
-#include <ioctl.h>
-#endif
-
-zmq::tcp_connecter_t::tcp_connecter_t () :
- s (retired_fd)
-{
- memset (&addr, 0, sizeof (addr));
-}
-
-zmq::tcp_connecter_t::~tcp_connecter_t ()
-{
- if (s != retired_fd)
- close ();
-}
-
-int zmq::tcp_connecter_t::set_address (const char *protocol_, const char *addr_)
-{
- if (strcmp (protocol_, "tcp") == 0)
- return resolve_ip_hostname (&addr, &addr_len, addr_);
- else if (strcmp (protocol_, "ipc") == 0)
- return resolve_local_path (&addr, &addr_len, addr_);
-
- errno = EPROTONOSUPPORT;
- return -1;
-}
-
-int zmq::tcp_connecter_t::open ()
-{
- zmq_assert (s == retired_fd);
- struct sockaddr *sa = (struct sockaddr*) &addr;
-
- if (AF_UNIX != sa->sa_family) {
-
- // Create the socket.
- s = socket (sa->sa_family, SOCK_STREAM, IPPROTO_TCP);
- if (s == -1)
- return -1;
-
- // Set to non-blocking mode.
-#ifdef ZMQ_HAVE_OPENVMS
- int flags = 1;
- int rc = ioctl (s, FIONBIO, &flags);
- errno_assert (rc != -1);
-#else
- int flags = fcntl (s, F_GETFL, 0);
- if (flags == -1)
- flags = 0;
- int rc = fcntl (s, F_SETFL, flags | O_NONBLOCK);
- errno_assert (rc != -1);
-#endif
-
- // Disable Nagle's algorithm.
- int flag = 1;
- rc = setsockopt (s, IPPROTO_TCP, TCP_NODELAY, (char*) &flag,
- sizeof (int));
- errno_assert (rc == 0);
-
-#ifdef ZMQ_HAVE_OPENVMS
- // Disable delayed acknowledgements.
- flag = 1;
- rc = setsockopt (s, IPPROTO_TCP, TCP_NODELACK, (char*) &flag,
- sizeof (int));
- errno_assert (rc != SOCKET_ERROR);
-#endif
-
- // Connect to the remote peer.
- rc = ::connect (s, (struct sockaddr*) &addr, addr_len);
-
- // Connect was successfull immediately.
- if (rc == 0)
- return 0;
-
- // Asynchronous connect was launched.
- if (rc == -1 && errno == EINPROGRESS) {
- errno = EAGAIN;
- return -1;
- }
-
- // Error occured.
- int err = errno;
- close ();
- errno = err;
- return -1;
- }
-
-#ifndef ZMQ_HAVE_OPENVMS
- else {
-
- // Create the socket.
- zmq_assert (AF_UNIX == sa->sa_family);
- s = socket (AF_UNIX, SOCK_STREAM, 0);
- if (s == -1)
- return -1;
-
- // Set the non-blocking flag.
- int flag = fcntl (s, F_GETFL, 0);
- if (flag == -1)
- flag = 0;
- int rc = fcntl (s, F_SETFL, flag | O_NONBLOCK);
- errno_assert (rc != -1);
-
- // Connect to the remote peer.
- rc = ::connect (s, (struct sockaddr*) &addr, sizeof (sockaddr_un));
-
- // Connect was successfull immediately.
- if (rc == 0)
- return 0;
-
- // Error occured.
- int err = errno;
- close ();
- errno = err;
- return -1;
- }
-#endif
-
- zmq_assert (false);
- return -1;
-}
-
-int zmq::tcp_connecter_t::close ()
-{
- zmq_assert (s != retired_fd);
- int rc = ::close (s);
- if (rc != 0)
- return -1;
- s = retired_fd;
- return 0;
-}
-
-zmq::fd_t zmq::tcp_connecter_t::get_fd ()
-{
- return s;
-}
-
-zmq::fd_t zmq::tcp_connecter_t::connect ()
-{
- // Following code should handle both Berkeley-derived socket
- // implementations and Solaris.
- int err = 0;
-#if defined ZMQ_HAVE_HPUX
- int len = sizeof (err);
-#else
- socklen_t len = sizeof (err);
-#endif
- int rc = getsockopt (s, SOL_SOCKET, SO_ERROR, (char*) &err, &len);
- if (rc == -1)
- err = errno;
- if (err != 0) {
-
- // Assert if the error was caused by 0MQ bug.
- // Networking problems are OK. No need to assert.
- errno = err;
- errno_assert (errno == ECONNREFUSED || errno == ECONNRESET ||
- errno == ETIMEDOUT || errno == EHOSTUNREACH);
-
- return retired_fd;
- }
-
- fd_t result = s;
- s = retired_fd;
- return result;
-}
-
-#endif
diff --git a/util/network/zeromq/src/tcp_connecter.hpp b/util/network/zeromq/src/tcp_connecter.hpp
deleted file mode 100644
index f1a124fd..00000000
--- a/util/network/zeromq/src/tcp_connecter.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_TCP_CONNECTER_HPP_INCLUDED__
-#define __ZMQ_TCP_CONNECTER_HPP_INCLUDED__
-
-#include "platform.hpp"
-#include "fd.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#else
-#include <sys/types.h>
-#include <sys/socket.h>
-#endif
-
-namespace zmq
-{
-
- // The class encapsulating simple TCP listening socket.
-
- class tcp_connecter_t
- {
- public:
-
- tcp_connecter_t ();
- ~tcp_connecter_t ();
-
- // Set address to connect to.
- int set_address (const char *protocol, const char *addr_);
-
- // Open TCP connecting socket. Address is in
- // <hostname>:<port-number> format. Returns -1 in case of error,
- // 0 if connect was successfull immediately and 1 if async connect
- // was launched.
- int open ();
-
- // Close the connecting socket.
- int close ();
-
- // Get the file descriptor to poll on to get notified about
- // connection success.
- fd_t get_fd ();
-
- // Get the file descriptor of newly created connection. Returns
- // retired_fd if the connection was unsuccessfull.
- fd_t connect ();
-
- private:
-
- // Address to connect to.
- sockaddr_storage addr;
- socklen_t addr_len;
-
- // Underlying socket.
- fd_t s;
-
- tcp_connecter_t (const tcp_connecter_t&);
- void operator = (const tcp_connecter_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/tcp_listener.cpp b/util/network/zeromq/src/tcp_listener.cpp
deleted file mode 100644
index a62bc043..00000000
--- a/util/network/zeromq/src/tcp_listener.cpp
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <string.h>
-
-#include "../include/zmq.h"
-
-#include "tcp_listener.hpp"
-#include "platform.hpp"
-#include "ip.hpp"
-#include "config.hpp"
-#include "err.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-
-zmq::tcp_listener_t::tcp_listener_t () :
- s (retired_fd)
-{
- memset (&addr, 0, sizeof (addr));
- addr_len = 0;
-}
-
-zmq::tcp_listener_t::~tcp_listener_t ()
-{
- if (s != retired_fd)
- close ();
-}
-
-int zmq::tcp_listener_t::set_address (const char *protocol_, const char *addr_)
-{
- // IPC protocol is not supported on Windows platform.
- if (strcmp (protocol_, "tcp") != 0 ) {
- errno = EPROTONOSUPPORT;
- return -1;
- }
-
- // Convert the interface into sockaddr_in structure.
- int rc = resolve_ip_interface (&addr, &addr_len, addr_);
- if (rc != 0)
- return rc;
-
- // Create a listening socket.
- s = socket (addr.ss_family, SOCK_STREAM, IPPROTO_TCP);
- if (s == INVALID_SOCKET) {
- wsa_error_to_errno ();
- return -1;
- }
-
- // Allow reusing of the address.
- int flag = 1;
- rc = setsockopt (s, SOL_SOCKET, SO_EXCLUSIVEADDRUSE,
- (const char*) &flag, sizeof (int));
- wsa_assert (rc != SOCKET_ERROR);
-
- // Set the non-blocking flag.
- u_long uflag = 1;
- rc = ioctlsocket (s, FIONBIO, &uflag);
- wsa_assert (rc != SOCKET_ERROR);
-
- // Bind the socket to the network interface and port.
- rc = bind (s, (struct sockaddr*) &addr, addr_len);
- if (rc == SOCKET_ERROR) {
- wsa_error_to_errno ();
- return -1;
- }
-
- // Listen for incomming connections.
- rc = listen (s, 1);
- if (rc == SOCKET_ERROR) {
- wsa_error_to_errno ();
- return -1;
- }
-
- return 0;
-}
-
-int zmq::tcp_listener_t::close ()
-{
- zmq_assert (s != retired_fd);
- int rc = closesocket (s);
- wsa_assert (rc != SOCKET_ERROR);
- s = retired_fd;
- return 0;
-}
-
-zmq::fd_t zmq::tcp_listener_t::get_fd ()
-{
- return s;
-}
-
-zmq::fd_t zmq::tcp_listener_t::accept ()
-{
- zmq_assert (s != retired_fd);
-
- // Accept one incoming connection.
- fd_t sock = ::accept (s, NULL, NULL);
- if (sock == INVALID_SOCKET &&
- (WSAGetLastError () == WSAEWOULDBLOCK ||
- WSAGetLastError () == WSAECONNRESET))
- return retired_fd;
-
- zmq_assert (sock != INVALID_SOCKET);
-
- // Set to non-blocking mode.
- unsigned long argp = 1;
- int rc = ioctlsocket (sock, FIONBIO, &argp);
- wsa_assert (rc != SOCKET_ERROR);
-
- // Disable Nagle's algorithm.
- int flag = 1;
- rc = setsockopt (sock, IPPROTO_TCP, TCP_NODELAY, (char*) &flag,
- sizeof (int));
- wsa_assert (rc != SOCKET_ERROR);
-
- return sock;
-}
-
-#else
-
-#include <unistd.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netinet/tcp.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <fcntl.h>
-
-#ifndef ZMQ_HAVE_OPENVMS
-#include <sys/un.h>
-#endif
-
-#ifdef ZMQ_HAVE_OPENVMS
-#include <ioctl.h>
-#endif
-
-zmq::tcp_listener_t::tcp_listener_t () :
- s (retired_fd)
-{
- memset (&addr, 0, sizeof (addr));
-}
-
-zmq::tcp_listener_t::~tcp_listener_t ()
-{
- if (s != retired_fd)
- close ();
-}
-
-int zmq::tcp_listener_t::set_address (const char *protocol_, const char *addr_)
-{
- if (strcmp (protocol_, "tcp") == 0 ) {
-
- // Resolve the sockaddr to bind to.
- int rc = resolve_ip_interface (&addr, &addr_len, addr_);
- if (rc != 0)
- return -1;
-
- // Create a listening socket.
- s = socket (addr.ss_family, SOCK_STREAM, IPPROTO_TCP);
- if (s == -1)
- return -1;
-
- // Allow reusing of the address.
- int flag = 1;
- rc = setsockopt (s, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof (int));
- errno_assert (rc == 0);
-
- // Set the non-blocking flag.
-#ifdef ZMQ_HAVE_OPENVMS
- flag = 1;
- rc = ioctl (s, FIONBIO, &flag);
- errno_assert (rc != -1);
-#else
- flag = fcntl (s, F_GETFL, 0);
- if (flag == -1)
- flag = 0;
- rc = fcntl (s, F_SETFL, flag | O_NONBLOCK);
- errno_assert (rc != -1);
-#endif
-
- // Bind the socket to the network interface and port.
- rc = bind (s, (struct sockaddr*) &addr, addr_len);
- if (rc != 0) {
- close ();
- return -1;
- }
-
- // Listen for incomming connections.
- rc = listen (s, tcp_connection_backlog);
- if (rc != 0) {
- close ();
- return -1;
- }
-
- return 0;
- }
-#ifndef ZMQ_HAVE_OPENVMS
- else if (strcmp (protocol_, "ipc") == 0) {
-
- // Get rid of the file associated with the UNIX domain socket that
- // may have been left behind by the previous run of the application.
- ::unlink (addr_);
-
- // Convert the address into sockaddr_un structure.
- int rc = resolve_local_path (&addr, &addr_len, addr_);
- if (rc != 0)
- return -1;
-
- // Create a listening socket.
- s = socket (AF_UNIX, SOCK_STREAM, 0);
- if (s == -1)
- return -1;
-
- // Set the non-blocking flag.
- int flag = fcntl (s, F_GETFL, 0);
- if (flag == -1)
- flag = 0;
- rc = fcntl (s, F_SETFL, flag | O_NONBLOCK);
- errno_assert (rc != -1);
-
- // Bind the socket to the file path.
- rc = bind (s, (struct sockaddr*) &addr, sizeof (sockaddr_un));
- if (rc != 0) {
- close ();
- return -1;
- }
-
- // Listen for incomming connections.
- rc = listen (s, tcp_connection_backlog);
- if (rc != 0) {
- close ();
- return -1;
- }
-
- return 0;
- }
-#endif
- else {
- errno = EPROTONOSUPPORT;
- return -1;
- }
-}
-
-int zmq::tcp_listener_t::close ()
-{
- zmq_assert (s != retired_fd);
- int rc = ::close (s);
- if (rc != 0)
- return -1;
- s = retired_fd;
-
-#ifndef ZMQ_HAVE_OPENVMS
- // If there's an underlying UNIX domain socket, get rid of the file it
- // is associated with.
- struct sockaddr_un *su = (struct sockaddr_un*) &addr;
- if (AF_UNIX == su->sun_family) {
- rc = ::unlink(su->sun_path);
- if (rc != 0)
- return -1;
- }
-#endif
-
- return 0;
-}
-
-zmq::fd_t zmq::tcp_listener_t::get_fd ()
-{
- return s;
-}
-
-zmq::fd_t zmq::tcp_listener_t::accept ()
-{
- zmq_assert (s != retired_fd);
-
- // Accept one incoming connection.
- fd_t sock = ::accept (s, NULL, NULL);
-
-#if (defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD || \
- defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_OSX || \
- defined ZMQ_HAVE_OPENVMS || defined ZMQ_HAVE_NETBSD)
- if (sock == -1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK ||
- errno == EINTR || errno == ECONNABORTED))
- return retired_fd;
-#elif (defined ZMQ_HAVE_SOLARIS || defined ZMQ_HAVE_AIX)
- if (sock == -1 &&
- (errno == EWOULDBLOCK || errno == EINTR ||
- errno == ECONNABORTED || errno == EPROTO))
- return retired_fd;
-#elif defined ZMQ_HAVE_HPUX
- if (sock == -1 &&
- (errno == EAGAIN || errno == EWOULDBLOCK ||
- errno == EINTR || errno == ECONNABORTED || errno == ENOBUFS))
- return retired_fd;
-#elif defined ZMQ_HAVE_QNXNTO
- if (sock == -1 &&
- (errno == EWOULDBLOCK || errno == EINTR || errno == ECONNABORTED))
- return retired_fd;
-#endif
-
- errno_assert (sock != -1);
-
- // Set to non-blocking mode.
-#ifdef ZMQ_HAVE_OPENVMS
- int flags = 1;
- int rc = ioctl (sock, FIONBIO, &flags);
- errno_assert (rc != -1);
-#else
- int flags = fcntl (s, F_GETFL, 0);
- if (flags == -1)
- flags = 0;
- int rc = fcntl (sock, F_SETFL, flags | O_NONBLOCK);
- errno_assert (rc != -1);
-#endif
-
- struct sockaddr *sa = (struct sockaddr*) &addr;
- if (AF_UNIX != sa->sa_family) {
-
- // Disable Nagle's algorithm.
- int flag = 1;
- rc = setsockopt (sock, IPPROTO_TCP, TCP_NODELAY, (char*) &flag,
- sizeof (int));
- errno_assert (rc == 0);
-
-#ifdef ZMQ_HAVE_OPENVMS
- // Disable delayed acknowledgements.
- flag = 1;
- rc = setsockopt (sock, IPPROTO_TCP, TCP_NODELACK, (char*) &flag,
- sizeof (int));
- errno_assert (rc != SOCKET_ERROR);
-#endif
- }
-
- return sock;
-}
-
-#endif
diff --git a/util/network/zeromq/src/tcp_listener.hpp b/util/network/zeromq/src/tcp_listener.hpp
deleted file mode 100644
index 3b607195..00000000
--- a/util/network/zeromq/src/tcp_listener.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_TCP_LISTENER_HPP_INCLUDED__
-#define __ZMQ_TCP_LISTENER_HPP_INCLUDED__
-
-#include "fd.hpp"
-#include "ip.hpp"
-
-namespace zmq
-{
-
- // The class encapsulating simple TCP listening socket.
-
- class tcp_listener_t
- {
- public:
-
- tcp_listener_t ();
- ~tcp_listener_t ();
-
- // Start listening on the interface.
- int set_address (const char *protocol_, const char *addr_);
-
- // Close the listening socket.
- int close ();
-
- // Get the file descriptor to poll on to get notified about
- // newly created connections.
- fd_t get_fd ();
-
- // Accept the new connection. Returns the file descriptor of the
- // newly created connection. The function may return retired_fd
- // if the connection was dropped while waiting in the listen backlog.
- fd_t accept ();
-
- private:
-
- // Address to listen on.
- sockaddr_storage addr;
- socklen_t addr_len;
-
- // Underlying socket.
- fd_t s;
-
- tcp_listener_t (const tcp_listener_t&);
- void operator = (const tcp_listener_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/tcp_socket.cpp b/util/network/zeromq/src/tcp_socket.cpp
deleted file mode 100644
index c83bba60..00000000
--- a/util/network/zeromq/src/tcp_socket.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "tcp_socket.hpp"
-#include "platform.hpp"
-#include "err.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-
-zmq::tcp_socket_t::tcp_socket_t () :
- s (retired_fd)
-{
-}
-
-zmq::tcp_socket_t::~tcp_socket_t ()
-{
- if (s != retired_fd)
- close ();
-}
-
-int zmq::tcp_socket_t::open (fd_t fd_, uint64_t sndbuf_, uint64_t rcvbuf_)
-{
- zmq_assert (s == retired_fd);
- s = fd_;
-
- if (sndbuf_) {
- int sz = (int) sndbuf_;
- int rc = setsockopt (s, SOL_SOCKET, SO_SNDBUF,
- (char*) &sz, sizeof (int));
- errno_assert (rc == 0);
- }
-
- if (rcvbuf_) {
- int sz = (int) rcvbuf_;
- int rc = setsockopt (s, SOL_SOCKET, SO_RCVBUF,
- (char*) &sz, sizeof (int));
- errno_assert (rc == 0);
- }
-
- return 0;
-}
-
-int zmq::tcp_socket_t::close ()
-{
- zmq_assert (s != retired_fd);
- int rc = closesocket (s);
- wsa_assert (rc != SOCKET_ERROR);
- s = retired_fd;
- return 0;
-}
-
-zmq::fd_t zmq::tcp_socket_t::get_fd ()
-{
- return s;
-}
-
-int zmq::tcp_socket_t::write (const void *data, int size)
-{
- int nbytes = send (s, (char*) data, size, 0);
-
- // If not a single byte can be written to the socket in non-blocking mode
- // we'll get an error (this may happen during the speculative write).
- if (nbytes == SOCKET_ERROR && WSAGetLastError () == WSAEWOULDBLOCK)
- return 0;
-
- // Signalise peer failure.
- if (nbytes == -1 && (
- WSAGetLastError () == WSAENETDOWN ||
- WSAGetLastError () == WSAENETRESET ||
- WSAGetLastError () == WSAEHOSTUNREACH ||
- WSAGetLastError () == WSAECONNABORTED ||
- WSAGetLastError () == WSAETIMEDOUT ||
- WSAGetLastError () == WSAECONNRESET))
- return -1;
-
- wsa_assert (nbytes != SOCKET_ERROR);
-
- return (size_t) nbytes;
-}
-
-int zmq::tcp_socket_t::read (void *data, int size)
-{
- int nbytes = recv (s, (char*) data, size, 0);
-
- // If not a single byte can be read from the socket in non-blocking mode
- // we'll get an error (this may happen during the speculative read).
- if (nbytes == SOCKET_ERROR && WSAGetLastError () == WSAEWOULDBLOCK)
- return 0;
-
- // Connection failure.
- if (nbytes == -1 && (
- WSAGetLastError () == WSAENETDOWN ||
- WSAGetLastError () == WSAENETRESET ||
- WSAGetLastError () == WSAECONNABORTED ||
- WSAGetLastError () == WSAETIMEDOUT ||
- WSAGetLastError () == WSAECONNRESET ||
- WSAGetLastError () == WSAECONNREFUSED ||
- WSAGetLastError () == WSAENOTCONN))
- return -1;
-
- wsa_assert (nbytes != SOCKET_ERROR);
-
- // Orderly shutdown by the other peer.
- if (nbytes == 0)
- return -1;
-
- return (size_t) nbytes;
-}
-
-#else
-
-#include <unistd.h>
-#include <sys/socket.h>
-#include <arpa/inet.h>
-#include <netinet/tcp.h>
-#include <netinet/in.h>
-#include <netdb.h>
-#include <fcntl.h>
-
-zmq::tcp_socket_t::tcp_socket_t () :
- s (retired_fd)
-{
-}
-
-zmq::tcp_socket_t::~tcp_socket_t ()
-{
- if (s != retired_fd)
- close ();
-}
-
-int zmq::tcp_socket_t::open (fd_t fd_, uint64_t sndbuf_, uint64_t rcvbuf_)
-{
- assert (s == retired_fd);
- s = fd_;
-
- if (sndbuf_) {
- int sz = (int) sndbuf_;
- int rc = setsockopt (s, SOL_SOCKET, SO_SNDBUF, &sz, sizeof (int));
- errno_assert (rc == 0);
- }
-
- if (rcvbuf_) {
- int sz = (int) rcvbuf_;
- int rc = setsockopt (s, SOL_SOCKET, SO_RCVBUF, &sz, sizeof (int));
- errno_assert (rc == 0);
- }
-
- return 0;
-}
-
-int zmq::tcp_socket_t::close ()
-{
- zmq_assert (s != retired_fd);
- int rc = ::close (s);
- if (rc != 0)
- return -1;
- s = retired_fd;
- return 0;
-}
-
-zmq::fd_t zmq::tcp_socket_t::get_fd ()
-{
- return s;
-}
-
-int zmq::tcp_socket_t::write (const void *data, int size)
-{
- ssize_t nbytes = send (s, data, size, 0);
-
- // Several errors are OK. When speculative write is being done we may not
- // be able to write a single byte to the socket. Also, SIGSTOP issued
- // by a debugging tool can result in EINTR error.
- if (nbytes == -1 && (errno == EAGAIN || errno == EWOULDBLOCK ||
- errno == EINTR))
- return 0;
-
- // Signalise peer failure.
- if (nbytes == -1 && (errno == ECONNRESET || errno == EPIPE))
- return -1;
-
- errno_assert (nbytes != -1);
- return (size_t) nbytes;
-}
-
-int zmq::tcp_socket_t::read (void *data, int size)
-{
- ssize_t nbytes = recv (s, data, size, 0);
-
- // Several errors are OK. When speculative read is being done we may not
- // be able to read a single byte to the socket. Also, SIGSTOP issued
- // by a debugging tool can result in EINTR error.
- if (nbytes == -1 && (errno == EAGAIN || errno == EWOULDBLOCK ||
- errno == EINTR))
- return 0;
-
- // Signalise peer failure.
- if (nbytes == -1 && (errno == ECONNRESET || errno == ECONNREFUSED ||
- errno == ETIMEDOUT || errno == EHOSTUNREACH))
- return -1;
-
- errno_assert (nbytes != -1);
-
- // Orderly shutdown by the other peer.
- if (nbytes == 0)
- return -1;
-
- return (size_t) nbytes;
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/tcp_socket.hpp b/util/network/zeromq/src/tcp_socket.hpp
deleted file mode 100644
index 3aae060d..00000000
--- a/util/network/zeromq/src/tcp_socket.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_TCP_SOCKET_HPP_INCLUDED__
-#define __ZMQ_TCP_SOCKET_HPP_INCLUDED__
-
-#include "fd.hpp"
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- // The class encapsulating simple TCP read/write socket.
-
- class tcp_socket_t
- {
- public:
-
- tcp_socket_t ();
- ~tcp_socket_t ();
-
- // Associates a socket with a native socket descriptor.
- int open (fd_t fd_, uint64_t sndbuf_, uint64_t rcvbuf_);
-
- // Closes the underlying socket.
- int close ();
-
- // Returns the underlying socket. Returns retired_fd when the socket
- // is in the closed state.
- fd_t get_fd ();
-
- // Writes data to the socket. Returns the number of bytes actually
- // written (even zero is to be considered to be a success). In case
- // of error or orderly shutdown by the other peer -1 is returned.
- int write (const void *data, int size);
-
- // Reads data from the socket (up to 'size' bytes). Returns the number
- // of bytes actually read (even zero is to be considered to be
- // a success). In case of error or orderly shutdown by the other
- // peer -1 is returned.
- int read (void *data, int size);
-
- private:
-
- // Underlying socket.
- fd_t s;
-
- // Disable copy construction of tcp_socket.
- tcp_socket_t (const tcp_socket_t&);
- void operator = (const tcp_socket_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/thread.cpp b/util/network/zeromq/src/thread.cpp
deleted file mode 100644
index 602ca8b6..00000000
--- a/util/network/zeromq/src/thread.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "thread.hpp"
-#include "err.hpp"
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-
-void zmq::thread_t::start (thread_fn *tfn_, void *arg_)
-{
- tfn = tfn_;
- arg =arg_;
- descriptor = (HANDLE) _beginthreadex (NULL, 0,
- &zmq::thread_t::thread_routine, this, 0 , NULL);
- win_assert (descriptor != NULL);
-}
-
-void zmq::thread_t::stop ()
-{
- DWORD rc = WaitForSingleObject (descriptor, INFINITE);
- win_assert (rc != WAIT_FAILED);
-}
-
-zmq::thread_t::id_t zmq::thread_t::id ()
-{
- return GetCurrentThreadId ();
-}
-
-bool zmq::thread_t::equal (id_t id1_, id_t id2_)
-{
- return id1_ == id2_;
-}
-
-unsigned int __stdcall zmq::thread_t::thread_routine (void *arg_)
-{
- thread_t *self = (thread_t*) arg_;
- self->tfn (self->arg);
- return 0;
-}
-
-#else
-
-#include <signal.h>
-
-void zmq::thread_t::start (thread_fn *tfn_, void *arg_)
-{
- tfn = tfn_;
- arg =arg_;
- int rc = pthread_create (&descriptor, NULL, thread_routine, this);
- errno_assert (rc == 0);
-}
-
-void zmq::thread_t::stop ()
-{
- int rc = pthread_join (descriptor, NULL);
- errno_assert (rc == 0);
-}
-
-zmq::thread_t::id_t zmq::thread_t::id ()
-{
- return pthread_self ();
-}
-
-bool zmq::thread_t::equal (id_t id1_, id_t id2_)
-{
- return pthread_equal (id1_, id2_) != 0;
-}
-
-void *zmq::thread_t::thread_routine (void *arg_)
-{
-#if !defined ZMQ_HAVE_OPENVMS
- // Following code will guarantee more predictable latecnies as it'll
- // disallow any signal handling in the I/O thread.
- sigset_t signal_set;
- int rc = sigfillset (&signal_set);
- errno_assert (rc == 0);
- rc = pthread_sigmask (SIG_BLOCK, &signal_set, NULL);
- errno_assert (rc == 0);
-#endif
-
- thread_t *self = (thread_t*) arg_;
- self->tfn (self->arg);
- return NULL;
-}
-
-#endif
-
-
-
-
-
diff --git a/util/network/zeromq/src/thread.hpp b/util/network/zeromq/src/thread.hpp
deleted file mode 100644
index 432770c2..00000000
--- a/util/network/zeromq/src/thread.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_THREAD_HPP_INCLUDED__
-#define __ZMQ_THREAD_HPP_INCLUDED__
-
-#include "platform.hpp"
-
-#ifdef ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#else
-#include <pthread.h>
-#endif
-
-namespace zmq
-{
-
- typedef void (thread_fn) (void*);
-
- // Class encapsulating OS thread. Thread initiation/termination is done
- // using special functions rather than in constructor/destructor so that
- // thread isn't created during object construction by accident, causing
- // newly created thread to access half-initialised object. Same applies
- // to the destruction process: Thread should be terminated before object
- // destruction begins, otherwise it can access half-destructed object.
-
- class thread_t
- {
- public:
-
- inline thread_t ()
- {
- }
-
- // Creates OS thread. 'tfn' is main thread function. It'll be passed
- // 'arg' as an argument.
- void start (thread_fn *tfn_, void *arg_);
-
- // Waits for thread termination.
- void stop ();
-
-#ifdef ZMQ_HAVE_WINDOWS
- typedef DWORD id_t;
-#else
- typedef pthread_t id_t;
-#endif
-
- static id_t id ();
- static bool equal (id_t id1_, id_t id2_);
-
- private:
-
-#ifdef ZMQ_HAVE_WINDOWS
- static unsigned int __stdcall thread_routine (void *arg_);
- HANDLE descriptor;
-#else
- static void *thread_routine (void *arg_);
- pthread_t descriptor;
-#endif
-
- thread_fn *tfn;
- void *arg;
-
- thread_t (const thread_t&);
- void operator = (const thread_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/uuid.cpp b/util/network/zeromq/src/uuid.cpp
deleted file mode 100644
index f1dddf09..00000000
--- a/util/network/zeromq/src/uuid.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "uuid.hpp"
-#include "err.hpp"
-
-#if defined ZMQ_HAVE_WINDOWS
-
-zmq::uuid_t::uuid_t ()
-{
- RPC_STATUS ret = UuidCreate (&uuid);
- zmq_assert (ret == RPC_S_OK);
- ret = UuidToString (&uuid, &string_buf);
- zmq_assert (ret == RPC_S_OK);
-
- /*
- HRESULT hr = CoCreateGUID (&uuid);
- zmq_assert (hr == S_OK);
- int rc = StringFromGUID2 (uuid, string_buf, 40);
- zmq_assert (rc != 0);
- */
-
- create_blob ();
-}
-
-zmq::uuid_t::~uuid_t ()
-{
-}
-
-const char *zmq::uuid_t::to_string ()
-{
- return (char*) string_buf;
-}
-
-#elif defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_NETBSD
-
-#include <stdlib.h>
-#include <uuid.h>
-
-zmq::uuid_t::uuid_t ()
-{
- uint32_t status;
- uuid_create (&uuid, &status);
- zmq_assert (status == uuid_s_ok);
- uuid_to_string (&uuid, &string_buf, &status);
- zmq_assert (status == uuid_s_ok);
-
- create_blob ();
-}
-
-zmq::uuid_t::~uuid_t ()
-{
- free (string_buf);
-}
-
-const char *zmq::uuid_t::to_string ()
-{
- return string_buf;
-}
-
-#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_SOLARIS ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_CYGWIN
-
-#include <uuid/uuid.h>
-
-zmq::uuid_t::uuid_t ()
-{
- uuid_generate (uuid);
- uuid_unparse (uuid, string_buf);
-
- create_blob ();
-}
-
-zmq::uuid_t::~uuid_t ()
-{
-}
-
-const char *zmq::uuid_t::to_string ()
-{
- return string_buf;
-}
-
-#elif defined ZMQ_HAVE_OPENVMS
-
-#include <starlet.h>
-
-#define uuid_generate(x) sys$create_uid(&(x))
-
-#define uuid_unparse(x, y) \
- sprintf (y, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", \
- x.data0, x.data1, x.data2, \
- x.data3 [0], x.data3 [1], \
- x.data3 [2], x.data3 [3], \
- x.data3 [4], x.data3 [5], \
- x.data3 [6], x.data3 [7]);
-
-zmq::uuid_t::uuid_t ()
-{
- uuid_generate (uuid);
- uuid_unparse (uuid, string_buf);
-}
-
-zmq::uuid_t::~uuid_t ()
-{
-}
-
-const char *zmq::uuid_t::to_string ()
-{
- return string_buf;
-}
-
-#else
-
-#include <stdio.h>
-#include <string.h>
-#include <openssl/rand.h>
-
-zmq::uuid_t::uuid_t ()
-{
- unsigned char rand_buf [16];
- int ret = RAND_bytes (rand_buf, sizeof rand_buf);
- zmq_assert (ret == 1);
-
- // Read in UUID fields.
- memcpy (&time_low, rand_buf, sizeof time_low);
- memcpy (&time_mid, rand_buf + 4, sizeof time_mid);
- memcpy (&time_hi_and_version, rand_buf + 6, sizeof time_hi_and_version);
- memcpy (&clock_seq_hi_and_reserved, rand_buf + 8,
- sizeof clock_seq_hi_and_reserved);
- memcpy (&clock_seq_low, rand_buf + 9, sizeof clock_seq_low);
- memcpy (&node [0], rand_buf + 10, sizeof node);
-
- // Store UUID version number.
- time_hi_and_version = (time_hi_and_version & 0x0fff) | 4 << 12;
-
- // Store UUID type.
- clock_seq_hi_and_reserved = (clock_seq_hi_and_reserved & 0x3f) | 0x80;
-
- snprintf (string_buf, sizeof string_buf,
- "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
- time_low,
- time_mid,
- time_hi_and_version,
- clock_seq_hi_and_reserved,
- clock_seq_low,
- node [0], node [1], node [2], node [3], node [4], node [5]);
-
- create_blob ();
-}
-
-zmq::uuid_t::~uuid_t ()
-{
-}
-
-const char *zmq::uuid_t::to_string ()
-{
- return string_buf;
-}
-
-#endif
-
-const unsigned char *zmq::uuid_t::to_blob ()
-{
- return blob_buf;
-}
-
-unsigned char zmq::uuid_t::convert_byte (const char *hexa_)
-{
- unsigned char byte;
-
- if (*hexa_ >= '0' && *hexa_ <= '9')
- byte = *hexa_ - '0';
- else if (*hexa_ >= 'A' && *hexa_ <= 'F')
- byte = *hexa_ - 'A' + 10;
- else if (*hexa_ >= 'a' && *hexa_ <= 'f')
- byte = *hexa_ - 'a' + 10;
- else {
- zmq_assert (false);
- byte = 0;
- }
-
- byte *= 16;
-
- hexa_++;
- if (*hexa_ >= '0' && *hexa_ <= '9')
- byte += *hexa_ - '0';
- else if (*hexa_ >= 'A' && *hexa_ <= 'F')
- byte += *hexa_ - 'A' + 10;
- else if (*hexa_ >= 'a' && *hexa_ <= 'f')
- byte += *hexa_ - 'a' + 10;
- else
- zmq_assert (false);
-
- return byte;
-}
-
-void zmq::uuid_t::create_blob ()
-{
- const char *buf = (const char*) string_buf;
-
- blob_buf [0] = convert_byte (buf + 0);
- blob_buf [1] = convert_byte (buf + 2);
- blob_buf [2] = convert_byte (buf + 4);
- blob_buf [3] = convert_byte (buf + 6);
-
- blob_buf [4] = convert_byte (buf + 9);
- blob_buf [5] = convert_byte (buf + 11);
-
- blob_buf [6] = convert_byte (buf + 14);
- blob_buf [7] = convert_byte (buf + 16);
-
- blob_buf [8] = convert_byte (buf + 19);
- blob_buf [9] = convert_byte (buf + 21);
-
- blob_buf [10] = convert_byte (buf + 24);
- blob_buf [11] = convert_byte (buf + 26);
- blob_buf [12] = convert_byte (buf + 28);
- blob_buf [13] = convert_byte (buf + 30);
- blob_buf [14] = convert_byte (buf + 32);
- blob_buf [15] = convert_byte (buf + 34);
-}
diff --git a/util/network/zeromq/src/uuid.hpp b/util/network/zeromq/src/uuid.hpp
deleted file mode 100644
index 871f8272..00000000
--- a/util/network/zeromq/src/uuid.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_UUID_HPP_INCLUDED__
-#define __ZMQ_UUID_HPP_INCLUDED__
-
-#include "platform.hpp"
-#include "stdint.hpp"
-
-#if defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_NETBSD
-#include <uuid.h>
-#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_SOLARIS ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_CYGWIN
-#include <uuid/uuid.h>
-#elif defined ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#include <rpc.h>
-#elif defined ZMQ_HAVE_OPENVMS
-typedef struct
-{
- unsigned long data0;
- unsigned short data1;
- unsigned short data2;
- unsigned char data3 [8];
-} uuid_t;
-#endif
-
-namespace zmq
-{
-
- // This class provides RFC 4122 (a Universally Unique IDentifier)
- // implementation.
-
- class uuid_t
- {
- public:
-
- uuid_t ();
- ~uuid_t ();
-
- // The length of textual representation of UUID.
- enum { uuid_string_len = 36 };
-
- // Returns a pointer to buffer containing the textual
- // representation of the UUID. The caller is reponsible to
- // free the allocated memory.
- const char *to_string ();
-
- // The length of binary representation of UUID.
- enum { uuid_blob_len = 16 };
-
- const unsigned char *to_blob ();
-
- private:
-
- // Converts one byte from hexa representation to binary.
- unsigned char convert_byte (const char *hexa_);
-
- // Converts string representation of UUID into standardised BLOB.
- // The function is endianness agnostic.
- void create_blob ();
-
-#if defined ZMQ_HAVE_WINDOWS
-#ifdef ZMQ_HAVE_MINGW32
- typedef unsigned char* RPC_CSTR;
-#endif
- ::UUID uuid;
- RPC_CSTR string_buf;
-#elif defined ZMQ_HAVE_FREEBSD || defined ZMQ_HAVE_NETBSD
- ::uuid_t uuid;
- char *string_buf;
-#elif defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_SOLARIS ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_CYGWIN ||\
- defined ZMQ_HAVE_OPENVMS
- ::uuid_t uuid;
- char string_buf [uuid_string_len + 1];
-#else
- // RFC 4122 UUID's fields
- uint32_t time_low;
- uint16_t time_mid;
- uint16_t time_hi_and_version;
- uint8_t clock_seq_hi_and_reserved;
- uint8_t clock_seq_low;
- uint8_t node [6];
-
- char string_buf [uuid_string_len + 1];
-#endif
-
- unsigned char blob_buf [uuid_blob_len];
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/windows.hpp b/util/network/zeromq/src/windows.hpp
deleted file mode 100644
index 8fc98b07..00000000
--- a/util/network/zeromq/src/windows.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_WINDOWS_HPP_INCLUDED__
-#define __ZMQ_WINDOWS_HPP_INCLUDED__
-
-// The purpose of this header file is to turn on only the items actually needed
-// on the windows platform.
-
-#define _WINSOCKAPI_
-#ifndef NOMINMAX
-#define NOMINMAX // No min and max functions, these clash with C++.
-#endif
-#define _CRT_SECURE_NO_WARNINGS
-
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#ifndef NOUSER // No USER defines and routines.
-#define NOUSER
-#endif
-#ifndef NOMCX // No Modem Configuration Extensions.
-#define NOMCX
-#endif
-#ifndef NOIME // No Input Method Editor.
-#define NOIME
-#endif
-#ifndef NOSOUND // No Sound driver routines.
-#define NOSOUND
-#endif
-
-#ifdef ZMQ_HAVE_MINGW32
-#ifdef WINVER
-#undef WINVER
-#endif
-#define WINVER 0x0501
-#endif
-
-#include <windows.h>
-
-// MSVC++ 2005 on Win2000 does not define _WIN32_WINNT.
-#ifndef _WIN32_WINNT
-#define _WIN32_WINNT WINVER
-#endif
-
-// Enable winsock (not included when WIN32_LEAN_AND_MEAN is defined).
-#if(_WIN32_WINNT >= 0x0400)
-#include <winsock2.h>
-#include <mswsock.h>
-#else
-#include <winsock.h>
-#endif
-
-#include <ws2tcpip.h>
-#include <ipexport.h>
-#include <process.h>
-
-// On mingw environment AI_NUMERICSERV is not defined, needed in ip.cpp.
-#ifndef AI_NUMERICSERV
-#define AI_NUMERICSERV 0x0400
-#endif
-#endif
diff --git a/util/network/zeromq/src/wire.hpp b/util/network/zeromq/src/wire.hpp
deleted file mode 100644
index 9534cf6c..00000000
--- a/util/network/zeromq/src/wire.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_WIRE_HPP_INCLUDED__
-#define __ZMQ_WIRE_HPP_INCLUDED__
-
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- // Helper functions to convert different integer types to/from network
- // byte order.
-
- inline void put_uint8 (unsigned char *buffer_, uint8_t value)
- {
- *buffer_ = value;
- }
-
- inline uint8_t get_uint8 (unsigned char *buffer_)
- {
- return *buffer_;
- }
-
- inline void put_uint16 (unsigned char *buffer_, uint16_t value)
- {
- buffer_ [0] = (unsigned char) (((value) >> 8) & 0xff);
- buffer_ [1] = (unsigned char) (value & 0xff);
- }
-
- inline uint16_t get_uint16 (unsigned char *buffer_)
- {
- return
- (((uint16_t) buffer_ [0]) << 8) |
- ((uint16_t) buffer_ [1]);
- }
-
- inline void put_uint32 (unsigned char *buffer_, uint32_t value)
- {
- buffer_ [0] = (unsigned char) (((value) >> 24) & 0xff);
- buffer_ [1] = (unsigned char) (((value) >> 16) & 0xff);
- buffer_ [2] = (unsigned char) (((value) >> 8) & 0xff);
- buffer_ [3] = (unsigned char) (value & 0xff);
- }
-
- inline uint32_t get_uint32 (unsigned char *buffer_)
- {
- return
- (((uint32_t) buffer_ [0]) << 24) |
- (((uint32_t) buffer_ [1]) << 16) |
- (((uint32_t) buffer_ [2]) << 8) |
- ((uint32_t) buffer_ [3]);
- }
-
- inline void put_uint64 (unsigned char *buffer_, uint64_t value)
- {
- buffer_ [0] = (unsigned char) (((value) >> 56) & 0xff);
- buffer_ [1] = (unsigned char) (((value) >> 48) & 0xff);
- buffer_ [2] = (unsigned char) (((value) >> 40) & 0xff);
- buffer_ [3] = (unsigned char) (((value) >> 32) & 0xff);
- buffer_ [4] = (unsigned char) (((value) >> 24) & 0xff);
- buffer_ [5] = (unsigned char) (((value) >> 16) & 0xff);
- buffer_ [6] = (unsigned char) (((value) >> 8) & 0xff);
- buffer_ [7] = (unsigned char) (value & 0xff);
- }
-
- inline uint64_t get_uint64 (unsigned char *buffer_)
- {
- return
- (((uint64_t) buffer_ [0]) << 56) |
- (((uint64_t) buffer_ [1]) << 48) |
- (((uint64_t) buffer_ [2]) << 40) |
- (((uint64_t) buffer_ [3]) << 32) |
- (((uint64_t) buffer_ [4]) << 24) |
- (((uint64_t) buffer_ [5]) << 16) |
- (((uint64_t) buffer_ [6]) << 8) |
- ((uint64_t) buffer_ [7]);
- }
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/xrep.cpp b/util/network/zeromq/src/xrep.cpp
deleted file mode 100644
index 5fd6cbb1..00000000
--- a/util/network/zeromq/src/xrep.cpp
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "xrep.hpp"
-#include "err.hpp"
-#include "pipe.hpp"
-
-zmq::xrep_t::xrep_t (class app_thread_t *parent_) :
- socket_base_t (parent_),
- current_in (0),
- prefetched (false),
- more_in (false),
- current_out (NULL),
- more_out (false)
-{
- options.requires_in = true;
- options.requires_out = true;
-
- // On connect, pipes are created only after initial handshaking.
- // That way we are aware of the peer's identity when binding to the pipes.
- options.immediate_connect = false;
-}
-
-zmq::xrep_t::~xrep_t ()
-{
- for (inpipes_t::iterator it = inpipes.begin (); it != inpipes.end (); it++)
- it->reader->term ();
- for (outpipes_t::iterator it = outpipes.begin (); it != outpipes.end ();
- it++)
- it->second.writer->term ();
-}
-
-void zmq::xrep_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (inpipe_ && outpipe_);
-
- // TODO: What if new connection has same peer identity as the old one?
- outpipe_t outpipe = {outpipe_, true};
- bool ok = outpipes.insert (std::make_pair (
- peer_identity_, outpipe)).second;
- zmq_assert (ok);
-
- inpipe_t inpipe = {inpipe_, peer_identity_, true};
- inpipes.push_back (inpipe);
-}
-
-void zmq::xrep_t::xdetach_inpipe (class reader_t *pipe_)
-{
-// TODO:!
- for (inpipes_t::iterator it = inpipes.begin (); it != inpipes.end ();
- it++) {
- if (it->reader == pipe_) {
- inpipes.erase (it);
- return;
- }
- }
- zmq_assert (false);
-}
-
-void zmq::xrep_t::xdetach_outpipe (class writer_t *pipe_)
-{
- for (outpipes_t::iterator it = outpipes.begin ();
- it != outpipes.end (); ++it) {
- if (it->second.writer == pipe_) {
- outpipes.erase (it);
- if (pipe_ == current_out)
- current_out = NULL;
- return;
- }
- }
- zmq_assert (false);
-}
-
-void zmq::xrep_t::xkill (class reader_t *pipe_)
-{
- for (inpipes_t::iterator it = inpipes.begin (); it != inpipes.end ();
- it++) {
- if (it->reader == pipe_) {
- zmq_assert (it->active);
- it->active = false;
- return;
- }
- }
- zmq_assert (false);
-}
-
-void zmq::xrep_t::xrevive (class reader_t *pipe_)
-{
- for (inpipes_t::iterator it = inpipes.begin (); it != inpipes.end ();
- it++) {
- if (it->reader == pipe_) {
- zmq_assert (!it->active);
- it->active = true;
- return;
- }
- }
- zmq_assert (false);
-}
-
-void zmq::xrep_t::xrevive (class writer_t *pipe_)
-{
- for (outpipes_t::iterator it = outpipes.begin ();
- it != outpipes.end (); ++it) {
- if (it->second.writer == pipe_) {
- zmq_assert (!it->second.active);
- it->second.active = true;
- return;
- }
- }
- zmq_assert (false);
-}
-
-int zmq::xrep_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- errno = EINVAL;
- return -1;
-}
-
-int zmq::xrep_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- // If this is the first part of the message it's the identity of the
- // peer to send the message to.
- if (!more_out) {
- zmq_assert (!current_out);
-
- // If we have malformed message (prefix with no subsequent message)
- // then just silently drop the message.
- if ((msg_->flags & ZMQ_MSG_MORE) == 0)
- return 0;
-
- more_out = true;
-
- // Find the pipe associated with the identity stored in the prefix.
- // If there's no such pipe just silently drop the message.
- blob_t identity ((unsigned char*) zmq_msg_data (msg_),
- zmq_msg_size (msg_));
- outpipes_t::iterator it = outpipes.find (identity);
- if (it == outpipes.end ())
- return 0;
-
- // Remember the outgoing pipe.
- current_out = it->second.writer;
-
- return 0;
- }
-
- // Check whether this is the last part of the message.
- more_out = msg_->flags & ZMQ_MSG_MORE;
-
- // Push the message into the pipe. If there's no out pipe, just drop it.
- if (current_out) {
- bool ok = current_out->write (msg_);
- zmq_assert (ok);
- if (!more_out) {
- current_out->flush ();
- current_out = NULL;
- }
- }
- else {
- int rc = zmq_msg_close (msg_);
- zmq_assert (rc == 0);
- }
-
- // Detach the message from the data buffer.
- int rc = zmq_msg_init (msg_);
- zmq_assert (rc == 0);
-
- return 0;
-}
-
-int zmq::xrep_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- // Deallocate old content of the message.
- zmq_msg_close (msg_);
-
- if (prefetched) {
- zmq_msg_move (msg_, &prefetched_msg);
- more_in = msg_->flags & ZMQ_MSG_MORE;
- prefetched = false;
- return 0;
- }
-
- // If we are in the middle of reading a message, just grab next part of it.
- if (more_in) {
- zmq_assert (inpipes [current_in].active);
- bool fetched = inpipes [current_in].reader->read (msg_);
- zmq_assert (fetched);
- more_in = msg_->flags & ZMQ_MSG_MORE;
- if (!more_in) {
- current_in++;
- if (current_in >= inpipes.size ())
- current_in = 0;
- }
- return 0;
- }
-
- // Round-robin over the pipes to get the next message.
- for (int count = inpipes.size (); count != 0; count--) {
-
- // Try to fetch new message.
- if (inpipes [current_in].active)
- prefetched = inpipes [current_in].reader->read (&prefetched_msg);
-
- // If we have a message, create a prefix and return it to the caller.
- if (prefetched) {
- int rc = zmq_msg_init_size (msg_,
- inpipes [current_in].identity.size ());
- zmq_assert (rc == 0);
- memcpy (zmq_msg_data (msg_), inpipes [current_in].identity.data (),
- zmq_msg_size (msg_));
- msg_->flags = ZMQ_MSG_MORE;
- return 0;
- }
-
- // If me don't have a message, move to next pipe.
- current_in++;
- if (current_in >= inpipes.size ())
- current_in = 0;
- }
-
- // No message is available. Initialise the output parameter
- // to be a 0-byte message.
- zmq_msg_init (msg_);
- errno = EAGAIN;
- return -1;
-}
-
-bool zmq::xrep_t::xhas_in ()
-{
- // There are subsequent parts of the partly-read message available.
- if (prefetched || more_in)
- return true;
-
- // Note that messing with current doesn't break the fairness of fair
- // queueing algorithm. If there are no messages available current will
- // get back to its original value. Otherwise it'll point to the first
- // pipe holding messages, skipping only pipes with no messages available.
- for (int count = inpipes.size (); count != 0; count--) {
- if (inpipes [current_in].active &&
- inpipes [current_in].reader->check_read ())
- return true;
- current_in++;
- if (current_in >= inpipes.size ())
- current_in = 0;
- }
-
- return false;
-}
-
-bool zmq::xrep_t::xhas_out ()
-{
- // In theory, XREP socket is always ready for writing. Whether actual
- // attempt to write succeeds depends on whitch pipe the message is going
- // to be routed to.
- return true;
-}
-
-
diff --git a/util/network/zeromq/src/xrep.hpp b/util/network/zeromq/src/xrep.hpp
deleted file mode 100644
index da1b3d8a..00000000
--- a/util/network/zeromq/src/xrep.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_XREP_HPP_INCLUDED__
-#define __ZMQ_XREP_HPP_INCLUDED__
-
-#include <map>
-#include <vector>
-
-#include "socket_base.hpp"
-#include "blob.hpp"
-
-namespace zmq
-{
-
- // TODO: This class uses O(n) scheduling. Rewrite it to use O(1) algorithm.
- class xrep_t : public socket_base_t
- {
- public:
-
- xrep_t (class app_thread_t *parent_);
- ~xrep_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- struct inpipe_t
- {
- class reader_t *reader;
- blob_t identity;
- bool active;
- };
-
- // Inbound pipes with the names of corresponging peers.
- typedef std::vector <inpipe_t> inpipes_t;
- inpipes_t inpipes;
-
- // The pipe we are currently reading from.
- inpipes_t::size_type current_in;
-
- // Have we prefetched a message.
- bool prefetched;
-
- // Holds the prefetched message.
- zmq_msg_t prefetched_msg;
-
- // If true, more incoming message parts are expected.
- bool more_in;
-
- struct outpipe_t
- {
- class writer_t *writer;
- bool active;
- };
-
- // Outbound pipes indexed by the peer names.
- typedef std::map <blob_t, outpipe_t> outpipes_t;
- outpipes_t outpipes;
-
- // The pipe we are currently writing to.
- class writer_t *current_out;
-
- // If true, more outgoing message parts are expected.
- bool more_out;
-
- xrep_t (const xrep_t&);
- void operator = (const xrep_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/xreq.cpp b/util/network/zeromq/src/xreq.cpp
deleted file mode 100644
index 66e5cc3a..00000000
--- a/util/network/zeromq/src/xreq.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-
-#include "xreq.hpp"
-#include "err.hpp"
-
-zmq::xreq_t::xreq_t (class app_thread_t *parent_) :
- socket_base_t (parent_)
-{
- options.requires_in = true;
- options.requires_out = true;
-}
-
-zmq::xreq_t::~xreq_t ()
-{
-}
-
-void zmq::xreq_t::xattach_pipes (class reader_t *inpipe_,
- class writer_t *outpipe_, const blob_t &peer_identity_)
-{
- zmq_assert (inpipe_ && outpipe_);
- fq.attach (inpipe_);
- lb.attach (outpipe_);
-}
-
-void zmq::xreq_t::xdetach_inpipe (class reader_t *pipe_)
-{
- zmq_assert (pipe_);
- fq.detach (pipe_);
-}
-
-void zmq::xreq_t::xdetach_outpipe (class writer_t *pipe_)
-{
- zmq_assert (pipe_);
- lb.detach (pipe_);
-}
-
-void zmq::xreq_t::xkill (class reader_t *pipe_)
-{
- fq.kill (pipe_);
-}
-
-void zmq::xreq_t::xrevive (class reader_t *pipe_)
-{
- fq.revive (pipe_);
-}
-
-void zmq::xreq_t::xrevive (class writer_t *pipe_)
-{
- lb.revive (pipe_);
-}
-
-int zmq::xreq_t::xsetsockopt (int option_, const void *optval_,
- size_t optvallen_)
-{
- errno = EINVAL;
- return -1;
-}
-
-int zmq::xreq_t::xsend (zmq_msg_t *msg_, int flags_)
-{
- return lb.send (msg_, flags_);
-}
-
-int zmq::xreq_t::xrecv (zmq_msg_t *msg_, int flags_)
-{
- return fq.recv (msg_, flags_);
-}
-
-bool zmq::xreq_t::xhas_in ()
-{
- return fq.has_in ();
-}
-
-bool zmq::xreq_t::xhas_out ()
-{
- return lb.has_out ();
-}
-
diff --git a/util/network/zeromq/src/xreq.hpp b/util/network/zeromq/src/xreq.hpp
deleted file mode 100644
index 8ee0bb93..00000000
--- a/util/network/zeromq/src/xreq.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_XREQ_HPP_INCLUDED__
-#define __ZMQ_XREQ_HPP_INCLUDED__
-
-#include "socket_base.hpp"
-#include "fq.hpp"
-#include "lb.hpp"
-
-namespace zmq
-{
-
- class xreq_t : public socket_base_t
- {
- public:
-
- xreq_t (class app_thread_t *parent_);
- ~xreq_t ();
-
- // Overloads of functions from socket_base_t.
- void xattach_pipes (class reader_t *inpipe_, class writer_t *outpipe_,
- const blob_t &peer_identity_);
- void xdetach_inpipe (class reader_t *pipe_);
- void xdetach_outpipe (class writer_t *pipe_);
- void xkill (class reader_t *pipe_);
- void xrevive (class reader_t *pipe_);
- void xrevive (class writer_t *pipe_);
- int xsetsockopt (int option_, const void *optval_, size_t optvallen_);
- int xsend (zmq_msg_t *msg_, int flags_);
- int xrecv (zmq_msg_t *msg_, int flags_);
- bool xhas_in ();
- bool xhas_out ();
-
- private:
-
- // Messages are fair-queued from inbound pipes. And load-balanced to
- // the outbound pipes.
- fq_t fq;
- lb_t lb;
-
- xreq_t (const xreq_t&);
- void operator = (const xreq_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/yarray.hpp b/util/network/zeromq/src/yarray.hpp
deleted file mode 100644
index 8c79b99b..00000000
--- a/util/network/zeromq/src/yarray.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_YARRAY_INCLUDED__
-#define __ZMQ_YARRAY_INCLUDED__
-
-#include <vector>
-#include <algorithm>
-
-namespace zmq
-{
-
- // Fast array implementation with O(1) access to item, insertion and
- // removal. Yarray stores pointers rather than objects. The objects have
- // to be derived from yarray_item_t class.
-
- template <typename T> class yarray_t
- {
- public:
-
- typedef typename std::vector <T*>::size_type size_type;
-
- inline yarray_t ()
- {
- }
-
- inline ~yarray_t ()
- {
- }
-
- inline size_type size ()
- {
- return items.size ();
- }
-
- inline bool empty ()
- {
- return items.empty ();
- }
-
- inline T *&operator [] (size_type index_)
- {
- return items [index_];
- }
-
- inline void push_back (T *item_)
- {
- if (item_)
- item_->set_yarray_index (items.size ());
- items.push_back (item_);
- }
-
- inline void erase (T *item_) {
- erase (item_->get_yarray_index ());
- }
-
- inline void erase (size_type index_) {
- if (items.back ())
- items.back ()->set_yarray_index (index_);
- items [index_] = items.back ();
- items.pop_back ();
- }
-
- inline void swap (size_type index1_, size_type index2_)
- {
- if (items [index1_])
- items [index1_]->set_yarray_index (index2_);
- if (items [index2_])
- items [index2_]->set_yarray_index (index1_);
- std::swap (items [index1_], items [index2_]);
- }
-
- inline void clear ()
- {
- items.clear ();
- }
-
- inline size_type index (T *item_)
- {
- return (size_type) item_->get_yarray_index ();
- }
-
- private:
-
- typedef std::vector <T*> items_t;
- items_t items;
-
- yarray_t (const yarray_t&);
- void operator = (const yarray_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/yarray_item.hpp b/util/network/zeromq/src/yarray_item.hpp
deleted file mode 100644
index db24dda3..00000000
--- a/util/network/zeromq/src/yarray_item.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_YARRAY_ITEM_INCLUDED__
-#define __ZMQ_YARRAY_ITEM_INCLUDED__
-
-namespace zmq
-{
-
- // Base class for objects stored in yarray. Note that each object can
- // be stored in at most one yarray.
-
- class yarray_item_t
- {
- public:
-
- inline yarray_item_t () :
- yarray_index (-1)
- {
- }
-
- // The destructor doesn't have to be virtual. It is mad virtual
- // just to keep ICC and code checking tools from complaining.
- inline virtual ~yarray_item_t ()
- {
- }
-
- inline void set_yarray_index (int index_)
- {
- yarray_index = index_;
- }
-
- inline int get_yarray_index ()
- {
- return yarray_index;
- }
-
- private:
-
- int yarray_index;
-
- yarray_item_t (const yarray_item_t&);
- void operator = (const yarray_item_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/ypipe.hpp b/util/network/zeromq/src/ypipe.hpp
deleted file mode 100644
index 26f021c8..00000000
--- a/util/network/zeromq/src/ypipe.hpp
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_YPIPE_HPP_INCLUDED__
-#define __ZMQ_YPIPE_HPP_INCLUDED__
-
-#include "atomic_ptr.hpp"
-#include "yqueue.hpp"
-#include "platform.hpp"
-
-namespace zmq
-{
-
- // Lock-free queue implementation.
- // Only a single thread can read from the pipe at any specific moment.
- // Only a single thread can write to the pipe at any specific moment.
- // T is the type of the object in the queue.
- // N is granularity of the pipe, i.e. how many items are needed to
- // perform next memory allocation.
-
- template <typename T, int N> class ypipe_t
- {
- public:
-
- // Initialises the pipe.
- inline ypipe_t ()
- {
- // Insert terminator element into the queue.
- queue.push ();
-
- // Let all the pointers to point to the terminator.
- // (unless pipe is dead, in which case c is set to NULL).
- r = w = f = &queue.back ();
- c.set (&queue.back ());
- }
-
- // The destructor doesn't have to be virtual. It is mad virtual
- // just to keep ICC and code checking tools from complaining.
- inline virtual ~ypipe_t ()
- {
- }
-
- // Following function (write) deliberately copies uninitialised data
- // when used with zmq_msg. Initialising the VSM body for
- // non-VSM messages won't be good for performance.
-
-#ifdef ZMQ_HAVE_OPENVMS
-#pragma message save
-#pragma message disable(UNINIT)
-#endif
-
- // Write an item to the pipe. Don't flush it yet. If incomplete is
- // set to true the item is assumed to be continued by items
- // subsequently written to the pipe. Incomplete items are never
- // flushed down the stream.
- inline void write (const T &value_, bool incomplete_)
- {
- // Place the value to the queue, add new terminator element.
- queue.back () = value_;
- queue.push ();
-
- // Move the "flush up to here" poiter.
- if (!incomplete_)
- f = &queue.back ();
- }
-
-#ifdef ZMQ_HAVE_OPENVMS
-#pragma message restore
-#endif
-
- // Pop an incomplete item from the pipe. Returns true is such
- // item exists, false otherwise.
- inline bool unwrite (T *value_)
- {
- if (f == &queue.back ())
- return false;
- queue.unpush ();
- *value_ = queue.back ();
- return true;
- }
-
- // Flush all the completed items into the pipe. Returns false if
- // the reader thread is sleeping. In that case, caller is obliged to
- // wake the reader up before using the pipe again.
- inline bool flush ()
- {
- // If there are no un-flushed items, do nothing.
- if (w == f)
- return true;
-
- // Try to set 'c' to 'f'.
- if (c.cas (w, f) != w) {
-
- // Compare-and-swap was unseccessful because 'c' is NULL.
- // This means that the reader is asleep. Therefore we don't
- // care about thread-safeness and update c in non-atomic
- // manner. We'll return false to let the caller know
- // that reader is sleeping.
- c.set (f);
- w = f;
- return false;
- }
-
- // Reader is alive. Nothing special to do now. Just move
- // the 'first un-flushed item' pointer to 'f'.
- w = f;
- return true;
- }
-
- // Check whether item is available for reading.
- inline bool check_read ()
- {
- // Was the value prefetched already? If so, return.
- if (&queue.front () != r)
- return true;
-
- // There's no prefetched value, so let us prefetch more values.
- // Prefetching is to simply retrieve the
- // pointer from c in atomic fashion. If there are no
- // items to prefetch, set c to NULL (using compare-and-swap).
- r = c.cas (&queue.front (), NULL);
-
- // If there are no elements prefetched, exit.
- // During pipe's lifetime r should never be NULL, however,
- // it can happen during pipe shutdown when items
- // are being deallocated.
- if (&queue.front () == r || !r)
- return false;
-
- // There was at least one value prefetched.
- return true;
- }
-
- // Reads an item from the pipe. Returns false if there is no value.
- // available.
- inline bool read (T *value_)
- {
- // Try to prefetch a value.
- if (!check_read ())
- return false;
-
- // There was at least one value prefetched.
- // Return it to the caller.
- *value_ = queue.front ();
- queue.pop ();
- return true;
- }
-
- // Applies the function fn to the first elemenent in the pipe
- // and returns the value returned by the fn.
- // The pipe mustn't be empty or the function crashes.
- inline bool probe (bool (*fn)(T &))
- {
- bool rc = check_read ();
- zmq_assert (rc);
-
- return (*fn) (queue.front ());
- }
-
- protected:
-
- // Allocation-efficient queue to store pipe items.
- // Front of the queue points to the first prefetched item, back of
- // the pipe points to last un-flushed item. Front is used only by
- // reader thread, while back is used only by writer thread.
- yqueue_t <T, N> queue;
-
- // Points to the first un-flushed item. This variable is used
- // exclusively by writer thread.
- T *w;
-
- // Points to the first un-prefetched item. This variable is used
- // exclusively by reader thread.
- T *r;
-
- // Points to the first item to be flushed in the future.
- T *f;
-
- // The single point of contention between writer and reader thread.
- // Points past the last flushed item. If it is NULL,
- // reader is asleep. This pointer should be always accessed using
- // atomic operations.
- atomic_ptr_t <T> c;
-
- // Disable copying of ypipe object.
- ypipe_t (const ypipe_t&);
- void operator = (const ypipe_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/yqueue.hpp b/util/network/zeromq/src/yqueue.hpp
deleted file mode 100644
index 9eaceb5b..00000000
--- a/util/network/zeromq/src/yqueue.hpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_YQUEUE_HPP_INCLUDED__
-#define __ZMQ_YQUEUE_HPP_INCLUDED__
-
-#include <stdlib.h>
-#include <stddef.h>
-
-#include "err.hpp"
-#include "atomic_ptr.hpp"
-
-namespace zmq
-{
-
- // yqueue is an efficient queue implementation. The main goal is
- // to minimise number of allocations/deallocations needed. Thus yqueue
- // allocates/deallocates elements in batches of N.
- //
- // yqueue allows one thread to use push/back function and another one
- // to use pop/front functions. However, user must ensure that there's no
- // pop on the empty queue and that both threads don't access the same
- // element in unsynchronised manner.
- //
- // T is the type of the object in the queue.
- // N is granularity of the queue (how many pushes have to be done till
- // actual memory allocation is required).
-
- template <typename T, int N> class yqueue_t
- {
- public:
-
- // Create the queue.
- inline yqueue_t ()
- {
- begin_chunk = (chunk_t*) malloc (sizeof (chunk_t));
- zmq_assert (begin_chunk);
- begin_pos = 0;
- back_chunk = NULL;
- back_pos = 0;
- end_chunk = begin_chunk;
- end_pos = 0;
- }
-
- // Destroy the queue.
- inline ~yqueue_t ()
- {
- while (true) {
- if (begin_chunk == end_chunk) {
- free (begin_chunk);
- break;
- }
- chunk_t *o = begin_chunk;
- begin_chunk = begin_chunk->next;
- free (o);
- }
-
- chunk_t *sc = spare_chunk.xchg (NULL);
- if (sc)
- free (sc);
- }
-
- // Returns reference to the front element of the queue.
- // If the queue is empty, behaviour is undefined.
- inline T &front ()
- {
- return begin_chunk->values [begin_pos];
- }
-
- // Returns reference to the back element of the queue.
- // If the queue is empty, behaviour is undefined.
- inline T &back ()
- {
- return back_chunk->values [back_pos];
- }
-
- // Adds an element to the back end of the queue.
- inline void push ()
- {
- back_chunk = end_chunk;
- back_pos = end_pos;
-
- if (++end_pos != N)
- return;
-
- chunk_t *sc = spare_chunk.xchg (NULL);
- if (sc) {
- end_chunk->next = sc;
- sc->prev = end_chunk;
- } else {
- end_chunk->next = (chunk_t*) malloc (sizeof (chunk_t));
- zmq_assert (end_chunk->next);
- end_chunk->next->prev = end_chunk;
- }
- end_chunk = end_chunk->next;
- end_pos = 0;
- }
-
- // Removes element from the back end of the queue. In other words
- // it rollbacks last push to the queue. Take care: Caller is
- // responsible for destroying the object being unpushed.
- // The caller must also guarantee that the queue isn't empty when
- // unpush is called. It cannot be done automatically as the read
- // side of the queue can be managed by different, completely
- // unsynchronised thread.
- inline void unpush ()
- {
- // First, move 'back' one position backwards.
- if (back_pos)
- --back_pos;
- else {
- back_pos = N - 1;
- back_chunk = back_chunk->prev;
- }
-
- // Now, move 'end' position backwards. Note that obsolete end chunk
- // is not used as a spare chunk. The analysis shows that doing so
- // would require free and atomic operation per chunk deallocated
- // instead of a simple free.
- if (end_pos)
- --end_pos;
- else {
- end_pos = N - 1;
- end_chunk = end_chunk->prev;
- free (end_chunk->next);
- end_chunk->next = NULL;
- }
- }
-
- // Removes an element from the front end of the queue.
- inline void pop ()
- {
- if (++ begin_pos == N) {
- chunk_t *o = begin_chunk;
- begin_chunk = begin_chunk->next;
- begin_chunk->prev = NULL;
- begin_pos = 0;
-
- // 'o' has been more recently used than spare_chunk,
- // so for cache reasons we'll get rid of the spare and
- // use 'o' as the spare.
- chunk_t *cs = spare_chunk.xchg (o);
- if (cs)
- free (cs);
- }
- }
-
- private:
-
- // Individual memory chunk to hold N elements.
- struct chunk_t
- {
- T values [N];
- chunk_t *prev;
- chunk_t *next;
- };
-
- // Back position may point to invalid memory if the queue is empty,
- // while begin & end positions are always valid. Begin position is
- // accessed exclusively be queue reader (front/pop), while back and
- // end positions are accessed exclusively by queue writer (back/push).
- chunk_t *begin_chunk;
- int begin_pos;
- chunk_t *back_chunk;
- int back_pos;
- chunk_t *end_chunk;
- int end_pos;
-
- // People are likely to produce and consume at similar rates. In
- // this scenario holding onto the most recently freed chunk saves
- // us from having to call malloc/free.
- atomic_ptr_t<chunk_t> spare_chunk;
-
- // Disable copying of yqueue.
- yqueue_t (const yqueue_t&);
- void operator = (const yqueue_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/zmq.cpp b/util/network/zeromq/src/zmq.cpp
deleted file mode 100644
index 342a8a63..00000000
--- a/util/network/zeromq/src/zmq.cpp
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "../include/zmq.h"
-#include "../include/zmq_utils.h"
-
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <new>
-
-#include "forwarder.hpp"
-#include "queue.hpp"
-#include "streamer.hpp"
-#include "socket_base.hpp"
-#include "app_thread.hpp"
-#include "msg_content.hpp"
-#include "platform.hpp"
-#include "stdint.hpp"
-#include "config.hpp"
-#include "ctx.hpp"
-#include "err.hpp"
-#include "fd.hpp"
-
-#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
- defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
- defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
- defined ZMQ_HAVE_NETBSD
-#include <poll.h>
-#endif
-
-#if !defined ZMQ_HAVE_WINDOWS
-#include <unistd.h>
-#include <sys/time.h>
-#endif
-
-#if defined ZMQ_HAVE_OPENPGM
-#include <pgm/pgm.h>
-#endif
-
-void zmq_version (int *major_, int *minor_, int *patch_)
-{
- *major_ = PACKAGE_VERSION_MAJOR;
- *minor_ = PACKAGE_VERSION_MINOR;
- *patch_ = PACKAGE_VERSION_PATCH;
-}
-
-const char *zmq_strerror (int errnum_)
-{
- switch (errnum_) {
-#if defined ZMQ_HAVE_WINDOWS
- case ENOTSUP:
- return "Not supported";
- case EPROTONOSUPPORT:
- return "Protocol not supported";
- case ENOBUFS:
- return "No buffer space available";
- case ENETDOWN:
- return "Network is down";
- case EADDRINUSE:
- return "Address in use";
- case EADDRNOTAVAIL:
- return "Address not available";
- case ECONNREFUSED:
- return "Connection refused";
- case EINPROGRESS:
- return "Operation in progress";
-#endif
- case EMTHREAD:
- return "Number of preallocated application threads exceeded";
- case EFSM:
- return "Operation cannot be accomplished in current state";
- case ENOCOMPATPROTO:
- return "The protocol is not compatible with the socket type";
- case ETERM:
- return "Context was terminated";
- default:
-#if defined _MSC_VER
-#pragma warning (push)
-#pragma warning (disable:4996)
-#endif
- return strerror (errnum_);
-#if defined _MSC_VER
-#pragma warning (pop)
-#endif
- }
-}
-
-int zmq_msg_init (zmq_msg_t *msg_)
-{
- msg_->content = (zmq::msg_content_t*) ZMQ_VSM;
- msg_->flags = 0;
- msg_->vsm_size = 0;
- return 0;
-}
-
-int zmq_msg_init_size (zmq_msg_t *msg_, size_t size_)
-{
- if (size_ <= ZMQ_MAX_VSM_SIZE) {
- msg_->content = (zmq::msg_content_t*) ZMQ_VSM;
- msg_->flags = 0;
- msg_->vsm_size = (uint8_t) size_;
- }
- else {
- msg_->content =
- (zmq::msg_content_t*) malloc (sizeof (zmq::msg_content_t) + size_);
- if (!msg_->content) {
- errno = ENOMEM;
- return -1;
- }
- msg_->flags = 0;
-
- zmq::msg_content_t *content = (zmq::msg_content_t*) msg_->content;
- content->data = (void*) (content + 1);
- content->size = size_;
- content->ffn = NULL;
- content->hint = NULL;
- new (&content->refcnt) zmq::atomic_counter_t ();
- }
- return 0;
-}
-
-int zmq_msg_init_data (zmq_msg_t *msg_, void *data_, size_t size_,
- zmq_free_fn *ffn_, void *hint_)
-{
- msg_->content = (zmq::msg_content_t*) malloc (sizeof (zmq::msg_content_t));
- zmq_assert (msg_->content);
- msg_->flags = 0;
- zmq::msg_content_t *content = (zmq::msg_content_t*) msg_->content;
- content->data = data_;
- content->size = size_;
- content->ffn = ffn_;
- content->hint = hint_;
- new (&content->refcnt) zmq::atomic_counter_t ();
- return 0;
-}
-
-int zmq_msg_close (zmq_msg_t *msg_)
-{
- // For VSMs and delimiters there are no resources to free.
- if (msg_->content == (zmq::msg_content_t*) ZMQ_DELIMITER ||
- msg_->content == (zmq::msg_content_t*) ZMQ_VSM)
- return 0;
-
- // If the content is not shared, or if it is shared and the reference.
- // count has dropped to zero, deallocate it.
- zmq::msg_content_t *content = (zmq::msg_content_t*) msg_->content;
- if (!(msg_->flags & ZMQ_MSG_SHARED) || !content->refcnt.sub (1)) {
-
- // We used "placement new" operator to initialize the reference.
- // counter so we call its destructor now.
- content->refcnt.~atomic_counter_t ();
-
- if (content->ffn)
- content->ffn (content->data, content->hint);
- free (content);
- }
-
- return 0;
-}
-
-int zmq_msg_move (zmq_msg_t *dest_, zmq_msg_t *src_)
-{
- zmq_msg_close (dest_);
- *dest_ = *src_;
- zmq_msg_init (src_);
- return 0;
-}
-
-int zmq_msg_copy (zmq_msg_t *dest_, zmq_msg_t *src_)
-{
- zmq_msg_close (dest_);
-
- // VSMs and delimiters require no special handling.
- if (src_->content != (zmq::msg_content_t*) ZMQ_DELIMITER &&
- src_->content != (zmq::msg_content_t*) ZMQ_VSM) {
-
- // One reference is added to shared messages. Non-shared messages
- // are turned into shared messages and reference count is set to 2.
- zmq::msg_content_t *content = (zmq::msg_content_t*) src_->content;
- if (src_->flags & ZMQ_MSG_SHARED)
- content->refcnt.add (1);
- else {
- src_->flags |= ZMQ_MSG_SHARED;
- content->refcnt.set (2);
- }
- }
-
- *dest_ = *src_;
- return 0;
-}
-
-void *zmq_msg_data (zmq_msg_t *msg_)
-{
- if (msg_->content == (zmq::msg_content_t*) ZMQ_VSM)
- return msg_->vsm_data;
- if (msg_->content == (zmq::msg_content_t*) ZMQ_DELIMITER)
- return NULL;
-
- return ((zmq::msg_content_t*) msg_->content)->data;
-}
-
-size_t zmq_msg_size (zmq_msg_t *msg_)
-{
- if (msg_->content == (zmq::msg_content_t*) ZMQ_VSM)
- return msg_->vsm_size;
- if (msg_->content == (zmq::msg_content_t*) ZMQ_DELIMITER)
- return 0;
-
- return ((zmq::msg_content_t*) msg_->content)->size;
-}
-
-void *zmq_init (int io_threads_)
-{
- if (io_threads_ < 0) {
- errno = EINVAL;
- return NULL;
- }
-
-#if defined ZMQ_HAVE_OPENPGM
- // Unfortunately, OpenPGM doesn't support refcounted init/shutdown, thus,
- // let's fail if it was initialised beforehand.
- zmq_assert (!pgm_supported ());
-
- // Init PGM transport. Ensure threading and timer are enabled. Find PGM
- // protocol ID. Note that if you want to use gettimeofday and sleep for
- // openPGM timing, set environment variables PGM_TIMER to "GTOD" and
- // PGM_SLEEP to "USLEEP".
- GError *pgm_error = NULL;
- int rc = pgm_init (&pgm_error);
- if (rc != TRUE) {
- if (pgm_error->domain == PGM_IF_ERROR && (
- pgm_error->code == PGM_IF_ERROR_INVAL ||
- pgm_error->code == PGM_IF_ERROR_XDEV ||
- pgm_error->code == PGM_IF_ERROR_NODEV ||
- pgm_error->code == PGM_IF_ERROR_NOTUNIQ ||
- pgm_error->code == PGM_IF_ERROR_ADDRFAMILY ||
- pgm_error->code == PGM_IF_ERROR_FAMILY ||
- pgm_error->code == PGM_IF_ERROR_NODATA ||
- pgm_error->code == PGM_IF_ERROR_NONAME ||
- pgm_error->code == PGM_IF_ERROR_SERVICE)) {
- g_error_free (pgm_error);
- errno = EINVAL;
- return NULL;
- }
- zmq_assert (false);
- }
-#endif
-
- // Create 0MQ context.
- zmq::ctx_t *ctx = new (std::nothrow) zmq::ctx_t ((uint32_t) io_threads_);
- zmq_assert (ctx);
- return (void*) ctx;
-}
-
-int zmq_term (void *ctx_)
-{
- int rc = ((zmq::ctx_t*) ctx_)->term ();
- int en = errno;
-
- if (!ctx_) {
- errno = EFAULT;
- return -1;
- }
-#if defined ZMQ_HAVE_OPENPGM
- // Shut down the OpenPGM library.
- if (pgm_shutdown () != TRUE)
- zmq_assert (false);
-#endif
-
- errno = en;
- return rc;
-}
-
-void *zmq_socket (void *ctx_, int type_)
-{
- if (!ctx_) {
- errno = EFAULT;
- return NULL;
- }
- return (void*) (((zmq::ctx_t*) ctx_)->create_socket (type_));
-}
-
-int zmq_close (void *s_)
-{
- if (!s_) {
- errno = EFAULT;
- return -1;
- }
- ((zmq::socket_base_t*) s_)->close ();
- return 0;
-}
-
-int zmq_setsockopt (void *s_, int option_, const void *optval_,
- size_t optvallen_)
-{
- if (!s_) {
- errno = EFAULT;
- return -1;
- }
- return (((zmq::socket_base_t*) s_)->setsockopt (option_, optval_,
- optvallen_));
-}
-
-int zmq_getsockopt (void *s_, int option_, void *optval_, size_t *optvallen_)
-{
- if (!s_) {
- errno = EFAULT;
- return -1;
- }
- return (((zmq::socket_base_t*) s_)->getsockopt (option_, optval_,
- optvallen_));
-}
-
-int zmq_bind (void *s_, const char *addr_)
-{
- if (!s_) {
- errno = EFAULT;
- return -1;
- }
- return (((zmq::socket_base_t*) s_)->bind (addr_));
-}
-
-int zmq_connect (void *s_, const char *addr_)
-{
- if (!s_) {
- errno = EFAULT;
- return -1;
- }
- return (((zmq::socket_base_t*) s_)->connect (addr_));
-}
-
-int zmq_send (void *s_, zmq_msg_t *msg_, int flags_)
-{
- if (!s_) {
- errno = EFAULT;
- return -1;
- }
- return (((zmq::socket_base_t*) s_)->send (msg_, flags_));
-}
-
-int zmq_recv (void *s_, zmq_msg_t *msg_, int flags_)
-{
- if (!s_) {
- errno = EFAULT;
- return -1;
- }
- return (((zmq::socket_base_t*) s_)->recv (msg_, flags_));
-}
-
-int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_)
-{
-#if defined ZMQ_HAVE_LINUX || defined ZMQ_HAVE_FREEBSD ||\
- defined ZMQ_HAVE_OPENBSD || defined ZMQ_HAVE_SOLARIS ||\
- defined ZMQ_HAVE_OSX || defined ZMQ_HAVE_QNXNTO ||\
- defined ZMQ_HAVE_HPUX || defined ZMQ_HAVE_AIX ||\
- defined ZMQ_HAVE_NETBSD
-
- if (!items_) {
- errno = EFAULT;
- return -1;
- }
- pollfd *pollfds = (pollfd*) malloc (nitems_ * sizeof (pollfd));
- zmq_assert (pollfds);
- int npollfds = 0;
- int nsockets = 0;
-
- zmq::app_thread_t *app_thread = NULL;
-
- for (int i = 0; i != nitems_; i++) {
-
- // 0MQ sockets.
- if (items_ [i].socket) {
-
- // Get the app_thread the socket is living in. If there are two
- // sockets in the same pollset with different app threads, fail.
- zmq::socket_base_t *s = (zmq::socket_base_t*) items_ [i].socket;
- if (app_thread) {
- if (app_thread != s->get_thread ()) {
- free (pollfds);
- errno = EFAULT;
- return -1;
- }
- }
- else
- app_thread = s->get_thread ();
-
- nsockets++;
- continue;
- }
-
- // Raw file descriptors.
- pollfds [npollfds].fd = items_ [i].fd;
- pollfds [npollfds].events =
- (items_ [i].events & ZMQ_POLLIN ? POLLIN : 0) |
- (items_ [i].events & ZMQ_POLLOUT ? POLLOUT : 0);
- npollfds++;
- }
-
- // If there's at least one 0MQ socket in the pollset we have to poll
- // for 0MQ commands. If ZMQ_POLL was not set, fail.
- if (nsockets) {
- pollfds [npollfds].fd = app_thread->get_signaler ()->get_fd ();
- if (pollfds [npollfds].fd == zmq::retired_fd) {
- free (pollfds);
- errno = ENOTSUP;
- return -1;
- }
- pollfds [npollfds].events = POLLIN;
- npollfds++;
- }
-
- // First iteration just check for events, don't block. Waiting would
- // prevent exiting on any events that may already been signaled on
- // 0MQ sockets.
- int rc = poll (pollfds, npollfds, 0);
- if (rc == -1 && errno == EINTR && timeout_ >= 0) {
- free (pollfds);
- return 0;
- }
- errno_assert (rc >= 0 || (rc == -1 && errno == EINTR));
-
- int timeout = timeout_ > 0 ? timeout_ / 1000 : -1;
- int nevents = 0;
-
- while (true) {
-
- // Process 0MQ commands if needed.
- if (nsockets && pollfds [npollfds -1].revents & POLLIN)
- if (!app_thread->process_commands (false, false)) {
- free (pollfds);
- errno = ETERM;
- return -1;
- }
-
- // Check for the events.
- int pollfd_pos = 0;
- for (int i = 0; i != nitems_; i++) {
-
- // If the poll item is a raw file descriptor, simply convert
- // the events to zmq_pollitem_t-style format.
- if (!items_ [i].socket) {
- items_ [i].revents = 0;
- if (pollfds [pollfd_pos].revents & POLLIN)
- items_ [i].revents |= ZMQ_POLLIN;
- if (pollfds [pollfd_pos].revents & POLLOUT)
- items_ [i].revents |= ZMQ_POLLOUT;
- if (pollfds [pollfd_pos].revents & ~(POLLIN | POLLOUT))
- items_ [i].revents |= ZMQ_POLLERR;
-
- if (items_ [i].revents)
- nevents++;
- pollfd_pos++;
- continue;
- }
-
- // The poll item is a 0MQ socket.
- zmq::socket_base_t *s = (zmq::socket_base_t*) items_ [i].socket;
- items_ [i].revents = 0;
- if ((items_ [i].events & ZMQ_POLLOUT) && s->has_out ())
- items_ [i].revents |= ZMQ_POLLOUT;
- if ((items_ [i].events & ZMQ_POLLIN) && s->has_in ())
- items_ [i].revents |= ZMQ_POLLIN;
- if (items_ [i].revents)
- nevents++;
- }
-
- // If there's at least one event, or if we are asked not to block,
- // return immediately.
- if (nevents || !timeout_)
- break;
-
- // Wait for events. Ignore interrupts if there's infinite timeout.
- while (true) {
- rc = poll (pollfds, npollfds, timeout);
- if (rc == -1 && errno == EINTR) {
- if (timeout_ < 0)
- continue;
- else {
- rc = 0;
- break;
- }
- }
- errno_assert (rc >= 0);
- break;
- }
-
- // If timeout was hit with no events signaled, return zero.
- if (rc == 0)
- break;
-
- // If timeout was already applied, we don't want to poll anymore.
- // Setting timeout to zero will cause termination of the function
- // once the events we've got are processed.
- if (timeout > 0)
- timeout = 0;
- }
-
- free (pollfds);
- return nevents;
-
-#elif defined ZMQ_HAVE_WINDOWS || defined ZMQ_HAVE_OPENVMS
-
- fd_set pollset_in;
- FD_ZERO (&pollset_in);
- fd_set pollset_out;
- FD_ZERO (&pollset_out);
- fd_set pollset_err;
- FD_ZERO (&pollset_err);
-
- zmq::app_thread_t *app_thread = NULL;
- int nsockets = 0;
- zmq::fd_t maxfd = zmq::retired_fd;
- zmq::fd_t notify_fd = zmq::retired_fd;
-
- for (int i = 0; i != nitems_; i++) {
-
- // 0MQ sockets.
- if (items_ [i].socket) {
-
- // Get the app_thread the socket is living in. If there are two
- // sockets in the same pollset with different app threads, fail.
- zmq::socket_base_t *s = (zmq::socket_base_t*) items_ [i].socket;
- if (app_thread) {
- if (app_thread != s->get_thread ()) {
- errno = EFAULT;
- return -1;
- }
- }
- else
- app_thread = s->get_thread ();
-
- nsockets++;
- continue;
- }
-
- // Raw file descriptors.
- if (items_ [i].events & ZMQ_POLLIN)
- FD_SET (items_ [i].fd, &pollset_in);
- if (items_ [i].events & ZMQ_POLLOUT)
- FD_SET (items_ [i].fd, &pollset_out);
- if (items_ [i].events & ZMQ_POLLERR)
- FD_SET (items_ [i].fd, &pollset_err);
- if (maxfd == zmq::retired_fd || maxfd < items_ [i].fd)
- maxfd = items_ [i].fd;
- }
-
- // If there's at least one 0MQ socket in the pollset we have to poll
- // for 0MQ commands. If ZMQ_POLL was not set, fail.
- if (nsockets) {
- notify_fd = app_thread->get_signaler ()->get_fd ();
- if (notify_fd == zmq::retired_fd) {
- errno = ENOTSUP;
- return -1;
- }
- FD_SET (notify_fd, &pollset_in);
- if (maxfd == zmq::retired_fd || maxfd < notify_fd)
- maxfd = notify_fd;
- }
-
- bool block = (timeout_ < 0);
- timeval timeout = {timeout_ / 1000000, timeout_ % 1000000};
- timeval zero_timeout = {0, 0};
- int nevents = 0;
-
- // First iteration just check for events, don't block. Waiting would
- // prevent exiting on any events that may already been signaled on
- // 0MQ sockets.
- fd_set inset, outset, errset;
- memcpy (&inset, &pollset_in, sizeof (fd_set));
- memcpy (&outset, &pollset_out, sizeof (fd_set));
- memcpy (&errset, &pollset_err, sizeof (fd_set));
- int rc = select (maxfd, &inset, &outset, &errset, &zero_timeout);
-#if defined ZMQ_HAVE_WINDOWS
- wsa_assert (rc != SOCKET_ERROR);
-#else
- if (rc == -1 && errno == EINTR && timeout_ >= 0)
- return 0;
- errno_assert (rc >= 0 || (rc == -1 && errno == EINTR));
-#endif
-
- while (true) {
-
- // Process 0MQ commands if needed.
- if (nsockets && FD_ISSET (notify_fd, &inset))
- if (!app_thread->process_commands (false, false)) {
- errno = ETERM;
- return -1;
- }
-
- // Check for the events.
- for (int i = 0; i != nitems_; i++) {
-
- // If the poll item is a raw file descriptor, simply convert
- // the events to zmq_pollitem_t-style format.
- if (!items_ [i].socket) {
- items_ [i].revents = 0;
- if (FD_ISSET (items_ [i].fd, &inset))
- items_ [i].revents |= ZMQ_POLLIN;
- if (FD_ISSET (items_ [i].fd, &outset))
- items_ [i].revents |= ZMQ_POLLOUT;
- if (FD_ISSET (items_ [i].fd, &errset))
- items_ [i].revents |= ZMQ_POLLERR;
- if (items_ [i].revents)
- nevents++;
- continue;
- }
-
- // The poll item is a 0MQ socket.
- zmq::socket_base_t *s = (zmq::socket_base_t*) items_ [i].socket;
- items_ [i].revents = 0;
- if ((items_ [i].events & ZMQ_POLLOUT) && s->has_out ())
- items_ [i].revents |= ZMQ_POLLOUT;
- if ((items_ [i].events & ZMQ_POLLIN) && s->has_in ())
- items_ [i].revents |= ZMQ_POLLIN;
- if (items_ [i].revents)
- nevents++;
- }
-
- // If there's at least one event, or if we are asked not to block,
- // return immediately.
- if (nevents || (timeout.tv_sec == 0 && timeout.tv_usec == 0))
- break;
-
- // Wait for events. Ignore interrupts if there's infinite timeout.
- while (true) {
- memcpy (&inset, &pollset_in, sizeof (fd_set));
- memcpy (&outset, &pollset_out, sizeof (fd_set));
- memcpy (&errset, &pollset_err, sizeof (fd_set));
- rc = select (maxfd, &inset, &outset, &errset,
- block ? NULL : &timeout);
-#if defined ZMQ_HAVE_WINDOWS
- wsa_assert (rc != SOCKET_ERROR);
-#else
- if (rc == -1 && errno == EINTR) {
- if (timeout_ < 0)
- continue;
- else {
- rc = 0;
- break;
- }
- }
- errno_assert (rc >= 0);
-#endif
- break;
- }
-
- // If timeout was hit with no events signaled, return zero.
- if (rc == 0)
- break;
-
- // If timeout was already applied, we don't want to poll anymore.
- // Setting timeout to zero will cause termination of the function
- // once the events we've got are processed.
- if (!block)
- timeout = zero_timeout;
- }
-
- return nevents;
-
-#else
- errno = ENOTSUP;
- return -1;
-#endif
-}
-
-int zmq_errno ()
-{
- return errno;
-}
-
-int zmq_device (int device_, void *insocket_, void *outsocket_)
-{
- if (!insocket_ || !outsocket_) {
- errno = EFAULT;
- return -1;
- }
- switch (device_) {
- case ZMQ_FORWARDER:
- return zmq::forwarder ((zmq::socket_base_t*) insocket_,
- (zmq::socket_base_t*) outsocket_);
- case ZMQ_QUEUE:
- return zmq::queue ((zmq::socket_base_t*) insocket_,
- (zmq::socket_base_t*) outsocket_);
- case ZMQ_STREAMER:
- return zmq::streamer ((zmq::socket_base_t*) insocket_,
- (zmq::socket_base_t*) outsocket_);
- default:
- return EINVAL;
- }
-}
-
-////////////////////////////////////////////////////////////////////////////////
-// 0MQ utils - to be used by perf tests
-////////////////////////////////////////////////////////////////////////////////
-
-#if defined ZMQ_HAVE_WINDOWS
-
-static uint64_t now ()
-{
- // Get the high resolution counter's accuracy.
- LARGE_INTEGER ticksPerSecond;
- QueryPerformanceFrequency (&ticksPerSecond);
-
- // What time is it?
- LARGE_INTEGER tick;
- QueryPerformanceCounter (&tick);
-
- // Convert the tick number into the number of seconds
- // since the system was started.
- double ticks_div = (double) (ticksPerSecond.QuadPart / 1000000);
- return (uint64_t) (tick.QuadPart / ticks_div);
-}
-
-void zmq_sleep (int seconds_)
-{
- Sleep (seconds_ * 1000);
-}
-
-#else
-
-static uint64_t now ()
-{
- struct timeval tv;
- int rc;
-
- rc = gettimeofday (&tv, NULL);
- assert (rc == 0);
- return (tv.tv_sec * (uint64_t) 1000000 + tv.tv_usec);
-}
-
-void zmq_sleep (int seconds_)
-{
- sleep (seconds_);
-}
-
-#endif
-
-void *zmq_stopwatch_start ()
-{
- uint64_t *watch = (uint64_t*) malloc (sizeof (uint64_t));
- assert (watch);
- *watch = now ();
- return (void*) watch;
-}
-
-unsigned long zmq_stopwatch_stop (void *watch_)
-{
- uint64_t end = now ();
- uint64_t start = *(uint64_t*) watch_;
- free (watch_);
- return (unsigned long) (end - start);
-}
-
diff --git a/util/network/zeromq/src/zmq_connecter.cpp b/util/network/zeromq/src/zmq_connecter.cpp
deleted file mode 100644
index ebd7572b..00000000
--- a/util/network/zeromq/src/zmq_connecter.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <new>
-
-#include "zmq_connecter.hpp"
-#include "zmq_engine.hpp"
-#include "zmq_init.hpp"
-#include "io_thread.hpp"
-#include "err.hpp"
-
-zmq::zmq_connecter_t::zmq_connecter_t (io_thread_t *parent_,
- socket_base_t *owner_, const options_t &options_,
- uint64_t session_ordinal_, bool wait_) :
- owned_t (parent_, owner_),
- io_object_t (parent_),
- handle_valid (false),
- wait (wait_),
- session_ordinal (session_ordinal_),
- options (options_)
-{
-}
-
-zmq::zmq_connecter_t::~zmq_connecter_t ()
-{
-}
-
-int zmq::zmq_connecter_t::set_address (const char *protocol_,
- const char *address_)
-{
- int rc = tcp_connecter.set_address (protocol_, address_);
- if (rc != 0)
- return rc;
- protocol = protocol_;
- address = address_;
- return 0;
-}
-
-void zmq::zmq_connecter_t::process_plug ()
-{
- if (wait)
- add_timer ();
- else
- start_connecting ();
-}
-
-void zmq::zmq_connecter_t::process_unplug ()
-{
- if (wait)
- cancel_timer ();
- if (handle_valid)
- rm_fd (handle);
-}
-
-void zmq::zmq_connecter_t::in_event ()
-{
- // We are not polling for incomming data, so we are actually called
- // because of error here. However, we can get error on out event as well
- // on some platforms, so we'll simply handle both events in the same way.
- out_event ();
-}
-
-void zmq::zmq_connecter_t::out_event ()
-{
- fd_t fd = tcp_connecter.connect ();
- rm_fd (handle);
- handle_valid = false;
-
- // Handle the error condition by attempt to reconnect.
- if (fd == retired_fd) {
- tcp_connecter.close ();
- wait = true;
- add_timer ();
- return;
- }
-
- // Create an init object.
- zmq_init_t *init = new (std::nothrow) zmq_init_t (
- choose_io_thread (options.affinity), owner,
- fd, options, true, protocol.c_str (), address.c_str (),
- session_ordinal);
- zmq_assert (init);
- send_plug (init);
- send_own (owner, init);
-
- // Ask owner socket to shut the connecter down.
- term ();
-}
-
-void zmq::zmq_connecter_t::timer_event ()
-{
- wait = false;
- start_connecting ();
-}
-
-void zmq::zmq_connecter_t::start_connecting ()
-{
- // Open the connecting socket.
- int rc = tcp_connecter.open ();
-
- // Connect may succeed in synchronous manner.
- if (rc == 0) {
- handle = add_fd (tcp_connecter.get_fd ());
- handle_valid = true;
- out_event ();
- return;
- }
-
- // Connection establishment may be dealyed. Poll for its completion.
- else if (rc == -1 && errno == EAGAIN) {
- handle = add_fd (tcp_connecter.get_fd ());
- handle_valid = true;
- set_pollout (handle);
- return;
- }
-
- // Handle any other error condition by eventual reconnect.
- wait = true;
- add_timer ();
-}
diff --git a/util/network/zeromq/src/zmq_connecter.hpp b/util/network/zeromq/src/zmq_connecter.hpp
deleted file mode 100644
index 328dd6a1..00000000
--- a/util/network/zeromq/src/zmq_connecter.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ZMQ_CONNECTER_HPP_INCLUDED__
-#define __ZMQ_ZMQ_CONNECTER_HPP_INCLUDED__
-
-#include <string>
-
-#include "owned.hpp"
-#include "io_object.hpp"
-#include "tcp_connecter.hpp"
-#include "options.hpp"
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- class zmq_connecter_t : public owned_t, public io_object_t
- {
- public:
-
- zmq_connecter_t (class io_thread_t *parent_, socket_base_t *owner_,
- const options_t &options_, uint64_t session_ordinal_, bool wait_);
- ~zmq_connecter_t ();
-
- // Set address to connect to.
- int set_address (const char *protocol_, const char *address_);
-
- private:
-
- // Handlers for incoming commands.
- void process_plug ();
- void process_unplug ();
-
- // Handlers for I/O events.
- void in_event ();
- void out_event ();
- void timer_event ();
-
- // Internal function to start the actual connection establishment.
- void start_connecting ();
-
- // Actual connecting socket.
- tcp_connecter_t tcp_connecter;
-
- // Handle corresponding to the listening socket.
- handle_t handle;
-
- // If true file descriptor is registered with the poller and 'handle'
- // contains valid value.
- bool handle_valid;
-
- // If true, connecter is waiting a while before trying to connect.
- bool wait;
-
- // Ordinal of the session to attach to.
- uint64_t session_ordinal;
-
- // Associated socket options.
- options_t options;
-
- // Protocol and address to connect to.
- std::string protocol;
- std::string address;
-
- zmq_connecter_t (const zmq_connecter_t&);
- void operator = (const zmq_connecter_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/zmq_decoder.cpp b/util/network/zeromq/src/zmq_decoder.cpp
deleted file mode 100644
index 8e335c9d..00000000
--- a/util/network/zeromq/src/zmq_decoder.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "zmq_decoder.hpp"
-#include "i_inout.hpp"
-#include "wire.hpp"
-#include "err.hpp"
-
-zmq::zmq_decoder_t::zmq_decoder_t (size_t bufsize_) :
- decoder_t <zmq_decoder_t> (bufsize_),
- destination (NULL)
-{
- zmq_msg_init (&in_progress);
-
- // At the beginning, read one byte and go to one_byte_size_ready state.
- next_step (tmpbuf, 1, &zmq_decoder_t::one_byte_size_ready);
-}
-
-zmq::zmq_decoder_t::~zmq_decoder_t ()
-{
- zmq_msg_close (&in_progress);
-}
-
-void zmq::zmq_decoder_t::set_inout (i_inout *destination_)
-{
- destination = destination_;
-}
-
-bool zmq::zmq_decoder_t::one_byte_size_ready ()
-{
- // First byte of size is read. If it is 0xff read 8-byte size.
- // Otherwise allocate the buffer for message data and read the
- // message data into it.
- if (*tmpbuf == 0xff)
- next_step (tmpbuf, 8, &zmq_decoder_t::eight_byte_size_ready);
- else {
-
- // TODO: Handle over-sized message decently.
-
- // in_progress is initialised at this point so in theory we should
- // close it before calling zmq_msg_init_size, however, it's a 0-byte
- // message and thus we can treat it as uninitialised...
- int rc = zmq_msg_init_size (&in_progress, *tmpbuf - 1);
- errno_assert (rc == 0);
- next_step (tmpbuf, 1, &zmq_decoder_t::flags_ready);
- }
- return true;
-}
-
-bool zmq::zmq_decoder_t::eight_byte_size_ready ()
-{
- // 8-byte size is read. Allocate the buffer for message body and
- // read the message data into it.
- size_t size = (size_t) get_uint64 (tmpbuf);
-
- // TODO: Handle over-sized message decently.
-
- // in_progress is initialised at this point so in theory we should
- // close it before calling zmq_msg_init_size, however, it's a 0-byte
- // message and thus we can treat it as uninitialised...
- int rc = zmq_msg_init_size (&in_progress, size - 1);
- errno_assert (rc == 0);
- next_step (tmpbuf, 1, &zmq_decoder_t::flags_ready);
-
- return true;
-}
-
-bool zmq::zmq_decoder_t::flags_ready ()
-{
- // Store the flags from the wire into the message structure.
- in_progress.flags = tmpbuf [0];
-
- next_step (zmq_msg_data (&in_progress), zmq_msg_size (&in_progress),
- &zmq_decoder_t::message_ready);
-
- return true;
-}
-
-bool zmq::zmq_decoder_t::message_ready ()
-{
- // Message is completely read. Push it further and start reading
- // new message. (in_progress is a 0-byte message after this point.)
- if (!destination || !destination->write (&in_progress))
- return false;
-
- next_step (tmpbuf, 1, &zmq_decoder_t::one_byte_size_ready);
- return true;
-}
diff --git a/util/network/zeromq/src/zmq_decoder.hpp b/util/network/zeromq/src/zmq_decoder.hpp
deleted file mode 100644
index c1e3e3e0..00000000
--- a/util/network/zeromq/src/zmq_decoder.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ZMQ_DECODER_HPP_INCLUDED__
-#define __ZMQ_ZMQ_DECODER_HPP_INCLUDED__
-
-#include "../include/zmq.h"
-
-#include "decoder.hpp"
-#include "blob.hpp"
-
-namespace zmq
-{
- // Decoder for 0MQ backend protocol. Converts data batches into messages.
-
- class zmq_decoder_t : public decoder_t <zmq_decoder_t>
- {
- public:
-
- zmq_decoder_t (size_t bufsize_);
- ~zmq_decoder_t ();
-
- void set_inout (struct i_inout *destination_);
-
- private:
-
- bool one_byte_size_ready ();
- bool eight_byte_size_ready ();
- bool flags_ready ();
- bool message_ready ();
-
- struct i_inout *destination;
- unsigned char tmpbuf [8];
- ::zmq_msg_t in_progress;
-
- zmq_decoder_t (const zmq_decoder_t&);
- void operator = (const zmq_decoder_t&);
- };
-
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/zmq_encoder.cpp b/util/network/zeromq/src/zmq_encoder.cpp
deleted file mode 100644
index 077286f5..00000000
--- a/util/network/zeromq/src/zmq_encoder.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "zmq_encoder.hpp"
-#include "i_inout.hpp"
-#include "wire.hpp"
-
-zmq::zmq_encoder_t::zmq_encoder_t (size_t bufsize_) :
- encoder_t <zmq_encoder_t> (bufsize_),
- source (NULL)
-{
- zmq_msg_init (&in_progress);
-
- // Write 0 bytes to the batch and go to message_ready state.
- next_step (NULL, 0, &zmq_encoder_t::message_ready, true);
-}
-
-zmq::zmq_encoder_t::~zmq_encoder_t ()
-{
- zmq_msg_close (&in_progress);
-}
-
-void zmq::zmq_encoder_t::set_inout (i_inout *source_)
-{
- source = source_;
-}
-
-bool zmq::zmq_encoder_t::size_ready ()
-{
- // Write message body into the buffer.
- next_step (zmq_msg_data (&in_progress), zmq_msg_size (&in_progress),
- &zmq_encoder_t::message_ready, false);
- return true;
-}
-
-bool zmq::zmq_encoder_t::message_ready ()
-{
- // Destroy content of the old message.
- zmq_msg_close(&in_progress);
-
- // Read new message. If there is none, return false.
- // Note that new state is set only if write is successful. That way
- // unsuccessful write will cause retry on the next state machine
- // invocation.
- if (!source || !source->read (&in_progress)) {
- zmq_msg_init (&in_progress);
- return false;
- }
-
- // Get the message size.
- size_t size = zmq_msg_size (&in_progress);
-
- // Account for the 'flags' byte.
- size++;
-
- // For messages less than 255 bytes long, write one byte of message size.
- // For longer messages write 0xff escape character followed by 8-byte
- // message size. In both cases 'flags' field follows.
- if (size < 255) {
- tmpbuf [0] = (unsigned char) size;
- tmpbuf [1] = (in_progress.flags & ~ZMQ_MSG_SHARED);
- next_step (tmpbuf, 2, &zmq_encoder_t::size_ready,
- !(in_progress.flags & ZMQ_MSG_MORE));
- }
- else {
- tmpbuf [0] = 0xff;
- put_uint64 (tmpbuf + 1, size);
- tmpbuf [9] = (in_progress.flags & ~ZMQ_MSG_SHARED);
- next_step (tmpbuf, 10, &zmq_encoder_t::size_ready,
- !(in_progress.flags & ZMQ_MSG_MORE));
- }
- return true;
-}
diff --git a/util/network/zeromq/src/zmq_encoder.hpp b/util/network/zeromq/src/zmq_encoder.hpp
deleted file mode 100644
index 61899f4b..00000000
--- a/util/network/zeromq/src/zmq_encoder.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ZMQ_ENCODER_HPP_INCLUDED__
-#define __ZMQ_ZMQ_ENCODER_HPP_INCLUDED__
-
-#include "../include/zmq.h"
-
-#include "encoder.hpp"
-
-namespace zmq
-{
- // Encoder for 0MQ backend protocol. Converts messages into data batches.
-
- class zmq_encoder_t : public encoder_t <zmq_encoder_t>
- {
- public:
-
- zmq_encoder_t (size_t bufsize_);
- ~zmq_encoder_t ();
-
- void set_inout (struct i_inout *source_);
-
- private:
-
- bool size_ready ();
- bool message_ready ();
-
- struct i_inout *source;
- ::zmq_msg_t in_progress;
- unsigned char tmpbuf [10];
-
- zmq_encoder_t (const zmq_encoder_t&);
- void operator = (const zmq_encoder_t&);
- };
-}
-
-#endif
-
diff --git a/util/network/zeromq/src/zmq_engine.cpp b/util/network/zeromq/src/zmq_engine.cpp
deleted file mode 100644
index 41b10c81..00000000
--- a/util/network/zeromq/src/zmq_engine.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "platform.hpp"
-#if defined ZMQ_HAVE_WINDOWS
-#include "windows.hpp"
-#endif
-
-#include <string.h>
-#include <new>
-
-#include "zmq_engine.hpp"
-#include "zmq_connecter.hpp"
-#include "io_thread.hpp"
-#include "i_inout.hpp"
-#include "config.hpp"
-#include "err.hpp"
-
-zmq::zmq_engine_t::zmq_engine_t (io_thread_t *parent_, fd_t fd_,
- const options_t &options_, bool reconnect_,
- const char *protocol_, const char *address_) :
- io_object_t (parent_),
- inpos (NULL),
- insize (0),
- decoder (in_batch_size),
- outpos (NULL),
- outsize (0),
- encoder (out_batch_size),
- inout (NULL),
- options (options_),
- reconnect (reconnect_)
-{
- if (reconnect) {
- protocol = protocol_;
- address = address_;
- }
-
- // Initialise the underlying socket.
- int rc = tcp_socket.open (fd_, options.sndbuf, options.rcvbuf);
- zmq_assert (rc == 0);
-}
-
-zmq::zmq_engine_t::~zmq_engine_t ()
-{
-}
-
-void zmq::zmq_engine_t::plug (i_inout *inout_)
-{
- zmq_assert (!inout);
-
- encoder.set_inout (inout_);
- decoder.set_inout (inout_);
-
- handle = add_fd (tcp_socket.get_fd ());
- set_pollin (handle);
- set_pollout (handle);
-
- inout = inout_;
-
- // Flush all the data that may have been already received downstream.
- in_event ();
-}
-
-void zmq::zmq_engine_t::unplug ()
-{
- rm_fd (handle);
- encoder.set_inout (NULL);
- decoder.set_inout (NULL);
- inout = NULL;
-}
-
-void zmq::zmq_engine_t::in_event ()
-{
- bool disconnection = false;
-
- // If there's no data to process in the buffer...
- if (!insize) {
-
- // Retrieve the buffer and read as much data as possible.
- decoder.get_buffer (&inpos, &insize);
- insize = tcp_socket.read (inpos, insize);
-
- // Check whether the peer has closed the connection.
- if (insize == (size_t) -1) {
- insize = 0;
- disconnection = true;
- }
- }
-
- // Push the data to the decoder.
- size_t processed = decoder.process_buffer (inpos, insize);
-
- // Stop polling for input if we got stuck.
- if (processed < insize) {
-
- // This may happen if queue limits are in effect or when
- // init object reads all required information from the socket
- // and rejects to read more data.
- reset_pollin (handle);
- }
-
- // Adjust the buffer.
- inpos += processed;
- insize -= processed;
-
- // Flush all messages the decoder may have produced.
- inout->flush ();
-
- if (disconnection)
- error ();
-}
-
-void zmq::zmq_engine_t::out_event ()
-{
- // If write buffer is empty, try to read new data from the encoder.
- if (!outsize) {
-
- outpos = NULL;
- encoder.get_data (&outpos, &outsize);
-
- // If there is no data to send, stop polling for output.
- if (outsize == 0) {
- reset_pollout (handle);
- return;
- }
- }
-
- // If there are any data to write in write buffer, write as much as
- // possible to the socket.
- int nbytes = tcp_socket.write (outpos, outsize);
-
- // Handle problems with the connection.
- if (nbytes == -1) {
- error ();
- return;
- }
-
- outpos += nbytes;
- outsize -= nbytes;
-}
-
-void zmq::zmq_engine_t::revive ()
-{
- set_pollout (handle);
-
- // Speculative write: The assumption is that at the moment new message
- // was sent by the user the socket is probably available for writing.
- // Thus we try to write the data to socket avoiding polling for POLLOUT.
- // Consequently, the latency should be better in request/reply scenarios.
- out_event ();
-}
-
-void zmq::zmq_engine_t::resume_input ()
-{
- set_pollin (handle);
-
- in_event ();
-}
-
-void zmq::zmq_engine_t::error ()
-{
- zmq_assert (inout);
-
- zmq_connecter_t *reconnecter = NULL;
- if (reconnect) {
-
- // Create a connecter object to attempt reconnect.
- // Ask it to wait for a while before reconnecting.
- reconnecter = new (std::nothrow) zmq_connecter_t (
- inout->get_io_thread (), inout->get_owner (),
- options, inout->get_ordinal (), true);
- zmq_assert (reconnecter);
- reconnecter->set_address (protocol.c_str(), address.c_str ());
- }
-
- inout->detach (reconnecter);
- unplug ();
- delete this;
-}
diff --git a/util/network/zeromq/src/zmq_engine.hpp b/util/network/zeromq/src/zmq_engine.hpp
deleted file mode 100644
index d89dccc2..00000000
--- a/util/network/zeromq/src/zmq_engine.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ZMQ_ENGINE_HPP_INCLUDED__
-#define __ZMQ_ZMQ_ENGINE_HPP_INCLUDED__
-
-#include <stddef.h>
-
-#include <string>
-
-#include "i_engine.hpp"
-#include "io_object.hpp"
-#include "tcp_socket.hpp"
-#include "zmq_encoder.hpp"
-#include "zmq_decoder.hpp"
-#include "options.hpp"
-
-namespace zmq
-{
-
- class zmq_engine_t : public io_object_t, public i_engine
- {
- public:
-
- zmq_engine_t (class io_thread_t *parent_, fd_t fd_,
- const options_t &options_, bool reconnect_,
- const char *protocol_, const char *address_);
- ~zmq_engine_t ();
-
- // i_engine interface implementation.
- void plug (struct i_inout *inout_);
- void unplug ();
- void revive ();
- void resume_input ();
-
- // i_poll_events interface implementation.
- void in_event ();
- void out_event ();
-
- private:
-
- // Function to handle network disconnections.
- void error ();
-
- tcp_socket_t tcp_socket;
- handle_t handle;
-
- unsigned char *inpos;
- size_t insize;
- zmq_decoder_t decoder;
-
- unsigned char *outpos;
- size_t outsize;
- zmq_encoder_t encoder;
-
- i_inout *inout;
-
- options_t options;
-
- bool reconnect;
- std::string protocol;
- std::string address;
-
- zmq_engine_t (const zmq_engine_t&);
- void operator = (const zmq_engine_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/zmq_init.cpp b/util/network/zeromq/src/zmq_init.cpp
deleted file mode 100644
index 5824f5c9..00000000
--- a/util/network/zeromq/src/zmq_init.cpp
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <string.h>
-
-#include "zmq_init.hpp"
-#include "zmq_engine.hpp"
-#include "io_thread.hpp"
-#include "session.hpp"
-#include "uuid.hpp"
-#include "err.hpp"
-
-zmq::zmq_init_t::zmq_init_t (io_thread_t *parent_, socket_base_t *owner_,
- fd_t fd_, const options_t &options_, bool reconnect_,
- const char *protocol_, const char *address_, uint64_t session_ordinal_) :
- owned_t (parent_, owner_),
- sent (false),
- received (false),
- session_ordinal (session_ordinal_),
- options (options_)
-{
- // Create the engine object for this connection.
- engine = new (std::nothrow) zmq_engine_t (parent_, fd_, options,
- reconnect_, protocol_, address_);
- zmq_assert (engine);
-}
-
-zmq::zmq_init_t::~zmq_init_t ()
-{
- if (engine)
- delete engine;
-}
-
-bool zmq::zmq_init_t::read (::zmq_msg_t *msg_)
-{
- // If the identity was already sent, do nothing.
- if (sent)
- return false;
-
- // Send the identity.
- int rc = zmq_msg_init_size (msg_, options.identity.size ());
- zmq_assert (rc == 0);
- memcpy (zmq_msg_data (msg_), options.identity.c_str (),
- options.identity.size ());
- sent = true;
-
- // If initialisation is done, pass the engine to the session and
- // destroy the init object.
- finalise ();
-
- return true;
-}
-
-bool zmq::zmq_init_t::write (::zmq_msg_t *msg_)
-{
- // If identity was already received, we are not interested
- // in subsequent messages.
- if (received)
- return false;
-
- // Retreieve the remote identity. If it's empty, generate a unique name.
- if (!zmq_msg_size (msg_)) {
- unsigned char identity [uuid_t::uuid_blob_len + 1];
- identity [0] = 0;
- memcpy (identity + 1, uuid_t ().to_blob (), uuid_t::uuid_blob_len);
- peer_identity.assign (identity, uuid_t::uuid_blob_len + 1);
- }
- else {
- peer_identity.assign ((const unsigned char*) zmq_msg_data (msg_),
- zmq_msg_size (msg_));
- }
-
- received = true;
-
- return true;
-}
-
-void zmq::zmq_init_t::flush ()
-{
- // Check if there's anything to flush.
- if (!received)
- return;
-
- // If initialisation is done, pass the engine to the session and
- // destroy the init object.
- finalise ();
-}
-
-void zmq::zmq_init_t::detach (owned_t *reconnecter_)
-{
- // This function is called by engine when disconnection occurs.
-
- // If required, launch the reconnecter.
- if (reconnecter_) {
- send_plug (reconnecter_);
- send_own (owner, reconnecter_);
- }
-
- // The engine will destroy itself, so let's just drop the pointer here and
- // start termination of the init object.
- engine = NULL;
- term ();
-}
-
-zmq::io_thread_t *zmq::zmq_init_t::get_io_thread ()
-{
- return choose_io_thread (options.affinity);
-}
-
-class zmq::socket_base_t *zmq::zmq_init_t::get_owner ()
-{
- return owner;
-}
-
-uint64_t zmq::zmq_init_t::get_ordinal ()
-{
- return session_ordinal;
-}
-
-void zmq::zmq_init_t::process_plug ()
-{
- zmq_assert (engine);
- engine->plug (this);
-}
-
-void zmq::zmq_init_t::process_unplug ()
-{
- if (engine)
- engine->unplug ();
-}
-
-void zmq::zmq_init_t::finalise ()
-{
- if (sent && received) {
-
- // Disconnect the engine from the init object.
- engine->unplug ();
-
- session_t *session = NULL;
-
- // If we have the session ordinal, let's use it to find the session.
- // If it is not found, it means socket is already being shut down
- // and the session have been deallocated.
- // TODO: We should check whether the name of the peer haven't changed
- // upon reconnection.
- if (session_ordinal) {
- session = owner->find_session (session_ordinal);
- if (!session) {
- term ();
- return;
- }
- }
- else {
-
- // If the peer has a unique name, find the associated session.
- // If it does not exist, create it.
- zmq_assert (!peer_identity.empty ());
- session = owner->find_session (peer_identity);
- if (!session) {
- session = new (std::nothrow) session_t (
- choose_io_thread (options.affinity), owner, options,
- peer_identity);
- zmq_assert (session);
- send_plug (session);
- send_own (owner, session);
-
- // Reserve a sequence number for following 'attach' command.
- session->inc_seqnum ();
- }
- }
-
- // No need to increment seqnum as it was already incremented above.
- send_attach (session, engine, peer_identity, false);
-
- // Destroy the init object.
- engine = NULL;
- term ();
- }
-}
diff --git a/util/network/zeromq/src/zmq_init.hpp b/util/network/zeromq/src/zmq_init.hpp
deleted file mode 100644
index 6f935c25..00000000
--- a/util/network/zeromq/src/zmq_init.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ZMQ_INIT_HPP_INCLUDED__
-#define __ZMQ_ZMQ_INIT_HPP_INCLUDED__
-
-#include "i_inout.hpp"
-#include "i_engine.hpp"
-#include "owned.hpp"
-#include "fd.hpp"
-#include "stdint.hpp"
-#include "options.hpp"
-#include "stdint.hpp"
-#include "blob.hpp"
-
-namespace zmq
-{
-
- // The class handles initialisation phase of 0MQ wire-level protocol.
-
- class zmq_init_t : public owned_t, public i_inout
- {
- public:
-
- zmq_init_t (class io_thread_t *parent_, socket_base_t *owner_,
- fd_t fd_, const options_t &options_, bool reconnect_,
- const char *protocol_, const char *address_,
- uint64_t session_ordinal_);
- ~zmq_init_t ();
-
- private:
-
- void finalise ();
-
- // i_inout interface implementation.
- bool read (::zmq_msg_t *msg_);
- bool write (::zmq_msg_t *msg_);
- void flush ();
- void detach (owned_t *reconnecter_);
- class io_thread_t *get_io_thread ();
- class socket_base_t *get_owner ();
- uint64_t get_ordinal ();
-
- // Handlers for incoming commands.
- void process_plug ();
- void process_unplug ();
-
- // Associated wite-protocol engine.
- i_engine *engine;
-
- // True if our own identity was already sent to the peer.
- bool sent;
-
- // True if peer's identity was already received.
- bool received;
-
- // Identity of the peer socket.
- blob_t peer_identity;
-
- // TCP connecter creates session before the name of the peer is known.
- // Thus we know only its ordinal number.
- uint64_t session_ordinal;
-
- // Associated socket options.
- options_t options;
-
- zmq_init_t (const zmq_init_t&);
- void operator = (const zmq_init_t&);
- };
-
-}
-
-#endif
diff --git a/util/network/zeromq/src/zmq_listener.cpp b/util/network/zeromq/src/zmq_listener.cpp
deleted file mode 100644
index d7cf2921..00000000
--- a/util/network/zeromq/src/zmq_listener.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <new>
-
-#include "zmq_listener.hpp"
-#include "zmq_init.hpp"
-#include "io_thread.hpp"
-#include "err.hpp"
-
-zmq::zmq_listener_t::zmq_listener_t (io_thread_t *parent_,
- socket_base_t *owner_, const options_t &options_) :
- owned_t (parent_, owner_),
- io_object_t (parent_),
- options (options_)
-{
-}
-
-zmq::zmq_listener_t::~zmq_listener_t ()
-{
-}
-
-int zmq::zmq_listener_t::set_address (const char *protocol_, const char *addr_)
-{
- return tcp_listener.set_address (protocol_, addr_);
-}
-
-void zmq::zmq_listener_t::process_plug ()
-{
- // Start polling for incoming connections.
- handle = add_fd (tcp_listener.get_fd ());
- set_pollin (handle);
-}
-
-void zmq::zmq_listener_t::process_unplug ()
-{
- rm_fd (handle);
-}
-
-void zmq::zmq_listener_t::in_event ()
-{
- fd_t fd = tcp_listener.accept ();
-
- // If connection was reset by the peer in the meantime, just ignore it.
- // TODO: Handle specific errors like ENFILE/EMFILE etc.
- if (fd == retired_fd)
- return;
-
- // Create an init object.
- io_thread_t *io_thread = choose_io_thread (options.affinity);
- zmq_init_t *init = new (std::nothrow) zmq_init_t (
- io_thread, owner, fd, options, false, NULL, NULL, 0);
- zmq_assert (init);
- send_plug (init);
- send_own (owner, init);
-}
-
-
-
diff --git a/util/network/zeromq/src/zmq_listener.hpp b/util/network/zeromq/src/zmq_listener.hpp
deleted file mode 100644
index c990b027..00000000
--- a/util/network/zeromq/src/zmq_listener.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_ZMQ_LISTENER_HPP_INCLUDED__
-#define __ZMQ_ZMQ_LISTENER_HPP_INCLUDED__
-
-#include "owned.hpp"
-#include "io_object.hpp"
-#include "tcp_listener.hpp"
-#include "options.hpp"
-#include "stdint.hpp"
-
-namespace zmq
-{
-
- class zmq_listener_t : public owned_t, public io_object_t
- {
- public:
-
- zmq_listener_t (class io_thread_t *parent_, socket_base_t *owner_,
- const options_t &options_);
- ~zmq_listener_t ();
-
- // Set address to listen on.
- int set_address (const char* protocol_, const char *addr_);
-
- private:
-
- // Handlers for incoming commands.
- void process_plug ();
- void process_unplug ();
-
- // Handlers for I/O events.
- void in_event ();
-
- // Actual listening socket.
- tcp_listener_t tcp_listener;
-
- // Handle corresponding to the listening socket.
- handle_t handle;
-
- // Associated socket options.
- options_t options;
-
- zmq_listener_t (const zmq_listener_t&);
- void operator = (const zmq_listener_t&);
- };
-
-}
-
-#endif

File Metadata

Mime Type
text/x-diff
Expires
Thu, Jun 11, 10:03 AM (3 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
68259
Default Alt Text
(937 KB)

Event Timeline