Repository: incubator-reef Updated Branches: refs/heads/master 6eac41ac5 -> e70bb56c2
http://git-wip-us.apache.org/repos/asf/incubator-reef/blob/e70bb56c/lang/cs/Org.Apache.REEF.Wake/StreamingCodec/IStreamingCodec.cs ---------------------------------------------------------------------- diff --git a/lang/cs/Org.Apache.REEF.Wake/StreamingCodec/IStreamingCodec.cs b/lang/cs/Org.Apache.REEF.Wake/StreamingCodec/IStreamingCodec.cs new file mode 100644 index 0000000..8eb1ce7 --- /dev/null +++ b/lang/cs/Org.Apache.REEF.Wake/StreamingCodec/IStreamingCodec.cs @@ -0,0 +1,61 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +using System.Threading; +using System.Threading.Tasks; +using Org.Apache.REEF.Wake.Remote; + +namespace Org.Apache.REEF.Wake.StreamingCodec +{ + /// <summary> + /// Codec Interface that external users should implement to directly write to the stream + /// </summary> + public interface IStreamingCodec<T> + { + /// <summary> + /// Instantiate the class from the reader. + /// </summary> + /// <param name="reader">The reader from which to read</param> + ///<returns>The instance of type T read from the reader</returns> + T Read(IDataReader reader); + + /// <summary> + /// Writes the class fields to the writer. + /// </summary> + /// <param name="obj">The object of type T to be encoded</param> + /// <param name="writer">The writer to which to write</param> + void Write(T obj, IDataWriter writer); + + /// <summary> + /// Instantiate the class from the reader. + /// </summary> + /// <param name="reader">The reader from which to read</param> + /// <param name="token">Cancellation token</param> + /// <returns>The instance of type T read from the reader</returns> + Task<T> ReadAsync(IDataReader reader, CancellationToken token); + + /// <summary> + /// Writes the class fields to the writer. + /// </summary> + /// <param name="obj">The object of type T to be encoded</param> + /// <param name="writer">The writer to which to write</param> + /// <param name="token">Cancellation token</param> + Task WriteAsync(T obj, IDataWriter writer, CancellationToken token); + } +}
