Exemple #1
0
		std::uint32_t write(SyncWriteStreamT &s, const ConstBufferT &buffer, const CompleteConditionT &condition, const rw_callback_type &callback)
		{
			std::uint32_t transfers = 0;
			const std::uint32_t bufSize = buffer.size();

			while( transfers < condition(transfers) )
			{
				if( transfers >= bufSize )
					break;

				std::uint32_t ret = s.write(buffer + transfers);
				if( ret == 0 )
				{
					s.close();
				}


				transfers += ret;

				if( callback != 0 )
					callback(win32_error_2_error_code(::GetLastError()), transfers);
			}

			return transfers;
		}
	std::uint32_t write(SyncWriteStreamT &s, const ConstBufferT &buffer, const std::uint64_t &offset, const CompleteConditionT &condition)
	{
		std::uint32_t transfers = 0;
		const std::uint32_t bufSize = buffer.size();

		while( transfers <= condition(transfers) )
		{
			if( transfers >= bufSize )
				break;

			std::uint32_t ret = s.write(buffer + transfers, offset);
			if( ret == 0 )
			{
				s.close();
			}

			transfers += ret;
		}

		return transfers;
	}