This is the PAL (Platform Adaptation Layer) for the Pubnub C-core library.
pubnub_generate_uuid_v4_random_std.cpp@3:be58f6801809, 2016-12-06 (annotated)
- Committer:
- sveljko
- Date:
- Tue Dec 06 10:22:54 2016 +0000
- Revision:
- 3:be58f6801809
- Parent:
- 2:9c3ddeede137
Update doc for srand_from_pubnub_time()
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sveljko | 2:9c3ddeede137 | 1 | #include "pubnub_generate_uuid.h" |
sveljko | 2:9c3ddeede137 | 2 | |
sveljko | 2:9c3ddeede137 | 3 | #include <stdlib.h> |
sveljko | 2:9c3ddeede137 | 4 | |
sveljko | 2:9c3ddeede137 | 5 | |
sveljko | 2:9c3ddeede137 | 6 | int pubnub_generate_uuid_v4_random(struct Pubnub_UUID *uuid) |
sveljko | 2:9c3ddeede137 | 7 | { |
sveljko | 2:9c3ddeede137 | 8 | /* This uses the standard rand() function, which is, in most |
sveljko | 2:9c3ddeede137 | 9 | implementations, not a very good random number generator (RNG). So, |
sveljko | 2:9c3ddeede137 | 10 | if you have a better RNG, please don't use this function. Also, it is |
sveljko | 2:9c3ddeede137 | 11 | essential that you call srand() with a good seed at least once in your |
sveljko | 2:9c3ddeede137 | 12 | program, otherwise your "random" numbers won't be so random after all. |
sveljko | 2:9c3ddeede137 | 13 | */ |
sveljko | 2:9c3ddeede137 | 14 | int *p; |
sveljko | 2:9c3ddeede137 | 15 | for (p = (int*)uuid; p < (int*)(uuid + 1); ++p) { |
sveljko | 2:9c3ddeede137 | 16 | *p = rand(); |
sveljko | 2:9c3ddeede137 | 17 | } |
sveljko | 2:9c3ddeede137 | 18 | |
sveljko | 2:9c3ddeede137 | 19 | uuid->uuid[6] &= 0x0F; |
sveljko | 2:9c3ddeede137 | 20 | uuid->uuid[6] |= 0x40; |
sveljko | 2:9c3ddeede137 | 21 | uuid->uuid[8] &= 0x3F; |
sveljko | 2:9c3ddeede137 | 22 | uuid->uuid[8] |= 0x80; |
sveljko | 2:9c3ddeede137 | 23 | |
sveljko | 2:9c3ddeede137 | 24 | return 0; |
sveljko | 2:9c3ddeede137 | 25 | } |