[Top] / [eMule] / [light] / [0.29c Light.4]

MetMedic
eMule cleanup
eMule Light

0.29a Light.2
0.29b Light.3
0.29c Light.6

0.29c Light.1
0.29c Light.2
0.29c Light.3
0.29c Light.4
0.29c Light.5
0.29c Light.6
0.29c Light.7

0.29c Light.4 - Proxy removal and minor issues

[2003-07-24 06:30]

Light.4 is based on Light.3

The main points in this release are:
- Proxy removed. Because this was pretty large scale surgery, I decided to not make this release an end-user release yet.
- Proxy preferences separated to CPreferencesProxy. Well, while removing proxy support, this was a natural extension considering I removed IRC and Webserver prefs already earlier, separated list column states also, and have separated stats from preferences.
- Helpfile support removed. Pressing F1 won't help you anymore. Light isn't exactly a beginner-mod, so those using it shouldn't need the help anyway.
- Dynamic language support removed. Light is now English only.
- Added support for ET_MOD_VERSION tag. It's stored to client as private CString m_strModVersion, and accessible using const CString GetModVersion() const;. It's not handled in any way yet, as I'm not sure what to do with it. The same tag is also sent, with current content being "0.29c-Light.4". You can probably guess what the future content will be..

I'm working on ZZUL merge still. Just needed to do something easy in the meantime.


User documentation:

How to switch from another client to this mod?

Simple: download the executable, put that to your eMule application directory, and run it. You can rename it to emule.exe if you want to.

IMPORTANT!

As Light removes features, it also removes respective preferences options. It does not read nor write to preferences.ini the options it has removed. Therefore, if you decide to switch to official client or another mod from Light, the options that weren't used by Light will revert to default values.

Features added:

Known files list is checked for duplicate when a file is added to shared files list. Duplicated files' stats are merged, and the duplicate entries removed. Originally from eMule 0.29a[SF-VQB]-v0.33 (Tag: "SLUGFILLER: mergeKnown").

Packet refragmentation was removed, hopefully providing better upload performance. Originally from eMule 0.29a[SF-VQB]-v0.33 (Tag: "SLUGFILLER: noRefrag"). FIXED in 29c-Light.2

Multiple instances are supported. This is a dangerous feature, as no checkes are added to lock and/or synchronise eg. file access. This is useful if you want to run multiple clients from separate install dirs, with separate temp/incoming dirs. Shared files directories can be shared. If it crashes and corrupts your harddrive, it's not my problem. I do use multiple clients all the time, and needed this badly. (define: WITH_MULTIPLE_INSTANCES)

Multiple instances client no longer registers, responds to, or sends "AreYouEmule" message. This means that it can't take ED2k links, except (for now still) via clipboard or search-screen ed2k-linkbox. Removed ED2k-links button from General Preferences and "Take links only during runtime" checkbox from Extended Preferences. Removed related preferences items and resources, too. Run single-instance client instead for download purposes - I definitely will continue removing download-related features from multiple instances version.

Multiple instances client now create mutex named by it's application directory. This means that You shouldn't be able to run multiple multiple instances clients from one directory, and that it doesn't interfere with running single-instance clients using the same GUID.

Support for mod version tag is added. Some mods send mod version string containing the mod's name and version. eMule Light version 0.29c-Light.4 sends "0.29c-Light.4", and the versioning will follow the same rule in the future, too. The tag is stored to client info when received, but is not handled in any way yet. Perhaps I'll at some point decide where it can easily be added as shown info about client.

Features removed:

Webserver (define: WITH_WEBSERVER)

Scheduler (define: WITH_SCHEDULER)

IP Filtering (define: WITH_IPFILTER)

Webservices (links & webservices menu items) (define: WITH_WEBSERVICES)

Preview, Archive recovery and open file in shared files list (define: WITH_PREVIEW)

Splash-screen (define: WITH_SPLASH)

About-box and menuitem (define: WITH_CREDITS)

IRC client (define: WITH_IRC)

First run / Connection Wizard (define: WITH_WIZARD)

Clipboard watching (define: WITH_WATCH_CLIPBOARD). Undefined only in WITH_MULTIPLE_INSTANCES build. It's still useful for single instance clients.

Version check (define: WITH_VERSIONCHECK). Undefined only in WITH_MULTIPLE_INSTANCES build. It's still useful for single instance clients.

File Comments (define: WITH_FILE_COMMENTS). Actually consists of three separate parts: UI (define: WITH_FILE_COMMENTS_UI), Engine (define: WITH_FILE_COMMENTS_ENGINE), and Protocol (define: WITH_FILE_COMMENTS_PROTOCOL).

Proxy support (define: WITH_PROXY). Actually consists of three separate parts: UI (define: WITH_FILE_COMMENTS_UI), Engine (define: WITH_FILE_COMMENTS_ENGINE), and socket layer (define: NOLAYERS). Socket layer define is straight from existing AsyncSocketEx files, where it's used to define whether the socket layer can or can not have multiple layers.

Dynamicall loaded languages (define: WITH_LANGUAGES). Thus Light is now officially English only.

Help file (define: WITH_HELP). Light isn't exactly a beginner mod, so users aren't likely to need the internal help.

Developer documentation:

All defines are found in config.h. Using normal eMule Debug/Release build configurations the configuration is as per standard mule, excepting the features I borrowed from SF-VQB (which I consider highly desireable, not excludable). Additional build configurations are Debug Light, Release Light, Release Light MC and Release Light IPF. Debug Light/Release Light build configurations exclude all features. Release Light MC includes multiple instances in addition, and Release Light IPF includes IP Filtering while excluding the rest.

Such resources that were removed using compile time directives have been moved to their own resource files, included into emule.rc using normal resource include directives but wrapped within #ifdef ... #endif to only include it in build configurations where it's needed. It's important to put compile time directives not just in build configuration's compiling options, but also in resource tool options, so that correct resources are used.

Where only parts of a dialog were removed using compile time directives, those dialogs were moved to res/emule.rc2, which is not editable using APS. I regret this, but didn't see other good ways to remove just single buttons or labels from dialog using compile time directives. Respective resource identifier symbols were moved from resource.h to emule_rc2.h.

Rest of the documentation you can find from cleanup-tree. It's not much, but the changes aren't really that big.