Message splitting…
Automatically split long messages
First, I've always been against this and I still think that automatically splitting messages is a bad thing, at least, in Miranda, because the way how message sending works does only allow it with a few drawbacks.
However, this is one of those features which will always be re-requested over and over again (no idea why it is so important, but well...).
Nevertheless there is now a working implementation in tabSRMM, but it should be used with care. Read the list below to get the facts and understand that most of these things are not going to change.
- This feature should be considered experimental and basically unsupported. It will be implemented with as few problems as possible and I'a definitely not going to accept further feature requests for it, because it doesn't need any. This stuff is very "low level", so allowing to customize it is a bad idea (and there isn't actually anything to customize except for a single switch to enable or disable it).
- The chunk size is not and won't be configurable. It is calculated automatically and for ansi messages it is equal to the message size limit enforced by the protocol. For Unicode messages, the chunk size is much lower, because the message will most likely be sent UTF-8 encoded and the assumption that 1 character takes exactly one byte isn't true in that case - protocols enforce the message size limit in UTF-8 octets (bytes). UTF-8 encoded messages tend to grow, so a message with 500 characters could take twice or even more bytes when it is sent.
- It works transparently for all protocols. Sending is done by a background thread which adds a delay of 300ms after sending each chunk. This is to avoid problems caused by possible flood protection.
- It relies on protocols properly report the *PFLAG_MAXLENOFMESSAGE* value (max. allowed size of a single message). Things will most likely not work when a protocol doesn't properly report this value.
- The outgoing message won't appear splitted in your own history. You will see it as a single message, no matter how long it is in your own message window and history. The splitting is done on a lower level by the sendqueue system with a copy of the original message data.
- Splitting tries to be "smart" - when possible, it will split on word boundaries (space characters) and avoid cutting words. However, if the message contains very long words or only a very few spaces, this won't work in all cases, obviously. Good example are long URLs which might be split.
- It is unicode safe and aware of advanced options like the "Force ANSI" send mode.
- Autosplitting will send the message without confirmations. This must be done, because the basic rule of one ACK message per sent message is not possible with the splitting system, so ACKs are disabled (basically, not really disabled at protocol level, but TabSRMM will not wait for ACKs and therefore not show the timeout error message when something goes wrong).
- To avoid abusing the feature, the overall message size limit has been set to 20.000 characters per message. If you think that is too low you are probably doing something wrong and should consider using a different medium for sending your stuff (hint: e-mail does not have such limitations).
- It does not work with multisend. Sorry, but If you need to send large messages to 10 or more people, an IM network is probably the wrong place to do it. Go and create a mailing list :)
