9
9
*/
10
10
class SqsFileMock extends Sqs
11
11
{
12
-
13
- const KEY_ID = 'id ' ;
14
-
15
- const KEY_BODY = 'body ' ;
16
-
17
- const KEY_VISIBLE_AFTER = 'visibleAfter ' ;
18
-
19
- const KEY_ATTRIBUTES = 'attributes ' ;
20
-
12
+ const KEY_ID = 'id ' ;
13
+ const KEY_BODY = 'body ' ;
14
+ const KEY_VISIBLE_AFTER = 'visibleAfter ' ;
15
+ const KEY_ATTRIBUTES = 'attributes ' ;
21
16
const KEY_RECEIPT_HANDLES = 'receiptHandles ' ;
22
17
23
18
const DEFAULT_VISIBILITY_TIMEOUT = 5 ;
@@ -105,10 +100,12 @@ public function getQueueNames()
105
100
*/
106
101
public function getNumberOfMessagesInQueue ($ queueName )
107
102
{
108
- return count (json_decode (
109
- file_get_contents ($ this ->directory . DIRECTORY_SEPARATOR . $ queueName . '.json ' ),
110
- true
111
- ));
103
+ return count (
104
+ json_decode (
105
+ file_get_contents ($ this ->directory . DIRECTORY_SEPARATOR . $ queueName . '.json ' ),
106
+ true
107
+ )
108
+ );
112
109
}
113
110
114
111
/**
@@ -119,8 +116,7 @@ public function sendMessage(
119
116
$ messageBody ,
120
117
$ delaySeconds = 0 ,
121
118
array $ messageAttributes = []
122
- )
123
- {
119
+ ) {
124
120
$ id = uniqid ();
125
121
126
122
$ this ->modifyQueueFile (
@@ -151,13 +147,12 @@ public function receiveMessage(
151
147
array $ attributeNames = [],
152
148
array $ messageAttributeNames = ['All ' ],
153
149
$ visibilityTimeout = null
154
- )
155
- {
150
+ ) {
156
151
$ receiptHandle = uniqid ('receipt_ ' );
157
-
158
- $ messages = [];
159
-
160
- $ visibleAfter = time () + ( $ visibilityTimeout ?: self :: DEFAULT_VISIBILITY_TIMEOUT );
152
+ $ messages = [];
153
+ $ visibleAfter = time () + ( is_null ( $ visibilityTimeout )
154
+ ? self :: DEFAULT_VISIBILITY_TIMEOUT
155
+ : $ visibilityTimeout );
161
156
162
157
$ this ->modifyQueueFile (
163
158
$ queueConfigName ,
@@ -181,10 +176,10 @@ function (array $content) use ($receiptHandle, $visibleAfter, &$messages, $maxNu
181
176
$ content [$ index ][self ::KEY_RECEIPT_HANDLES ][$ receiptHandle ] = $ visibleAfter ;
182
177
183
178
$ messageData = [
184
- 'MessageId ' => $ message [self ::KEY_ID ],
185
- 'ReceiptHandle ' => $ receiptHandle ,
186
- 'Body ' => $ message [self ::KEY_BODY ],
187
- 'MD5OfBody ' => md5 ($ message [self ::KEY_BODY ]),
179
+ 'MessageId ' => $ message [self ::KEY_ID ],
180
+ 'ReceiptHandle ' => $ receiptHandle ,
181
+ 'Body ' => $ message [self ::KEY_BODY ],
182
+ 'MD5OfBody ' => md5 ($ message [self ::KEY_BODY ]),
188
183
'MessageAttributes ' => $ message [self ::KEY_ATTRIBUTES ],
189
184
];
190
185
@@ -203,27 +198,37 @@ function (array $content) use ($receiptHandle, $visibleAfter, &$messages, $maxNu
203
198
*/
204
199
public function deleteMessage ($ queueConfigName , $ receiptHandle )
205
200
{
206
- $ this ->modifyQueueFile ($ queueConfigName , function (array $ content ) use ($ receiptHandle ) {
207
- foreach ($ content as $ index => $ message ) {
208
- if (array_key_exists ($ receiptHandle , $ message [self ::KEY_RECEIPT_HANDLES ])) {
209
- unset($ content [$ index ]);
210
- break ;
201
+ $ this ->modifyQueueFile (
202
+ $ queueConfigName ,
203
+ function (array $ content ) use ($ receiptHandle ) {
204
+ foreach ($ content as $ index => $ message ) {
205
+ if (array_key_exists ($ receiptHandle , $ message [self ::KEY_RECEIPT_HANDLES ])) {
206
+ unset($ content [$ index ]);
207
+ break ;
208
+ }
211
209
}
212
- }
213
210
214
- return $ content ;
215
- });
211
+ return $ content ;
212
+ }
213
+ );
216
214
}
217
215
218
216
/**
219
- * @param string $queueConfigName
217
+ * @param string $queueConfigName
220
218
* @param callable $contentModifierCallback
221
219
*
222
220
* @return void
223
221
*/
224
222
protected function modifyQueueFile ($ queueConfigName , callable $ contentModifierCallback )
225
223
{
226
- $ handle = fopen ($ this ->directory . DIRECTORY_SEPARATOR . $ this ->getFileNameFromQueueConfigName ($ queueConfigName ), 'a+ ' );
224
+ $ filePath = $ this ->directory . DIRECTORY_SEPARATOR . $ this ->getFileNameFromQueueConfigName ($ queueConfigName );
225
+
226
+ if (!file_exists ($ filePath )) {
227
+ touch ($ filePath );
228
+ chmod ($ filePath , 0666 );
229
+ }
230
+
231
+ $ handle = fopen ($ filePath , 'a+ ' );
227
232
228
233
if (!flock ($ handle , LOCK_EX | LOCK_NB )) {
229
234
fclose ($ handle );
0 commit comments