def send(self, message):
message = message.SerializeToString()<EOL>self.socket.sendall(struct.pack('<STR_LIT>', len(message)) + message)<EOL>length = struct.unpack('<STR_LIT>', self.socket.recv(<NUM_LIT:4>))[<NUM_LIT:0>]<EOL>response = riemann_client.riemann_pb2.Msg()<EOL>response.ParseFromString(socket_recvall(self.socket, length))<EOL>if not response.ok:<EOL><INDENT>raise RiemannError(response.error)<EOL><DEDENT>return response<EOL>
Sends a message to a Riemann server and returns it's response

        :param message: The message to send to the Riemann server
        :returns: The response message from Riemann
        :raises RiemannError: if the server returns an error