Patent ID: 8645960

Claim:
A computing device comprising: a central processing unit interconnected with a random access memory and a read only memory by a bus; said central processing unit configured to execute a plurality of programming instructions representing a plurality of software objects comprising a read queue for storing unprocessed packets originating from a mobile handset and destined for a destination server, and a write queue for storing processed packets; said software objects including a reader thread for reading said unprocessed packets from said read queue and a lock free queue for receiving every one of said unprocessed packets via said reader thread if said lock free queue is not full; said software objects including at least one processor thread for performing an operation on at least one of said unprocessed packets in said lock free queue, said operation including: determining a type of service associated with said one unprocessed packet; determining, based on said type of service, whether said one unprocessed packet is authorized according to an agreement with a subscriber operating said mobile handset, said agreement indicating that certain services are permitted while other services are not permitted; when said one unprocessed packet is determined to be authorized, indicating that said one unprocessed packet should be forwarded for delivery to said destination server; and when said one unprocessed packet is not authorized, indicating that said one unprocessed packet should be dropped; said at least one processor thread configured, following the performance of said operation, to set a flag in said lock free queue indicating that said unprocessed packet has been processed; said software objects further including a writer thread for dequeueing said processed packets from said lock free queue and enqueueing said processed packets to said write queue, said writer thread further configured to write said indication of said operation into said write queue; and said software objects further including a timer, said writer thread configured, when said at least one processor thread fails to process said one unprocessed packet according to a defined time-out criterion, to assume that said indication of said operation is that said one unprocessed packet should be forwarded, and to enqueue said one unprocessed packet to said write queue for delivery to said destination server.