From 5af9ec1c35e7e9a2bf225e4ccdf2b0fde0efca4b Mon Sep 17 00:00:00 2001 From: Steven Luscher Date: Sun, 10 Feb 2013 23:12:01 -0800 Subject: [PATCH] Now generating message ids using sequential, base 36 encoded integers. --- FayeObjc/FayeClient.h | 1 + FayeObjc/FayeClient.m | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/FayeObjc/FayeClient.h b/FayeObjc/FayeClient.h index 92c540f..436c68b 100644 --- a/FayeObjc/FayeClient.h +++ b/FayeObjc/FayeClient.h @@ -69,6 +69,7 @@ enum _fayeStates { BOOL fayeConnected; NSDictionary *connectionExtension; BOOL connectionInitiated; + uint32_t messageNumber; } @property (strong) NSString *fayeURLString; diff --git a/FayeObjc/FayeClient.m b/FayeObjc/FayeClient.m index 73ddb40..c617fd9 100644 --- a/FayeObjc/FayeClient.m +++ b/FayeObjc/FayeClient.m @@ -192,6 +192,26 @@ } } +- (NSString *) base36Encode:(uint32_t)value +{ + NSString *base36 = @"0123456789abcdefghijklmnopqrstuvwxyz"; + NSString *buffer = @""; + + do { + NSString *newChar = [NSString stringWithFormat:@"%c", [base36 characterAtIndex:(value % 36)]]; + buffer = [newChar stringByAppendingString:buffer]; + } while (value /= 36); + + return buffer; +} + +- (NSString *) nextMessageId +{ + messageNumber++; + if (messageNumber >= UINT32_MAX) messageNumber = 0; + + return [self base36Encode:messageNumber]; +} #pragma mark - #pragma mark WebSocket connection @@ -306,7 +326,7 @@ return; } - NSString *messageId = [NSString stringWithFormat:@"msg_%d_%d", (int)[[NSDate date] timeIntervalSince1970], 1]; + NSString *messageId = [self nextMessageId]; NSDictionary *dict = nil; if(nil == extension) {