| 198 | } |
| 199 | |
| 200 | string ReaderBase::GetNextWorkLocked(QueueInterface* queue, |
| 201 | OpKernelContext* context) const { |
| 202 | string work; |
| 203 | Notification n; |
| 204 | queue->TryDequeue( |
| 205 | context, [context, &n, &work](const QueueInterface::Tuple& tuple) { |
| 206 | if (context->status().ok()) { |
| 207 | if (tuple.size() != 1) { |
| 208 | context->SetStatus( |
| 209 | errors::InvalidArgument("Expected single component queue")); |
| 210 | } else if (tuple[0].dtype() != DT_STRING) { |
| 211 | context->SetStatus(errors::InvalidArgument( |
| 212 | "Expected queue with single string component")); |
| 213 | } else if (tuple[0].NumElements() != 1) { |
| 214 | context->SetStatus(errors::InvalidArgument( |
| 215 | "Expected to dequeue a one-element string tensor")); |
| 216 | } else { |
| 217 | work = tuple[0].flat<tstring>()(0); |
| 218 | } |
| 219 | } |
| 220 | n.Notify(); |
| 221 | }); |
| 222 | n.WaitForNotification(); |
| 223 | return work; |
| 224 | } |
| 225 | |
| 226 | void ReaderBase::SaveBaseState(ReaderBaseState* state) const { |
| 227 | state->Clear(); |
nothing calls this directly
no test coverage detected