OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
3 * All rights reserved. | 3 * All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 // Checks whether there are commands to process. | 70 // Checks whether there are commands to process. |
71 bool IsEmpty() const { return put_ == get_; } | 71 bool IsEmpty() const { return put_ == get_; } |
72 | 72 |
73 // Processes one command, updating the get pointer. This will return an error | 73 // Processes one command, updating the get pointer. This will return an error |
74 // if there are no commands in the buffer. | 74 // if there are no commands in the buffer. |
75 parse_error::ParseError ProcessCommand(); | 75 parse_error::ParseError ProcessCommand(); |
76 | 76 |
77 // Processes all commands until get == put. | 77 // Processes all commands until get == put. |
78 parse_error::ParseError ProcessAllCommands(); | 78 parse_error::ParseError ProcessAllCommands(); |
79 | 79 |
| 80 // Reports an error. |
| 81 void ReportError(unsigned int command_id, parse_error::ParseError result); |
| 82 |
80 private: | 83 private: |
81 CommandBufferOffset get_; | 84 CommandBufferOffset get_; |
82 CommandBufferOffset put_; | 85 CommandBufferOffset put_; |
83 CommandBufferEntry *buffer_; | 86 CommandBufferEntry *buffer_; |
84 size_t entry_count_; | 87 size_t entry_count_; |
85 AsyncAPIInterface *handler_; | 88 AsyncAPIInterface *handler_; |
86 }; | 89 }; |
87 | 90 |
88 // This class defines the interface for an asynchronous API handler, that | 91 // This class defines the interface for an asynchronous API handler, that |
89 // is responsible for de-multiplexing commands and their arguments. | 92 // is responsible for de-multiplexing commands and their arguments. |
90 class AsyncAPIInterface { | 93 class AsyncAPIInterface { |
91 public: | 94 public: |
92 AsyncAPIInterface() {} | 95 AsyncAPIInterface() {} |
93 virtual ~AsyncAPIInterface() {} | 96 virtual ~AsyncAPIInterface() {} |
94 | 97 |
95 // Executes a command. | 98 // Executes a command. |
96 // Parameters: | 99 // Parameters: |
97 // command: the command index. | 100 // command: the command index. |
98 // arg_count: the number of CommandBufferEntry arguments. | 101 // arg_count: the number of CommandBufferEntry arguments. |
99 // cmd_data: the command data. | 102 // cmd_data: the command data. |
100 // Returns: | 103 // Returns: |
101 // parse_error::NO_ERROR if no error was found, one of | 104 // parse_error::NO_ERROR if no error was found, one of |
102 // parse_error::ParseError otherwise. | 105 // parse_error::ParseError otherwise. |
103 virtual parse_error::ParseError DoCommand( | 106 virtual parse_error::ParseError DoCommand( |
104 unsigned int command, | 107 unsigned int command, |
105 unsigned int arg_count, | 108 unsigned int arg_count, |
106 const void* cmd_data) = 0; | 109 const void* cmd_data) = 0; |
| 110 |
| 111 // Returns a name for a command. Useful for logging / debuging. |
| 112 virtual const char* GetCommandName(unsigned int command_id) const = 0; |
107 }; | 113 }; |
108 | 114 |
109 } // namespace command_buffer | 115 } // namespace command_buffer |
110 } // namespace o3d | 116 } // namespace o3d |
111 | 117 |
112 #endif // O3D_COMMAND_BUFFER_SERVICE_CROSS_CMD_PARSER_H_ | 118 #endif // O3D_COMMAND_BUFFER_SERVICE_CROSS_CMD_PARSER_H_ |
OLD | NEW |