Patent ID: 7240350

Claim:
A method of managing communications over a conventional communication interface to at least one process executing on a computer system under control of an operating system, the at least one process adapted to make calls to the operating system to execute at least input/output functions, the method comprising: providing a stream manager that makes no calls to the operating system, the stream manager performing at least the steps of: receiving a first communication; assigning the first communication to a first stream; receiving a signal from a first process via memory that the first process is ready to receive communications from a stream; assigning the first stream to the first process; receiving subsequent communications and identifying communications having similar properties to the first communication as being part of the first stream; assigning subsequent communications that are part of the first stream assigned to the first process to a first queue; allowing the first process to directly access the first queue to retrieve the communications in the first queue; receiving a second communication that does not have similar properties to the first communication; assigning the second communication to a second stream; receiving a signal from a second process that the second process is ready to receive communications from a stream; assigning the second stream to the second process; identifying subsequent communications having similar properties to the second communication as being part of the second stream; assigning subsequent communications that are part of the second stream assigned to the second process from the manager to a second queue; allowing the second process to directs access the second queue to retrieve the communications in the second queue; receiving a request from the first process to provide a buffer address for a communication; providing an address of a buffer accessible to the first process for the communication; receiving a signal that the buffer has been filled; providing the buffer for output; and restricting access to the buffer so that only the first process may write to the buffer.